Подсчет трафика на Freebsd используя trafd без mysql [2008]
Введение.
Решил написать свою статью по управлению трафика. Мне нужно было ещё формировать статистику (отдельно upload и download), и исключить из неё внутрисетевой трафик, то есть считать только чисто интернет: кто сколько накачал. В сети есть много примеров, но они почему-то используют Mysql. Шлюз у меня немощный, да и лишний сервис подымать только что бы хранить статистику - для моих целей не нужно было. Поэтому и решил: статистика будет храниться в файлах, будет суммироваться трафик и отправляться на e-mail.
Что имеем: FreeBSD 7.0, установлен squid, ядро собрано с поддержкой divert, dummynet, ipfw.
Я добавил один интерфейс, но можно и несколько (через пробел)
Параметр -r означает попытку восстановления данных из существующего бинарного файла при рестарте демона.
Параметр -p означает то, что переводить сетевой адаптер в promiscuous mode не надо (по умолчанию, демон trafd переводит сетевой адаптер в promiscuous mode)
ВНИМАНИЕ! trafd кладёт дамп трафика по адресу /usr/local/var/trafd. Поменять это значение вроде бы нельзя, но можно создать симлинк.
Скрипты для сбора, обработки и отправки статистики.
И так, вот это скрипт (trafd_dump) будет запускаться раз в 15 минут, и будет сливать так называемый "дамп" трафика.
#cat trafd_dump #!/bin/sh
/usr/local/bin/trafdump sis0
Этот скрипт будет запускаться под конец суток и сохранять статистику за сутки в бинарный файл.
#cat trafd_save #!/bin/sh
/usr/local/bin/trafsave sis0
И ещё один скрипт, который статистику переводит в текстовый формат.
исключает их статистики внутренние подсети (локалка у меня имеет подсеть 10.0.9.0/24) (я считал только инет-трффик, внутрисеть не считал). Можете поменять на свои :)