Программа 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».