Net-Acct (exorsus.net/projects/net-acct) – весьма простой в настройке и использовании коллектор транзитного трафика с богатыми возможностями. Оригинальная версия сохраняет собранную информацию в текстовый файл, но есть и форк netacct-mysql (netacct-mysql.sf.net), позволяющий записывать данные в базы MySQL или PostgreSQL. Постепенно эти проекты обросли многочисленными анализаторами журналов (например, Sawmill – www.sawmill.net/formats/net_acct.html) и интерфейсами. Одной из таких «надстроек» является NiTraf (nitalaut.sarkor.uz), способный подсчитывать трафик по IP-адресам за выбранный период, поддерживающий квоты и задание алиасов, а также отображающий детальную статистику по портам и протоколам. Информация сохраняется в MySQL и затем выводится через веб-интерфейс.
Для работы программы потребуется собственно Net-Acct, серверы MySQL и Apache2. В Ubuntu/Debian их установка выглядит так:
$ sudo aptitude install net-acct mysql-server python-mysqldb apache2 apache2-utils
Подготовливаем MySQL сервер:
$ mysql -uroot -prootpassword
> CREATE DATABASE trafdata;
> USE trafdata;
> GRANT ALL ON trafdata.* TO traf@localhost IDENTIFIED BY ‘trafadmin’;
> QUIT;
В скриптах NiTraf жестко зашит путь /opt/trafdata/raw, куда Net-Acct должен сохранять информацию. Cоздаем этот каталог:
$ sudo mkdir -p /opt/trafdata/raw
Все настройки Net-Acct производятся в единственном файле /etc/naccttab:
$ sudo nano /etc/naccttab
# сюда пишем логи и дамп
file /opt/trafdata/raw/net-acct.log
dumpfile /opt/trafdata/raw/dump
debugfile /opt/trafdata/raw/net-acct.debug
# Трафик, проходящий через этот сетевой интерфейс, не учитываем
notdev eth1
# Установка устройства в режим приема всех пакетов
#device eth0
# Снимать данные только с этого устройства
#iflimit eth0
# Игнорировать внутрисетевой трафик
ignoremask 255.255.255.0
# Игнорировать loopback сеть (аналогично можно указать и другие сети)
ignorenet 127.0.0.0 255.0.0.0
# Этот параметр обязательно должен быть включен
# ряд disable отключает вывод определенных полей, 7 – подсчет пакетов
disable 7
Перезапускаем демон:
$ sudo /etc/init.d/net-acct restart
Распаковываем архив с NiTraf и копируем каталоги на свое место:
$ tar xzvf nitraf-20070320.tar.gz
$ sudo mv -v ./nitraf/nitraf /etc
$ sudo mv -v ./nitraf/traf /var/www
В файле /etc/nitraf/mysql/create_mysql_tables.py необходимо указать адрес LAN:
LAN=’192.168.10.’
После чего запускаем скрипт:
$ sudo /etc/nitraf/mysql/create_mysql_tables.py
Вначале лучше вручную проверить работу скриптов, используемых для сбора статистики:
$ cd /etc/nitraf
$ sudo ./rawtraf.py
$ sudo ./settings/checkquota.py
Если все в порядке, редактируем /etc/crontab, добавив в него две строки:
*/10 * * * * root cd /etc/nitraf; ./rawtraf.py
*/5 * * * * root cd /etc/nitraf/settings; ./checkquota.py
Учет трафика начался, переходим к настройке веб-интерфейса. Создаем файл сайта traf такого содержания:
$ sudo nano /etc/apache2/sites-available/traf
<Directory «/var/www/traf/»>
Options Indexes MultiViews FollowSymLinks ExecCGI
AllowOverride All
AddDefaultCharset CP1251
</Directory>
Активируем новый сайт:
$ sudo a2ensite traf
Чтобы веб-интерфейс функционировал, в конфиге Apache должны быть прописаны две директивы:
AddHandler cgi-script .cgi
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
И включены необходимые модули:
$ sudo a2enmod mime
$ sudo a2enmod cgi
Перезапускаем веб-сервер:
$ sudo /etc/init.d/apache2 force-reload
Все готово. Система работает. Доступ к каталогу охраняет файл .htaccess, поэтому задаем пароль:
$ htpasswd -c /var/www/traf/.htaccess username
Который и используем для входа. Если защита не нужна .htaccess можно удалить.

Настройки
Теперь набираем в браузере ссылку http://localhost/traf и смотрим собранную статистику.

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