Считаем трафик

Статьи Настройка и оптимизация Linux

Дата публикации: 15.08.2007
Автор статьи:
Источник: (Оригинал: Перейти)

 

Взято с http://linuxportal.ru

 

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

Небольшие организации для подключения своей сети к Интернет в качестве роутера зачастую используют обычный ПК с операционной системой 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 интерпретатор в Сети?
О: http://www.rpmfind.net
Набираете в поле «search» например rexx и получаете что искали.
Для FreeBSD заходите на сайт http://www.freebsd.org там есть раздел «ports» опять выполняете поиск и получаете.

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

Взято с http://linuxportal.ru

Copyright © 2006—2011 "Портал RusCentOS"
Хостинг нашего сайта в ООО "КосмоХост" (на HostCMS v. 4.0)

Ссылки на сайты партнеров