Документация → Статистика трафика по netflow
На сервере NoDeny+ ставим flow-tools
cd /usr/ports/net-mgmt/flow-tools && make install clean

Хотя в /usr/local/etc/rc.d/ будет установлен скрипт для запуска flow-capture, запустим с командной строки:

Команда bash
/usr/local/bin/flow-capture -R /var/db/flows/netflow_8888.pl \
     -p /var/run/flow-capture/flow-capture.pid -w /var/db/flows \
     -n1 -N0 0.0.0.0/0.0.0.0/8888
Здесь:

flow-capture принимает netflow поток на udp порт 8888. Чтобы сбросить дамп потока на диск, нужно послать сигнал HUP. Дамп будет записан в /var/db/flows c именем из текущей даты и дополнительной информацией. После этого автоматически будет запущен скрипт netflow_8888.pl, которому будет передано имя дампа. Задача этого скрипта простая: переименовать файл с потоком в 8888.txt.


Команды bash
cp /usr/local/nodeny/modules/netflow/netflow_8888.pl /var/db/flows/
chmod 700 /var/db/flows/netflow_8888.pl

Наcтройка отправки netflow на устройстве

Отправка netflow, например, на Mikrotik:
/ip traffic-flow target add address=10.20.30.1:8888 version=5
/ip traffic-flow set enabled=yes cache-entries=4k active-flow-timeout=00:01:00 inactive-flow-timeout=00:00:05 interfaces=all

Здесь 10.20.30.1 - ip центрального сервера NoDeny+, на котором запущен flow-capture.

Прием netflow на сервере NoDeny+

Разрешим прием netflow на сервере NoDeny+
ipfw add 2035 allow udp from 10.20.30.40 to any 8888

Здесь 10.20.30.40 - ip устройства, с которого принимаем netflow.


Проверим сброс дампа на диск
rm -f /var/db/flows/ft*
rm -f /var/db/flows/8888.txt
kill -HUP `cat /var/run/flow-capture/flow-capture.pid.8888`
ls -l /var/db/flows/

Если в списке будет присутствовать ненулевой файл 8888.txt - все ок.

Расшифруем дамп
flow-print -f6 < /var/db/flows/8888.txt

Настраиваем модуль ядра по сбору netflow

Редактируем /usr/local/nodeny/kernel/collectors.cfg
            {
                type        => 'netflow',
                port        => '8888',
                flow_base   => '/var/db/flows/',
                capture_pid => '/var/run/flow-capture/flow-capture.pid',
                ext_iface   => '2',
            },

Измените параметр ext_iface - номер внешнего интерфейса на устройстве.

Запускаем модуль сбора трафика
perl /usr/local/nodeny/nokernel.pl -m=collectors -v

После тестирования, не забудьте добавить в /etc/rc.local автозапуск flow-capture и модуля ядра collectors, а также в /etc/rc.firewall правило для разрешения приема netflow.

Если у вас несколько устройств, с которых вы принимаете netflow, то вам необходимо на каждом новом устройстве указать уникальный netflow порт (8889, 8890 и т.д.), запустить копию flow-capture на новом порте с указанием порта в имени pl-файла, добавить запись в /usr/local/nodeny/kernel/collectors.cfg, а также добавить правило в фаервол.