Установка и запуск ipt_NETFLOW

ipt_NETFLOW — быстрый NetFlow сенсор трафика, состоит из модуля ядра и iptables, поддерживает NetFlow v5, v9, v10(IPFIX).

ipt_NETFLOW собирается из исходных кодов, по этому при обновлении ядра операционной системы его необходимо пересобирать.

В первую очередь установим необходимые компоненты, например для Ubuntu/Debian (я устанавливал в Ubuntu Server 18.04, в 20.04 не установилось, так как в нем нет iptables-dev):

apt-get install module-assistant iptables-dev pkg-config
m-a prepare

Для CentOS:

yum install kernel-devel iptables-devel pkgconfig

Скачаем ipt_NETFLOW:

git clone git://github.com/aabc/ipt-netflow.git ipt-netflow
cd ipt-netflow

Выполним установку:

./configure --help
./configure --enable-natevents
make all install
depmod

Или так:

./configure --disable-conntrack --disable-natevents
make all install
depmod

Укажем адрес коллектора /etc/modprobe.d/netflow.conf

echo options ipt_NETFLOW destination=192.168.2.2:2055 protocol=9 natevents=1 > /etc/modprobe.d/netflow.conf

Загрузим модуль ядра и посмотрим параметры:

modprobe ipt_NETFLOW
sysctl -a | grep net.netflow
sysctl net.netflow
cat /proc/net/stat/ipt_netflow

Изменить параметры если что можно так (сбросятся после перезапуска системы):

sysctl net.netflow.hashsize=32768

Добавим любое из правил iptables, в зависимости для какого трафика необходимо собирать статистику, например на сервере доступа достаточно правила с «FORWARD»:

iptables -I FORWARD -j NETFLOW
iptables -I INPUT -j NETFLOW
iptables -I OUTPUT -j NETFLOW

Правила NETFLOW должны быть в самом начале, поэтому если есть другие iptables правила, то укажем номер при добавлении правила, например:

iptables -I FORWARD 1 -j NETFLOW

Удалять iptables правила можно так:

iptables -D FORWARD -j NETFLOW
iptables -D INPUT -j NETFLOW
iptables -D OUTPUT -j NETFLOW

Убедимся что правило добавлено и сенсор запущен:

iptables -nvL | grep NETFLOW
iptables -nvL FORWARD | grep NETFLOW
netstat -anpl | grep 2055

На сервере с коллектором убедимся что от сенсора ipt_NETFLOW приходят данные:

tcpdump -c5 -npi lo port 2055
tcpdump port 2055 -e -n

Если все ок, добавим модуль в файл /etc/modules, чтобы он загрузился после перезапуска системы:

echo ipt_NETFLOW >> /etc/modules

Выгрузить модуль если что можно так:

iptables -D FORWARD -j NETFLOW
modprobe -r ipt_NETFLOW

На тесте я установил ipt_NETFLOW на сервере который обслуживал 10,000 клиентов с трафиком 16 Gb/s, во время установки перебоев со связью у клиентов не возникло, загрузка процессора почти не изменилась (установлено два CPU Xeon Gold 6230R).

Если изменялись параметры в файле netflow.conf, то чтобы их применить, можно на ходу выгрузить и загрузить модуль ipt_NETFLOW, я делал так:

iptables -D FORWARD -j NETFLOW
modprobe -r ipt_NETFLOW

iptables -I FORWARD 1 -j NETFLOW
modprobe ipt_NETFLOW

Можно выключать/включать natevents без перезагрузки модуля (должен быть включен nf_conntrack_events):

cat /proc/sys/net/netfilter/nf_conntrack_events
cat /proc/sys/net/netflow/natevents
sysctl net.netflow.natevents=0
sysctl net.netflow.natevents=1

Смотрите также мою статью:
Установка и использование Nfdump

Вливайтесь в общение

1 комментарий

Добавить комментарий

  1. Подскажите, есть такой же вариант только для nftables?