====== IPFIXreceiver2 - коллектор NetFlow v9 и IPFIX ======
{{indexmenu_n>3}}
===== Введение =====
ipfixreceiver2 представляет из себя IPFIX/NetflowV9 коллектор со следующим функционалом:
* Позволяет сохранять полученные данные в необходимом формате в текстовый файл.
* Позволяет реплицировать полученные данные на другие IPFIX коллекторы.
===== Установка и обновление =====
==== CentOS ====
- Подключите репозиторий VAS Experts rpm --import http://vasexperts.ru/centos/RPM-GPG-KEY-vasexperts.ru
rpm -Uvh http://vasexperts.ru/centos/6/x86_64/vasexperts-repo-1-0.noarch.rpm
- Подключите репозиторий [[https://fedoraproject.org/wiki/EPEL|EPEL]]
- Установите ipfixreceiver2:\\ yum install -y ipfixreceiver2
- Для обновления ipfixreceiver2 выполните команду: yum update -y ipfixreceiver2
===== Файлы поставки =====
* Файлы с описанием типов полей данных ipfix: \\ /etc/rcollector/xml/ipfix_raw.xml - Типы полей данных ipfix для fullflow.
/etc/rcollector/xml/ipfix_url.xml - Типы полей данных ipfix для clickstream (http запросы).
/etc/rcollector/xml/ipfix_sip.xml - Типы полей данных ipfix для sip соединений.
/etc/rcollector/xml/ipfix_aaa.xml - Типы полей данных ipfix для aaa событий.
/etc/rcollector/xml/ipfix_nat.xml - Типы полей данных ipfix для nat событий.
* Примеры конфигурационных файлов с описанием моделей импорта и экспорта данных ipfix: \\ /etc/rcollector/ipfixreceiver_raw.ini - Импорт и экспорт данных ipfix для fullflow.
/etc/rcollector/ipfixreceiver_raw_new.ini - Импорт и экспорт данных ipfix для fullflow для СКАТ версии 8.1 и выше.
/etc/rcollector/ipfixreceiver_url.ini - Импорт и экспорт данных ipfix для clickstream.
/etc/rcollector/ipfixreceiver_sip.ini - Импорт и экспорт данных ipfix для sip соединений.
/etc/rcollector/ipfixreceiver_aaa.ini - Импорт и экспорт данных ipfix для aaa событий.
/etc/rcollector/ipfixreceiver_nat.ini - Импорт и экспорт данных ipfix для nat событий.
* Исполняемый файл:/usr/bin/ipfixreceiver2
=== CentOS 6 ===
* Скрипты для запуска процессов импорта и экспорта данных ipfix:/etc/init.d/ipfix_raw - Скрипт запуска ipfixreceiver2 с конфигурационным файлом /etc/rcollector/ipfixreceiver_raw.ini.
/etc/init.d/ipfix_url - Скрипт запуска ipfixreceiver2 с конфигурационным файлом /etc/rcollector/ipfixreceiver_url.ini.
/etc/init.d/ipfix_sip - Скрипт запуска ipfixreceiver2 с конфигурационным файлом /etc/rcollector/ipfixreceiver_sip.ini.
/etc/init.d/ipfix_aaa - Скрипт запуска ipfixreceiver2 с конфигурационным файлом /etc/rcollector/ipfixreceiver_aaa.ini.
=== CentOS 7 ===
* Сервисные файлы для запуска процессов импорта и экспорта данных ipfix:/usr/lib/systemd/system/ipfix_raw.service - Сервисный файл для запуска ipfixreceiver2 с конфигурационным файлом /etc/rcollector/ipfixreceiver_raw.ini.
/usr/lib/systemd/system/ipfix_url.service - Сервисный файл для запуска ipfixreceiver2 с конфигурационным файлом /etc/rcollector/ipfixreceiver_url.ini.
/usr/lib/systemd/system/ipfix_sip.service - Сервисный файл для запуска ipfixreceiver2 с конфигурационным файлом /etc/rcollector/ipfixreceiver_sip.ini.
/usr/lib/systemd/system/ipfix_aaa.service - Сервисный файл для запуска ipfixreceiver2 с конфигурационным файлом /etc/rcollector/ipfixreceiver_aaa.ini.
===== Параметры запуска программы =====
Программа ipfixreceiver2 имеет следующие параметры запуска:usage: ipfixreceiver2 <-f config file> [options]
где
--daemon Запуск программы в фоновом режиме.
--umask=mask Установить umask (восьмиричн., по умолчанию 027).
--pidfile=path Путь к pid файлу.
-h, --help Вывести краткую справку.
-fFILE, --config-file=FILE Путь к конфигурационному файлу.
-v, --version Вывести версию программы.
===== Конфигурация =====
Параметры работы программы задаются в .ini файле.
=== Секция [connect] ===
В данной секции задаются параметры для приема данных ipfix.
* protocol - IP протокол (tcp или udp)\\ :!: При использовании протокола udp необходимо убедиться, что размер ipfix записи не превышает размер MTU (clickstream данные можно принимать только по протоколу tcp).
* host - интерфейс, на котором будет осуществляться прием данных
* port - номер порта
* flow_type - тип принимаемого потока: ipfix или netflow9. В случае использования netflow9 protocol может быть только udp.
* tcp_idle_time - время простоя для tcp соединения, в секундах. По умолчанию 10
* tcp_keep_cnt - количество запросов на проверку соединения. По умолчанию 5
* tcp_keep_interval - интервал между запросами на проверку, в секундах. По умолчанию 2
=== Секция [dump] ===
В данной секции задаются параметры дампа принятых данных в файл.
* delimiter - символ разделителей данных в файле.
* rotate_minutes - через сколько минут закрывать временный файл и переименовывать его в постоянный.
* rotate_flows - через какое количество ipfix записей закрывать временный файл и переименовывать его в постоянный. 0 - отключение данного вида ротации.
* dumpfiledir - каталог для размещения файлов с дампом. В случае отсутствия данного параметра возможна работа программы в режиме репликации ipfix данных (начиная с версии 0.2.6) без сохранения в файлы.
* fileprefix - префикс имени файла с дампом.
* rotateformat - формирует имя файла с дампом.
* extension - расширение файла с дампом.
* temp_file_suffix - суффикс имени временного файла.
* processcmd - команда для запуска при ротации файла. %s задает имя постоянного файла с дампом.
* detach_child - если true, то процесс processcmd отвязывается от процесса ipfixreceiver'а.
* decode_url - декодировать символы в url при использовании decodepath.
* decode_host - декодировать idna в имени хоста при decodehost.
* decode_referer - декодировать idna в referer при decodereferer.
* reopen_time - через сколько секунд будет предпринята попытка открыть файл для записи дампа после возникшей ошибки с файлом. По умолчанию 30 секунд.
* checkdir - проверять ли на существование dumpfiledir и в случае отсутствия создать каталог (создаются все каталоги из dumpfiledir). По умолчанию true.
* fw_max_elements_in_queue - количество элементов, при котором они отправляются в очередь на запись в файл. По умолчанию 100000.
* fw_max_queue_size - максимальное количество массивов элементов в очереди. Если на момент добавления в очередь количество находящихся в очереди будет больше, то добавляемые данные будут отброшены. По умолчанию 2.
* bad_characters - символы, которые не нужно выводить при записи в файл. Могут быть указаны одиночные символы и escape последовательности. По умолчанию "\t\r\n;\x00".
=== Секция [InfoModel] ===
В данной секции задается xml файл с описанием типа данных в принимаемом потоке ipfix.
* XMLElements - путь к xml файлу с описанием типа данных в формате [[https://www.iana.org/assignments/ipfix/ipfix.xml|IANA IPFIX Entities registry]].
=== Секция [Template] ===
В данной секции задается порядок следования данных в принимаемом потоке ipfix и при необходимости фильтр принимаемых данных по идентификатору.
* Elements - список принимаемых данных (через запятую).
* filter_tid - только данные с данным идентификатором будут обрабатываться, а с иными будут отброшены.
=== Секция [ExportModel] ===
В данной секции определяется порядок и формат вывода полученных данных.
* Elements - список данных, которые необходимо сохранять в файле (через запятую). Возможно изменить предопределенный формат вывода в файл для каждого типа данных, используя следующий формат: имя_поля:формат_вывода[:опция]. Возможны следующие типы вывода данных:
^Формат_вывода^Описание^
|decode_unsigned|Декодировать как unsinged|
|decode_signed|Декодировать как signed|
|decodeipv4|Декодировать как IPv4 адрес|
|decodeipv6|Декодировать как IPv6 адрес|
|decode_string|Декодировать как строку|
|decode_seconds|Декодировать как дату и время в секундах. Формат вывода по умолчанию '%Y-%m-%d %H:%M:%S'. В опции можно задать свой формат вывода.|
|decode_milliseconds|Декодировать как дату и время в миллисекундах. Формат вывода по умолчанию '%Y-%m-%d %H:%M:%S'. В опции можно задать свой формат вывода.|
|decodehost|Декодировать как имя хоста|
|decodepath|Декодировать как путь в url|
|decodereferer|Декодировать как referer|
=== Секция [stats] ===
В данной секции задаются параметры вывода статистики работы программы в telegraf.
* socket_path - путь к datagram socket telegraf'а.
* interval - через сколько секунд отправлять статистику в telegraf.
* tag - тег, выставляемый в поле ipfix_tag при отправке статистики в telegraf.
=== Секция [export] ===
*to - задаются адреса коллекторов для экспорта полученных ipfix записей. Формат ip/port/proto[,ip/port/proto]. Например:[export]
to=10.0.0.2/9921/tcp, 10.0.0.3/3444/udp
:!: При использовании протокола udp необходимо убедиться что одна ipfix запись не превышает размер MTU.
*queue_size - количество элементов в очереди (для каждого адреса назначения из to своя очередь) на отправку. По умолчанию 50000.
*domain - идентификатор домена. По умолчанию 1.
=== Секция [logging] ===
В данной секции задаются параметры логирования программы.
* loggers.root.level - уровень логирования
* loggers.root.channel - канал для вывода сообщений
* channels.fileChannel.class - класс канала вывода
* channels.fileChannel.path - путь к лог-файлу
* channels.fileChannel.rotation - параметр ротации
* channels.fileChannel.archive - параметр имени архивных файлов
* channels.fileChannel.purgeCount - количество архивных файлов
* channels.fileChannel.formatter.class - класс форматировщика
* channels.fileChannel.formatter.pattern - шаблон для форматировщика
* channels.fileChannel.formatter.times - время
:!: Более подробно ознакомиться с параметрами логирования можно по ссылке [[https://pocoproject.org/docs/Poco.FileChannel.html|Class FileChannel]].
===== Обработка сигнала HUP =====
При получении сигнала HUP основным процессом программы производится принудительное закрытие временного файла и переименовывание его в постоянный файл (выполняется ротация файлов).
===== Примеры конфигураций =====
=== Приём ipfix данных ===
В файлах /etc/rcollector/ipfixreceiver_*.ini приведены примеры настройки для получения различных потоков данных ipfix. Перед запуском программы необходимо изменить конфигурационный файл под ваши требования.
* При необходимости внести изменения в секцию [connect], указав интерфейс, порт и протокол для приема ipfix данных.
* В секции [dump] указать:
* dumpfiledir - каталог, где будут создаваться временный файл и файлы с данными.
* rotate_minutes - время, через которое закрывать временный файл, переименовывать его в файл с постоянным именем и выполнить команду из параметра processcmd для действий над полученным файлом.
* processcmd - команду, необходимую выполнить над файлом с данными.
* delimiter - символ разделитель между полями данных.
* В секции [ExportModel] указать необходимый порядок следования полей в сохраняемом файле.
=== Экспорт ipfix данных ===
Для экспорта получаемых ipfix данных необходимо внести изменения в конфигурационный файл, путем добавления секции [export] и указания адресов назначения. Например, для отправки ipfix данных на ipfix коллектор с адресом 10.0.0.5:1501 по протоколу tcp, элемент конфигурации будет выглядеть следующим образом:
[export]
to = 10.0.0.5/1501/tcp
Если необходимо задать несколько ipfix коллекторов, то их можно указать через запятую. Например:
[export]
to = 10.0.0.5/1501/tcp, 192.168.1.200/1501/tcp