NetFlow

NetFlow — сетевой протокол, предназначенный для учёта сетевого трафика, разработанный компанией Cisco бла бла бла...

Все мы это знаем, штука пока незаменимая, если нужно узнать кто когда и сколько сожрал канал.

Начало

Для работы NetFlow нужны три компонента:

1. Сенсор (сборщик данных, обычно роутер)

2. Коллектор (получает данные от сенсоров и складывает их в какое-то хранилище)

3. Анализатор (генерирует отчеты, графики, может быть совмещен с коллектором)

Сенсор

1. Сенсор на ALTLinux

Тут можно использовать:

softflowd (проверял когда-то, работает);i

ipcad (проверял, не осилил);

ipt_netflow (проверил, работает его и пользую)

Настройка itp_netflow

1. Устанавливаем пакет: kernel-modules-ipt_netflow-std-def.

2. Настраиваем следущим образом:

# echo options ipt_NETFLOW destination=192.168.7.141:9996 > /etc/modprobe.d/netflow.conf

Тут указываем IP-адрес и порт на котором слушает коллектор

3. Загружаем модуль:

# modprobe ipt_NETFLOW

Если ошибок нет, значит пакет с модулем установлен правильно.

4. Проверяем настройки

# sysctl -a | grep net.netflow
net.netflow.active_timeout = 1800
net.netflow.aggregation =
net.netflow.debug = 0
net.netflow.destination = 192.168.7.141:9996
net.netflow.flush = 0
net.netflow.hashsize = 8192
net.netflow.inactive_timeout = 15
net.netflow.maxflows = 2000000
net.netflow.protocol = 5
net.netflow.refresh-rate = 20
net.netflow.scan-min = 1
net.netflow.sndbuf = 212992
net.netflow.timeout-rate = 30

Не знаю поддерживает ли ip_NETFLOW версию 9, еще не успел проверить.

5. Добавляем правило в iptables для учета трафика

# iptables -A FORWARD -j NETFLOW

6. Проверяем настройки iptables

# iptables -nvL FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination        
    0     0 NETFLOW    all  --  *      *       0.0.0.0/0            0.0.0.0/0

Видим в поле target модуль NETFLOW, значит все впорядке

7. Проверяем отправку данных

# tcpdump -np port 9996   
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s25, link-type EN10MB (Ethernet), capture size 65535 bytes
10:27:50.777695 IP 192.168.7.120.33391 > 192.168.7.141.9996: UDP, length 1464
10:28:06.177375 IP 192.168.7.120.33391 > 192.168.7.141.9996: UDP, length 1464

Если наблюдаем трафик, значит сенсор работает.

2. Сенсор на CISCO

Router# conf t
Router(config)#ip flow-export source FastEthernet0/0.7
Router(config)#ip flow-export version 5
Router(config)#ip flow-export destination 192.168.7.141 9996

Сдесь указан интерфейс с которого нужно отправлять данные, версия протокола netflow и адрес коллектора с портом.

есть еще параметры ip flow-cache timeout active и ip flow-cache timeout inactive связаннве с еще активными сессияи, об этом

сами погуглите.

Вот так выглядит настройка на интерфейсе

interface FastEthernet0/0.16
 encapsulation dot1Q 16 native
 ip address 10.8.16.254 255.255.255.0
 ip flow ingress
 ip nat inside
 ip virtual-reassembly

Ключевое здесь ip flow ingress, означает, что будет учитываться входящий трафик, для учета исходящего трафика нужно указать ip flow egress.

С настройкой сенсоров закончили, можно посмотреть инфу по netflow командой: show ip cache flow или show ip flow top-talkers

Коллектор

В качестве коллектора можно использовать много чего:

1. nfacct (проверял, работает, сливал все данные в MySQL);

2. flow-tools (проверял,работает сливает все в файлы, потом их можно просматривать консольными утилитами);

3. NetFlow Analyzer (коллектор вместе с анализатором, его на данный момент и использую).