Cisco Netflow

Cisco Netflow

Маршрутизаторы производства Cisco Systems, в современных версиях операционной системы IOS, поддерживают новый метод управления маршрутизацией пакетов, называемый NetFlow. Помимо всего прочего, он дает возможность собирать информацию о статистике и передавать ее внешнему устройству для обсчета. Более подробная информация о NetFlow содержится тут. Маршрутизатор посылает UDP–пакеты со статистикой на некий IP–адрес/порт, где NeTAMS может собрать информацию и обработать ее. Фильтрация трафика в таком случае невозможна, так как пересылку данных осуществляет внешнее устройство. О конкретной настройке netflow export можно почитать тут.

Помимо роутера Cisco, поток данных Netflow может слать один их множества существующих коллекторов: fprobe, ng_netflow, flowprobe, ipfw2netflow, ulog2netflow. Последние три входят в комплект поставки NeTAMS.

Приведем пример команд маршрутизатора:

ip cef

!

ip flow–cache timeout inactive 60

ip flow–cache timeout active 10

!

interface FastEthernet0/0

ip address 192.168.1.1 255.255.255.0

ip route–cache flow

!

ip flow–export version 5

ip flow–export destination 192.168.1.254 20001

Обработчик data–source в конфигурационном файле NeTAMS настраивается следующим образом:

service data–source 1

type netflow

source 192.168.1.1

listen 20001

Полный конфигурационный файл приведен здесь.

Предполагается, что UDP–пакеты NetFlow идут с маршрутизатора, имеющего IP–адрес 192.168.1.1, и поступают на локальный UDP–порт номер 20001 (его и слушает NeTAMS).

ВАЖНО!

По определению, NetFlow учитывает только входящий на роутер трафик. Это вызывает проблемы учета при использовании трансляции адресов. Действительно, пакеты от машин внутренней сети приходят на роутер и учитываются верно, но обратные ответы извне поступают с адресом dst внешнего интерфейса. Поскольку трансляция адресов происходит после учета, то статистика всего входящего трафика будет содержать сумму всего трафика, пришедшего на адрес внешнего интерфейса, и нули для адресов внутренней локальной сети. Для корректного учета, вам необходимо использовать policy routing. Установленная на роутере операционная система должна поддерживать эту функцию. Вот пример конфигурации для Cisco 2514:

ip cef

!

interface Loopback0

ip address 192.168.10.1 255.255.255.0

ip route–cache policy

ip route–cache flow

!

interface Ethernet0

ip address 195.200.200.1 255.255.255.0

ip nat outside

ip route–cache policy

ip route–cache flow

ip policy route–map MAP

!

interface Ethernet1

ip address 192.168.1.1 255.255.255.0

ip nat inside

ip route–cache policy

ip route–cache flow

!

ip nat inside source list 1 interface Ethernet0 overload

ip classless

ip flow–export version 5

ip flow–export destination 192.168.1.254 20001

!

access–list 1 permit 192.168.1.0 0.0.0.255

access–list 101 permit ip any 192.168.1.0 0.0.0.255

route–map MAP permit 10

match ip address 101

set interface Loopback0

При использовании заруливания трафика через раутмап на CPU (loopback) Cisco довольно сильно грузиться CPU, что может существенно занизить производительность устройства начиная с IOS 12.3x в IOS добавились фичи позволяющие избавиться от ненужной нагрузки на CPU маршрутизатора.

Называется фича: Egress NetFlow Accounting