В нашей организации назрела необходимость подсчета трафика серверов. Их порядка 20 штук и находятся они в демилитаризованной зоне, за PIX. Учитывая, что PIX-501 не поддерживает NetFlow, решил поставить для подсчета трафика trafd + trafshow. Данные нужны только в конце месяца.
Ищем в портах:
counter# cd /usr/ports/
counter# make search name=trafd
Port: trafd-3.0.1_2
Path: /usr/ports/net-mgmt/trafd
Info: The BPF Traffic Collector
B-deps:
R-deps:
WWW:
counter# make search name=trafshow
Port: trafshow-5.2.3,1
Path: /usr/ports/net/trafshow
Info: Full screen visualization of network traffic
B-deps:
R-deps:
WWW:
Ставим trafshow из портов.
counter#cd /usr/ports/net/trafshow
counter#make install
Далее вводим:
counter#trafshow -i rl0
(rl0)- интерфейс.
Эта команда покажет весь трафик, проходящий через интерфейс rl0. Команда будет работать быстрее,если отключить ресолвинг ip адресов в имена (ключ -n). При этом весь трафик будет выдан в виде таблицы, в которой видны адреса источников и приемников, скорости соединений, количество переданных и принятых байт и т.п.
Ограничивается область просмотра программы trafshow следующим образом:
Например, команда:
trafshow -i rl0 -n dst net 10.128.0.0 mask 255.255.0.0 and not 10.128.7.11 and not net 10.128.6.00 mask 255.255.255.0 and not port 80 and not port 5190 and not port 53 and not port 443
Показывает трафик в сеть 10.128.0.0/16 но без хоста 10.128.7.11, без сети 10.128.6.0/24 и не показывает в отчете порты 80,5190,53,443.
Устанавливаем утилиту rotate для ротации файлов.
counter#cd /usr/ports/sysutils/rotate
counter#make install
Далее ставим из портов trafd
counter#cd /usr/ports/net-mgmt/trafd
counter#make install
Далее создаем файл, где будет храниться статистика.
counter#touch /usr/local/var/trafd/trafd.rl0
Изменять место расположения данного файла не рекомендую, могут быть проблемы.
И, обратите внимание, после точки — название сетевой карты и ее номер.
В данном случае Realtek (rl0). Ибо возможен запуск trafd на нескольких сетевых интерфейсах,
что также не рекомендую, ибо погрешность обсчета трафика увеличивается.
Добавляем в /etc/rc.conf строки:
counter#less /etc/rc.conf
trafd_enable=»YES»
trafd_ifaces=»rl0″
trafd_flags=»-r»
trafd_log=»/var/log/traffic.log»
Для того, чтобы статистика не терялась и счетчики не переполнялись, будем периодически сохранять информацию из оперативной памяти на диск (в файл, который был создан). Эту процедуру выполняет специальная программа:
trafdump
. Периодичность выполнения этой команды выбирает сам системный администратор(У меня — каждые 15 минут).
Раз в сутки нужно записывать накопленный трафик демоном trafd в бинарные файлы с помощью
trafsave
.
Если необходимо, с помощью
rotate
обрезаем файл логов trafd.(Лично я это делаю вручную, но даю Вам описание в файле crontab.)
Для выполнение периодических команд редактируем демон crontab.
counter#less /etc/crontab
#### TRAFD#####
*/15 * * * * root /usr/local/bin/trafdump rl0
59 23 * * * root /usr/local/bin/trafsave rl0
20 1 1 * * root /usr/local/bin/rotate /usr/local/var/trafd/trafd.rl0
Работаем со статистикой.
Система trafd строит удобные отчеты на основе собранных данных. Отчеты строятся с помощью программы traflog. Для того, чтобы посмотреть результаты последней сохраненной записи демона trafd, необходимо выполнить команду:
counter#traflog -n -i rl0
Для того , чтобы просмотреть все записи по дням делаем:
counter#traflog -l
Из этих данных и выбираем (параметры -b <первая запись> -e <последняя запись>). См. ниже.
(флаг -n указывает не ресолвить ip-адреса)
Программа traflog «умеет» строить отчеты на основе заданных правил. Например, для того, чтобы увидеть отчет по трафику сети 10.128.0.0/16,необходимо набрать команду:
traflog -i rl0 -n from all to 10.128.0.0 mask 255.255.0.0
В документации приводятся такие примеры фильтров:
from turbo.nsk.su to ns.nsk.su port domain
to all port ftp port ftp-data
from TURBONET to all
from 192.188.187.127 mask 255.255.255.224 port all
from all to 144.206.0.0 proto tcp
from turbo.nsk.su to ns.nsk.su port domain
to all port ftp port ftp-data
from TURBONET to all
from 192.188.187.127 mask 255.255.255.224 port all
from all to 144.206.0.0 proto tcp
Кроме применения фильтров, traflog позволяет формировать отчеты, суммируя информацию из записей trafd. Для того, чтобы увидеть список записей (а это нужно для того, чтобы потом построить отчет на основе диапазона правил), нужно вызвать traflog с ключом -l.
Теперь, для того чтобы построить отчет за определенный период, нужно указать первую и последнюю запись для отчета (параметры -b <первая запись> -e <последняя запись>). Например, для того, чтобы получить отчет с 20 апреля по 22 апреля сего года для сети 10.128.0.0/16, нужно ввести команду:
traflog -n -i rl0 -b7 -e12 -s from all to 10.128.0.0 mask 255.255.0.0 (см. рисунок выше)
(параметр -s указывает посчитать суммарный трафик, т.е. trаflog автоматически суммирует трафик по одинаковым адресам и портам, -i указывает по какому интерфейсу обсчитывался трафик, -n не ресолвить адреса).