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 (коллектор вместе с анализатором, его на данный момент и использую).