FreeBSD: Коллектор flow-статистики на flow-tools [2011]
Netflow — протокол 5 (сеансового) уровня сетевой модели OSI, разработанный компанией Cisco и предназначенный для сбора информации об IP-трафике.
Стандартный пакет flow-tools, помимо приложений, которые показывают содержимое файлов статистики, содержит еще и две интересные службы flow-capture и flow-fanout.
Flow-capure служит для сохранения полученной статистики. Flow-fanout служит для дублирования статистики на разные машины. Обовсем подробнее.
Программно-аппаратное обеспечение
1. ПК P4 – CPU 2.4 GHz, RAM 512 Mb, HDD 1Tb.
2. ОС – FreeBSD 7.2, swap 4 Gb
Установка
1. Обновляем порты:
# portsnap fetch update
или если вы используете команду portsnap впервые:
# portsnap fetch extract
2. Устанавливаем порт:
# cd /usr/ports/net-mgmt/flow-tools
# make install clean
Настройка
Правим файл /etc/rc.conf:
Так настраивается flow-capture:
# Запускаем flow-capture
flow_capture_enable=»YES»
# Указываем ip-адрес на котором слушается соединение (принимается поток)
flow_capture_localip=»IP_ADDRESS«
вместо IP_ADDRESS укажите IP-адрес сервера, пример: 10.0.0.1
# Указываем ip с которого принимать поток (по умолчанию 0.0.0.0 – принимать с любого ip)
flow_capture_remoteip=»0.0.0.0″
# Указываем порт на который будет приниматься поток
flow_capture_port=»9998″
# указываем путь, по которому будем складывать статистику
flow_capture_datadir=»/usr/local/_dump/ng»
# Параметры работы демона
flow_capture_flags=»-keyvalue»
Так настраивается flow-fanout:
#Включаем flow-fanout
flow_fanout_enable=»YES»
# Указываем ip-адрес на котором слушается соединение(принимается поток)
flow_fanout_ip=»IP_ADDRESS«
# Указываем ip с которого принимать поток (по умолчанию 0.0.0.0 – принимать с любого ip)
flow_fanout_remoteip=»0.0.0.0″
# Указываем порт на который будет приниматься поток
Перед настройкой следует определиться, каким образом будет осуществляться хранение статистики и её получение.
Вариантов существует по меньшей мере 2:
непосредственно принимать поток при помощи flow-capture и сохранять на этой же машине
принимать поток при помощи flow-capture и дублировать этот же поток на другую машину
Рассмотри оба варианта на примере использования mpd5 в связке с netflow.
Первый вариант
Допустим, mpd5 и flow-capture у нас работают на одной машине.
Эти параметры следует прописать в mpd.conf:
set iface enable netflow-in
set iface enable netflow-out
set netflow peer 127.0.0.1 9996 #Кому передаем
set netflow self 127.0.0.1 65500 #свой порт, от которого будет происходить передача
Это прописываем в /etc/rc.conf:
flow_capture_enable=»YES»
flow_capture_localip=»127.0.0.1″
flow_capture_remoteip=»0.0.0.0″
flow_capture_port=»9998″
flow_capture_datadir=»/usr/local/_dump/»
flow_capture_flags=»-S60 -z9 -n95 -N0″
Таким образом демон mpd5 будет скидывать, с порта 65500, на порт 9996, flow-capture, информацию о входящем и исходящем трафике,
а flow-capture, в свою очередь, будет складывать её по пути /usr/local/_dump.
Второй вариант
Допустим, mpd5 и flow-fanout у нас работают на одной машине, а flow-capture на другой и нам нужно сливать поток как на коллектор flow-capture, так и на еще одну стороннюю машину.
mpd5 и flow-fanout – IP 10.10.0.1
flow-capture – ip 10.10.0.2
сторонняя машина – ip 10.10.0.3
Сервер 1:
mpd.conf берем из предыдущего примера:
set iface enable netflow-in
set iface enable netflow-out
set netflow peer 127.0.0.1 9996 #Кому передаем
set netflow self 127.0.0.1 65500 #свой порт, от которого будет происходить передача
А вот в /etc/rc.conf настраиваем уже flow-fanout:
flow_fanout_enable=»YES»
flow_fanout_ip=»127.0.0.1″
flow_fanout_remoteip=»127.0.0.1″
# Укажу свой loopback, т.к. нет смысла слушать «с любого адреса»
Любое приложение которое принимает flow-поток, будь то биллинг, другой сервер статистики или что-то еще.
Объясню что происходит во втором случае:
Демон mpd5 будет скидывать, с порта 65500, на порт 9996, flow-fanout, информацию о входящем и исходящем трафике. Flow-fanout, в свою очередь, будет сливать это на второй сервер, на котором настроен flow-capture, на порт 9997, и так же он будет сливать эту статистику на третий сервер, порт 9998.
Связка flow-capture И flow-fanout довольно гибкая и позволяет работать с flow-потоком так, как это нужно в зависимости от сложившейся ситуации.
Ключи к flow-capture можно посмотреть в соответствующем man’е.
После всего проделанного запускаем используемые нами сервисы: