Считаем трафик Версия для печати   


Учет трафика при использовании FreeBSD в качестве маршрутизатора.

Автор Maxik

Небольшие организации для подключения своей сети к Интернет в качестве роутера зачастую используют обычный ПК с операционной системой Unix. При оплате трафика руководству фирмы хочется знать, кто сколько качал. Тема настоящей статьи - организация учета внешнего трафика в такой сети.
И так у нас есть компьютер с двумя сетевыми интерфейсами: для внутренней сети ep0, и для внешней сети ed0. Для подсчета трафика я воспользовался пакетом BPFT , разработанным Владимиром Воробьевым.

И так, скачиваем этот пакет и собираем его (процедура стандартная - make, make install). После этого нам необходимо запустить демон, занимающийся сбором трафика. В файл rc.local добавляем строки:

/usr/local/bin/trafd -r -i ed0
/usr/local/bin/trafd -r -i ep0
Отлично, трафик учитывается. Теперь заставим его скидываться в файл. Для этого в crontab прописываем:
*/10 * * * * /usr/local/bin/trafdump ep0 >/dev/null 2>&1
*/10 * * * * /usr/local/bin/trafdump ed0 >/dev/null 2 >&1
У нас получились бинарные файлы. Для приведения их в читаемый формат, я воспользовался скриптами неизвестного мне автора. Их запуск также осуществляем из crontab:
50 23 * * * /usr/local/sbin/traffic-daily.exec ep0
50 23 * * * /usr/local/sbin/traffic-daily.exec ed0
На выходе у нас получаются текстовые файлы, в которые собран весь дневной трафик. Теперь надо разобрать их по конкретным адресам. Опять же воспользуемся crontab:
57 23 * * * /usr/local/sbin/traffic_by_host_ep0.exec
57 23 * * * /usr/local/sbin/traffic_by_host_ed0.exec
где -- IP-адрес, по которому вы хотите собрать статистику. На выходе в каталоге /var/log/traffic вы получите текстовые файлы с именем .daily.log. Формат их прост: время, дата, входящий трафик и исходящий трафик.
Для того чтобы не учитывать внутренний трафик, необходимо внести некоторые изменения в файлы /usr/local/sbin/traffic_by_host_ep0.exec и /usr/local/sbin/traffic_by_host_eв0.exec. В них имеются строки типа:

when (src=ipaddr & justify(dst,9)\="192.168.0") then ipaddr_traffic_out=ipaddr_traffic_out+all.
192.168.0 - это некая маска. Обращения к адресам, подпадающим под такую маску, не будут учитываться в результирующем файле. В каждом из скриптов таких мест два (по одному на входящий и исходящий трафик).
Кстати, пока вы еще не запустили всю эту систему в действие, можно поставить туда какие-либо несуществующие адреса - это позволит выявить шум в сети создаваемый, к примеру, неправильными настройками IP на каком-нибудь из компьютеров.

Ну и, напоследок, я прикладываю мою программку под Win32, которая по ftp забирает результирующие файлы и расчитывает стоимость трафика.




В: Где можно взять rexx интерпретатор в Сети?
О:
Набираете в поле "search" например rexx и получаете что искали.
Для FreeBSD заходите на сайт там есть раздел "ports" опять выполняете поиск и получаете.

P.S. К Linux прикручивается без проблем.

Опубликовал: DIMON
Дата: 30.07.2003
постоянный адрес статьи: http://linuxportal.ru/entry.php/P96_0_3_0/