iftop - мониторинг загрузки канала в реальном времени # cd /usr/ports/net-mgmt/iftop # make install clean Создаем конфиг ~/.iftoprc, например: interface: <имя_интерфейса> dns-resolution: yes use-bytes: yes net-filter: 192.168.0.0/24 (Спасибо "lissyara") Для оперативного контроля трафика служит очень удобная утилита trafshow: # cd /usr/ports/net/trafshow # make install Пример использования: trafshow -i <имя_интерфейса> Отключить ресолвинг ip адресов в имена - ключ -n. Не переводить сетевую карту в promiscuous mode - ключ -p. Еще примеры: активность хоста X.X.X.X на сетевом интерфейсе YY сервера # trafshow -p -i YY -n dst host X.X.X.X активность хоста X.X.X.X на сетевом интерфейсе YY сервера и только на порт 22 # trafshow -p -i YY -n dst host X.X.X.X and port 22 (ИЛИ and not port 139 - исключаем порт) Для дополнительного конфигурирования создайте в домашней директории /root файл .trafshow приблизительно такого содержания (пример из WiKi кажется): # Дефолтная схема "зеленый шрифт на черном фоне" # - мы ее каментим #default black:yellow # SSH сессии будут у нас зеленые 22/tcp green # AIM (ICQ) протокол подсветим пурпурным 5190/tcp magenta # SMTP подсветим голубым 25/tcp blue # POP3 будет красным 110/tcp red # FTP будет бирюзовый 21/tcp cyan # А всех качальщиков в локалке подсветим # желтым, чтобы сразу бросалось в глаза *:80 192.168.0.0/255.255.255.0 tcp yellow ПРИМЕЧАНИЕ: Когда используется NAT команда trafshow на внешнем интерфейсе не будет "видеть" внутренних адресов!
Для сбора трафика и построения отчетов, применяется пакет trafd: # cd /usr/ports/net/trafd # make install Демон trafd собирает трафик на определенном интерфейсе. Для начала сбора трафика на интерфейсе, необходимо: создать файл, где trafd будет хранить статистику: touch /var/trafd/trafd.<имя_интерфейса> запустить сбор статистики на интерфейсе: /usr/local/bin/trafd -i <имя_интерфейса> (можно сразу прописать эту строчку в /etc/rc.local) проверить работу демона: ps ax | grep trafd (!) Демон trafd коллекционирует статистику в оперативной памяти. Чтобы сбрасывать статистику на диск (в файл, который был создан) следует пользоваться командой /usr/local/bin/trafsave (лучше из Крона). Кроме того, рекомендуется каждый месяц "обнулять" файл сбора статистики, т.к. количество записей в одном файле ограничено 1000. Это можно сделать с помощью короткой программки на языке sh: #!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin LOG_FILE=/var/log/traffic.log if [ $# = 0 ]; then # Get List of Listening IFaces . /etc/rc.conf else IFF_LISTEN=$* fi for iface in $IFF_LISTEN; do rotate /var/trafd/trafd.$iface `date -v-1m +%b` echo "Rotate Logs For $iface" > $LOG_FILE done Нужно разместить эту программку в файле /usr/local/bin/trafrotate. Для ее работы необходимо установить утилиту rotate: # cd /usr/ports/sysutils/rotate # make install Для того, чтобы эта программа запускалась каждый месяц, нужно записать еще одну строчку в crontab: 20 2 1 * * /usr/local/bin/trafrotate Построение отчетов trafd Система trafd способна строить удобные отчеты на основе собранных данных. Отчеты строятся с помощью программы traflog. Для того, чтобы посмотреть результаты последней сохраненной записи демона trafd, нужно набрать команду: traflog -n -i <имя_интерфейса> (флаг -n указывает не ресолвить ip-адреса). Программа traflog "умеет" строить отчеты на основе заданных правил. Например, для того, чтобы увидеть отчет по трафику сети 10.128.0.0/16, необходимо набрать команду: # traflog -i <имя_интерфейса> -n from all to 10.128.0.0 mask 255.255.0.0 Счетчики ipfw count Примерно вот такие правила: ${fwcmd} add 100 count ip from any to ${local_ip_1} in ${fwcmd} add 100 count ip from ${local_ip_1} to any out Условия in и out важны, поскольку без них траффик будет считаться 2 раза. Из готовых скриптов обработки можно посоветовать скрипты из пакета Utcount - http://sourceforge.net/projects/utcount/ ( Для перечитывания правил ipfw без разрыва соединения: # ipfw disable firewall # sh /etc/rc.firewall # ipfw enable firewall ) |