Подсчет трафика с IPCad в Ubuntu

9 Май
2009

Программа IPCad (Cisco IP accounting simulator, lionet.info/ipcad) относится к универсальным средствам, так как позволяет вести подсчет трафика, используя несколько механизмов — BPF (Berkeley packet filter), libpcap и ULOG. Поэтому его можно использовать не только в Linux, но и в *BSD, MacOS X/Darwin или Solaris.


В репозитарии Ubuntu нужного пакета нет, но IPCad легко собирается. Для этого понадобятся библиотеки libpcap, заголовочные файлы ядра и собственно компилятор:

$ sudo apt-get install libpcap-dev build-essential linux-libc-dev

Далее стандартно:

$ tar xzvf ipcad-3.7.3.tar.gz
$ cd ipcad-3.7.3
$ ./configure
$ make
$ sudo make install

Конфигурационный файл ipcad.conf вместе с файлами примеров находится в /usr/local/etc.

Разберем только основные параметры:

$ sudo nano /usr/local/etc/ipcad.conf

# Интерфейсы, с которых будем собирать статистику (все PPP и eth0)
interface ppp*;
interface eth0;

# Отдельно считаем каждый адрес сети 192.168.1.0
aggregate 192.168.1.0/24 strip 32;
# Остальные агрегировать по первым 24 битам
aggregate 0.0.0.0/0 strip 24;
# Поднимаем rsh (используется для просмотра статистики)
rsh enable at 127.0.0.1;
# Для удобства можно использовать свою учетную запись
rsh root@127.0.0.1 admin;
# Пользователю «user» доступ запрещен
rsh user@127.0.0.1 deny;
# Остальные могут просматривать статистику
rsh 127.0.0.1 view-only;
# Файл для сбора статистики
dumpfile = /var/log/ipcad/ipcad.dump;

Демон ipcad не умеет самостоятельно создавать файл, в который записывается информация. Это нужно сделать вручную, установив соответствующие права доступа:

$ sudo mkdir -m 700 /var/log/ipcad
$ sudo touch /var/log/ipcad/ipcad.dump
$ sudo chmod 600 /var/log/ipcad/ipcad.dump

Стартуем (в некоторых дистрибутивах потребуется указать полный путь к исполняемому файлу):

$ sudo ipcad –rds

В процессе запуска на консоль будут выведены текущие установки, следует внимательно их просмотреть. Значение ключей таково:

  • r – при запуске импортируем данные из dumpfile;
  • d – запускаем процесс в виде демона (при первом запуске его можно не использовать);
  • s – по завершению работы сохранять статистику в dumpfile.

Об автоматическом запуске IPCad при загрузке системы необходимо позаботиться самостоятельно. Для этого добавляем указанную выше команду в скрипт /etc/init.d/rc.local (или подобный, в разных дистрах его название может отличаться).
Для просмотра статистики необходимо подключаться к серверу rsh, который мы запустили из ipcad.conf:

$ rsh localhost show ip accounting

В ответ получим информацию обо всем трафике. Для отбора нужных данных можно воспользоваться такими утилитами, как grep и awk. Например, чтобы получить суммарный трафик для компьютеров внутренней сети, задействуем следующую конструкцию:

$ rsh $HOST show ip accounting | grep -E '192\.168\.1\.'$1'([^0-9]|$)' | awk '{s+=$4} END {print(s/1024)}'

Здесь уже открывается огромный простор для творчества. При желании можно строить графики, используя RRDtool.
Количество принятых и отправленных данных по конкретному интерфейсу смотрим так:

$ rsh localhost show interface eth0

Полезно периодически сохранять текущую статистику в файл:

$ rsh localhost dump > /var/log/ipcad/ipcad.`date`

Сброс статистики осуществляется при помощи «clear ip accounting«. Для корректной остановки ipcad следует использовать команду «rsh localhost shutdown».

Комментировать

Наверх