Экспорт NetFlow c роутера OpenWRT

Среди стандартных пакетов есть несколько сенсоров . и базируются на libpcap и основной их недостаток — они не разделяют входящий и исходящий трафик. Альтернативой этим сенсорам выступает форк fprobe который вместо libpcap использует libipulog ( ULOG) — .

Наиболее предпочтительным вариантом является fprobe-ulog, он лишен недостатка сенсоров базирующихся на libpcap и корректно разделяет входящий и исходящий трафик. Так же, за счет использования интерфейса встроенного в ядро netfilter, он обладает большей производительностью, чем pcap-сенсоры.

Для работы нам потребуются следующие пакеты (приблизительно 60 КБ):

 [email protected]:~# opkg install fprobe-ulog libpthread iptables-mod-ulog kmod-ipt-ulog [email protected]:~# insmod ipt_ULOG 

Для работы сенсора необходимо направить информацию о всем трафике проходящем через netfilter в ядре в user-space, где эту информацию будет получать fprobe-ulog и отправлять на коллектор NetFlow.

 [email protected]:~# iptables -I INPUT -j ULOG [email protected]:~# iptables -I OUTPUT -j ULOG [email protected]:~# iptables -I FORWARD -j ULOG 

Здесь можно уже запустить fprobe-ulog и радоваться жизни, но, перед этим я хочу сделать маленькую ремарку.

Для анализа трафика NetFlow я использую ntop, а он идентифицирует уникальность сенсоров по сочетанию ip-адреса и номера порта. fprobe-ulog выбирает порт при запуске случайным образом, т.е. при каждом перезапуске сенсора ntop будет создавать новые интерфесы. Чтобы предотвратить это достаточно добавить одно правило iptables, которое будет выполнять трансляцию любого исходного порта в 2055 (стандартный порт NetFlow) при отправке пакетов на коллектор:

 [email protected]:~# iptables -t nat -A POSTROUTING -p udp -o br-lan -d  \ --dport 2055 -j SNAT --to :2055 

На этом настройка закончена и можно запустить сенсор.

 [email protected]:~# fprobe-ulog :2055 

ntop openwrt