NetFlow — сетевой протокол, предназначенный для учёта сетевого трафика, разработанный компанией Cisco бла бла бла...
Все мы это знаем, штука пока незаменимая, если нужно узнать кто когда и сколько сожрал канал.
Для работы NetFlow нужны три компонента:
1. Сенсор (сборщик данных, обычно роутер)
2. Коллектор (получает данные от сенсоров и складывает их в какое-то хранилище)
3. Анализатор (генерирует отчеты, графики, может быть совмещен с коллектором)
Тут можно использовать:
softflowd (проверял когда-то, работает);i
ipcad (проверял, не осилил);
ipt_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.netflownet.netflow.active_timeout = 1800net.netflow.aggregation =net.netflow.debug = 0net.netflow.destination = 192.168.7.141:9996net.netflow.flush = 0net.netflow.hashsize = 8192net.netflow.inactive_timeout = 15net.netflow.maxflows = 2000000net.netflow.protocol = 5net.netflow.refresh-rate = 20net.netflow.scan-min = 1net.netflow.sndbuf = 212992net.netflow.timeout-rate = 30Не знаю поддерживает ли ip_NETFLOW версию 9, еще не успел проверить.
5. Добавляем правило в iptables для учета трафика
# iptables -A FORWARD -j NETFLOW6. Проверяем настройки iptables
# iptables -nvL FORWARDChain 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 decodelistening on enp0s25, link-type EN10MB (Ethernet), capture size 65535 bytes10:27:50.777695 IP 192.168.7.120.33391 > 192.168.7.141.9996: UDP, length 146410:28:06.177375 IP 192.168.7.120.33391 > 192.168.7.141.9996: UDP, length 1464Если наблюдаем трафик, значит сенсор работает.
Router# conf tRouter(config)#ip flow-export source FastEthernet0/0.7Router(config)#ip flow-export version 5Router(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 (коллектор вместе с анализатором, его на данный момент и использую).