NetFlower (NFcollect, NFfilter, NFgroup) Руководство системного администратора Автор: Орлов О.О. ([email protected]) 11 июля 2010 г. Оглавление 1 Введение 3 2 Статус документа 4 3 Термины 5 4 Назначение и характеристики пакета NetFlower 4.1 Назначение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Характеристики . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Ограничения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Дистрибутив . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Нумерация версий . . . . . . . . . . . . . . . . . . . . . . . 4.4.2 Именование и состав пакетов . . . . . . . . . . . . . . . . 6 6 6 7 8 8 8 5 Архитектура и общие принципы функционирования 5.1 Технология ”Замещения ресурсов” . . . . . . . . . . . . . . . . . . 5.2 Обеспечение отказоустойчивости . . . . . . . . . . . . . . . . . . 5.3 Распределение потоков NetFlow . . . . . . . . . . . . . . . . . . . 5.3.1 Распределение нагрузки . . . . . . . . . . . . . . . . . . . 5.3.2 Масштабирование . . . . . . . . . . . . . . . . . . . . . . . 9 9 9 10 11 11 6 Установка пакета NetFlower в ОС Windows 13 7 NetFlow директор 20 7.1 Реализация на базе ПО ”Samplicator” . . . . . . . . . . . . . . . . 20 8 NFcollect 21 8.1 Назначение NFcollect . . . . . . . . . . . . . . . . . . . . . . . . . 21 8.2 Файлы конфигурации NFcollect . . . . . . . . . . . . . . . . . . . 21 8.2.1 Главный файл конфигурации(NFcollect.conf) . . . . . . . . 21 8.3 Опции командной строки NFcollect . . . . . . . . . . . . . . . . . 23 8.4 Особенности MS Windows версии NFcollect . . . . . . . . . . . . 23 8.5 Управление службой NFcollect . . . . . . . . . . . . . . . . . . . . 23 8.6 Формат и имена выходных файлов NFcollect . . . . . . . . . . . . 23 8.7 Запуск NFcollect (секция не окончена) . . . . . . . . . . . . . . . 25 8.7.1 О системном UDP буфере приема в различных операционных системах (секция не окончена) . . . . . . . . . . . . 25 8.8 Различия между полной и бесплатной версиями NFcollect . . . . 25 1 Оглавление 2 9 NFgroup 26 9.1 Назначение NFgroup . . . . . . . . . . . . . . . . . . . . . . . . . 26 9.2 Схемы агрегации . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 9.3 Опции командной строки . . . . . . . . . . . . . . . . . . . . . . . 28 9.4 Возвращаемые значения . . . . . . . . . . . . . . . . . . . . . . . 28 9.5 Файлы конфигурации NFgroup . . . . . . . . . . . . . . . . . . . . 29 9.5.1 Главный файл конфигурации (NFgroup.conf) . . . . . . . . 29 9.5.2 Файл описания схем агрегации (schemes.conf) . . . . . . . 29 9.5.3 Файл конфигурации записи в базу данных (db.conf) . . . . 32 9.5.4 Файл конфигурации статистики (stat.conf) . . . . . . . . . 33 9.6 Различия между полной и бесплатной версиями NFgroup . . . . . 33 9.7 Потребляемые ресурсы (секция не окончена) . . . . . . . . . . . . 33 9.8 Статистика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 10 NFfilter 34 10.1 Назначение NFfilter . . . . . . . . . . . . . . . . . . . . . . . . . . 34 10.2 Опциии командной строки NFfilter . . . . . . . . . . . . . . . . . . 34 10.3 Формат конфигурационного файла NFfilter . . . . . . . . . . . . . 34 10.3.1 Общее описание . . . . . . . . . . . . . . . . . . . . . . . . 34 10.3.2 Базовые типы (для условных функций) . . . . . . . . . . . 35 10.3.3 Логические функции . . . . . . . . . . . . . . . . . . . . . 36 10.3.4 Перечень и типы полей в записях NetFlow после NFcollect 36 10.3.5 Пример конфигурационного файла . . . . . . . . . . . . . 37 10.3.6 Алгоритм "действия"конфигурационного файла . . . . . . 37 11 Некоторые проблемы, причины и способы решения (Глава не окончена) 38 Глава 1 Введение Данное руководство посвящено описанию программного продукта NetFlower, состоящего из 3 приложений, функционально дополняющих друг друга : NFcollect, NFgroup, NFfilter. Данный продукт классифицируется как пакет для учета сетевого трафика по протоколу NetFlow. В настоящее время крупные Internet провайдеры ввиду лавинообразного роста абонентской базы и снижения стоимости трафика переходят на использование "безлимитных"тарифных планов - с фиксированной платой за канал в Internet, ограниченный по пропускной способности. Однако для небольших и средних провайдеров, потребителей трафика (клиентов) а также для анализа структуры проходящего трафика актуальность задачи учета трафика по протоколам класса NetFlow (LFAP, SFlow) сохраняется. 3 Глава 2 Статус документа Необходимо отметить, что данный документ находится в состоянии, аналогичное которому в мире программного обеспечения принято называть beta версия. Форматирование, грамматика документа далеки от задуманных. Некоторые секции только начаты. Кроме того, данное руководство на сегодняшний день по мнению автора является достаточно сжатым : некоторые моменты лишь упомянуты, но, учитывая интерес к пакету, руководство будет наполняться от версии к версии как новыми разделами так и подробностями. Однако, несмотря на все перечисленное и ввиду наличия спроса на продукт как у пользователей бесплатной версии так и у пользователей, заинтересованных в получении коммерческой поддержки, было принято решение о публикации документа в его текущем состоянии. Автор надеется потратить все увеличивающееся время, затрачиваемое на ответы пользователям на разработку пакета. В связи с этим с благодарностью принимаются на электронный адрес все корректировки, пожелания как к документации так и к пакету NetFlower. 4 Глава 3 Термины • ”ПО” - Программное обеспечение • ”ОС” - Операционная система • ”СУБД” - Система управления базами данных • ”Протокол NetFlow” - Фирменный протокол компании Cisco systems, предназначенный для снятия информации о сетевых (Ip) сессиях, проходящих через Cisco маршрутизаторы/коммуатторы. Некоторые другие производители (Например Juniper jflow) также используют данный протокол. • ”Версии протокола NetFlow” существуют различные версии NetFlow, отличающиеся информативностью содержащихся в них данных. С ростом номера версии информативность возрастает. Последняя версия - v9 • ”NetFlow директор” - программно-аппаратный комплекс, перенаправляющий, дублирующий NetFlow потоки • ”NetFlow коллектор - программно-аппаратный комплекс, принимающий, сохраняющий и обрабатывающий потоки NetFlow” • ”Агрегация” - процесс объединения записей NetFlow, ключевые поля которых совпадают. К полям значений при этом применяются ”агрегирующие функции” • ”Период (интервал) агрегации” - временной интервал, в течении которого записи NetFlow с совпадающими ключевыми полями объединяются в одну запись • ”AS (Автономная система)” - ?? группа ip сетей, объединенная единым номером (номером AS от 0 до 65535), для оптимизации глобальных таблиц маршрутизации. 5 Глава 4 Назначение и характеристики пакета NetFlower 4.1 Назначение ПО NetFlower предназначено для сбора информации, содержащейся в потоках NetFlow и ее предварительной подготовки для загрузки в системы предбилинга/билинга. Под подготовкой понимается условная фильтрация записей NetFlow, полей внутри каждой записи, агрегирование (уплотнение) данных по настраиваемым схемам (схемам агрегации). В последнее время ведется дополнительная разработка по созданию "драйверов"загрузки в различные популярные СУБД: MySQL, Firebird, MSSQL, Postgresql. Драйвер для СУБД Oracle не рассматривается в качестве актуального, поскольку, Oracle используется как правило в случаях необходимости обработки экстремальных объемов NetFlow, при которых технология client-server (используемая всеми драйверами СУБД) видится неэффективной. В данном случае рекомендуется использовать более производительный способ загрузки информации в СУБД - утилитой loader (или его аналоги для других СУБД) в случае необходимости добиться максимальной производительности в том числе для других СУБД. С другой стороны, NetFlower создавался в качестве замены Cisco NetFlow collector, который изначально существовал лишь для платформы Sparc 64, и лишь позже был портирован на платформу Linux. При большем количестве целевых платформ предполагалось достижение лучшей чем у Cisco NFC производительности для каждой платформы. 4.2 Характеристики При создании пакета NetFlower преследовались 4 основные цели : • Кроссплатформенность • Экстремальная производительность 6 Глава 4. Назначение и характеристики пакета NETFLOWER 7 • Повышенная надежность сбора информации о трафике • Простота конфигурирования Пакет написан на языке C++, поэтому кроссплатформенность обеспечивается на уровне исходных текстов, то есть имеются отдельные функционально эквивалентные сборки для нескольких платформ. Под экстремальной производительностью понимается прежде всего способность пакета обрабатывать внушительные по объемам потоки NetFlow. Надежность достигается прежде всего схемами резервирования приема потоков NetFlow, описанными ниже. 4.3 Ограничения • 32 разрядная адресация встроенной hash библиотеки. Ограничение обусловлено отсутствием потребности в 64 разрядной адресации. С другой стороны, 64 битная адресация порождает потребление большего объема оперативной памяти. 64 битные сборки пакета также имеют 32 битную адресацию hash. • Алгоритм распараллеливания обработки данных NFgroup упрощен с точки зрения реализации и не оптимален по расходу ресурсов : отдельные потоки (threads) обрабатывают отдельные файлы, вследствие чего для каждого потока создается отдельная hash таблица с резервированием отдельного участка памяти. В будущем предполагается изменить алгоритм в пользу нового : отдельные потоки будут обрабатывать разные строки одного файла, что при примерно равном приросте производительности не будет вызывать роста потребления оперативной памяти. • NFcollect может прослушивать только один UDP порт одновременно. Автор не видит объективных причин изменять ситуацию, все источники NetFlow могут направлять потоки на один порт без риска смешивания благодаря именованию файлов по адресу источника. • Размер системного "приемного"UDP буфера в NFcollect необходимо устанавливать явно соответствующей переменной конфигурационного файла. Значение подбирается опытным путем, зависит от производительности сервера, потока NetFlow. Автоподстройку размера буфера производить не возможно, поскольку нет системного вызова, определяющего утилизацию (степень загрузки) системного буфера. Тем не менее, в будущих версиях предполагается ввести статистику плотности потока NetFlow, которая будет помогать точно оценить потребность приложения в размере UDP буфера. • Массив агрегированных строк в NFgroup не является динамическим. Как следствие - NFgroup на хранение массива резервирует максимальное количество строк. • "Функции обработки задаваемые в конфигурационном файле schemes.conf не могут использовать в качестве аргумента дополнительные поля в записи. Глава 4. Назначение и характеристики пакета NETFLOWER 4.4 Дистрибутив 4.4.1 Нумерация версий 8 Версии NetFlower представляют собой номер текущей ревизии, в формате : ГГГГММДДNN, где ГГГГ - год; ММ - месяц; ДД - день выпуска ревизии; NN - номер ревизии за текущие сутки С одной стороны, пакет уже давно преодолел рубеж, когда был реализован весь функционал, запланированный к выпуску v.1. Однако, в момент, подходящий для выпуска 1 стабильной версии появились более приоритетные задачи по реализации нового функционала (такого как драйверы загрузки в популярные базы данных, новое приложение пакета NFfilter и т.п.), которые не добавляют ревизиям общей стабильности. С другой стороны, новые возможности достаточно независимы от базового функционала, надежность работы которого проверена годами интенсивных нагрузок. Т.е. при отсутствии потребности в экспериментальном функционале общая стабильность приложения остается равной стабильности прежних ревизий. Кроме того, коммерческие сборки как правило содержат заказной набор функций (например совсем не содержат поддержки СУБД). Таким образом, автором было принято решение о временном продолжении изначально принятой системе выпуска версий. Кроме того, автор наметил основные цели ( в том числе подготовка исчерпывающей версии документации и переход на более традиционную систему нумерации версий ) для достижения при создании следующего проекта - NetFlower2. 4.4.2 Именование и состав пакетов В настоящий момент версии NetFlower для UNIX-подобных операционных систем поставляются в виде архивов tar сжатых архиватором gzip, именуемых по шаблону: NFC_операционная_система_аппаратная_платформа_версия.tar.gz, например NFC_linux_x86_версия.tar.gz Установка пакета выполняется распаковкой архива командой: tar vxzf архив.tar.gz и дальнейшим конфигурированием путем изменения вручную конфигурационных файлов. Для любой платформы в состав дистрибутива входит 3 приложения - NFcollect, NFgroup и NFfilter, для платформы Windows - дополнительное приложение - NFservice, которое является консольным вариантом управления сервисом NFcollect (установка, удаление, запуск,остановка) Приложение NFcollect настраивается системным администратором как службадемон, запускаемый при старте системы, NFgroup прописывается в подсистеме cron с тем, что-бы вызываться регулярно напрямую или из промежуточного скрипта. Версии для Windows платформы поставляются в виде инсталлятора, помогающего получить сразу после установки работоспособную конфигурацию NetFlower (включая установку соответствующего сервиса) за счет автоматической генерации параметров конфигурационных файлов во время инсталляции. Глава 5 Архитектура и общие принципы функционирования 5.1 Технология ”Замещения ресурсов” Одной из положительных сторон реализации NetFlower в виде нескольких специализированных приложений является повышение общей производительности за счет использования технологии ”Замещения ресурсов”. Поскольку главной составляющей задачи сбора NetFlow является именно функция сбора, относительно нетребовательное к процессорному времени приложение (NFcollect) резидентно присутствует в памяти, интенсивно загружая и заполняя дисковую подсистему. Оставшееся процессорное время занимает периодически запускаемый процесс NFgroup, который "доделывает"работу, требующую значительных вычислительных ресурсов, освобождая временно занятое NFcollect дисковое пространство. Такой подход позволяет максимально эффективно компенсировать суточные колебания в поступающих на коллектор объемах NetFlow. Увеличение дискового пространства приближает общую производительность системы к производительности только NFcollect за счет ”замещения” нехватки процессорного времени в пиковые часы дисковым буфером, который позволяет NetFlower без потерь работать до часов спада поступающего объема NetFlow. 5.2 Обеспечение отказоустойчивости Отказоустойчивость системы в целом обеспечивается рядом технических решений. Одним из таких решений является разделения функций сбора и обработки данных приложениями NFcollect и NFgroup. Предельное упрощение резидентной части (NFcollect) минимизирует количество потенциальных ошибок в коде программы, в т.ч. снижает риск возникновения ”утечек памяти”. Вторым решением является дублирование потоков NetFlow на разные коллекторы. Подробнее организация дублирования потоков NetFlow будет описана ниже. 9 Глава 5. Архитектура и общие принципы функционирования 5.3 10 Распределение потоков NetFlow Распределение потоков NetFlow является ключевым моментом в архитектуре систем, построенных на базе NetFlower и позволяет решить несколько задач : • Резервное дублирование собираемых данных • Распределение нагрузки на несколько коллекторов • Масштабтрование системы в целом - изменеие количества копий потоков NetFlow, распределение нагрузки на разное количество серверов Некоторые версии Cisco IOS поддерживают направление потока NetFlow сразу на 2 коллектора и одним из оправданных подходов может стать такой : Дублировать потоки NetFlow внутренними средствами маршрутизаторов везде, где это возможно и только в остальных случаях прибегать к использованию дополнительных решений. В случаях, когда IOS (или другое встроенное ПО) части или всех источников NetFlow, с которых предполагается собирать данные, не поддерживает более одного NetFlow коллектотра а также, если требуется организовать 3 и более копии потоков NetFlow или для достижения общей гибкости системы ( за счет некоторого снижения общего уровня надежности системы ) необходимо использовать промежуточное звено - ”NetFlow директор”. Возможной реализацией ”NetFlow директор’а” может являться выделенный сервер повышенной надежности, достигаемой следующими к нему требованиями • бездисковый (например, с загрузкой с flash носителя) • оснащенный дублированным электропитанием • оснащенный быстрым ethernet адаптером (или несколькими для обеспечения дополнительного дублирования за счет увеличения общей пропускной способности при использовании нескольких локальных сетевых сегментов) • с повышенным уровнем контроля функционирования ПО Поскольку на этапе ”разделения потоков” содержимое пакетов NetFlow не играет никакой роли, ”NetFlow директор” работает с обычными UDP потоками, что упрощает его реализацию и снижает нагрузку на сервер, на котоором он функционирует. В настоящий момент пакет NetFlower не содержит собственный ”NetFlow директор”, но его функции с успехом может выполнять бесплатно распространяемое ПО - samplicator, функционирующее на UNIX-подобных системах: http://code.google.com/p/samplicator/ задачей которого является прием UDP дэйтаграмм на определенный порт и отправка принятых дейтаграмм в одном или нескольких направлениях. Важной Глава 5. Архитектура и общие принципы функционирования 11 особенностью samplicator’а является возможность spoofing’а - сохранения адреса отправителя пакетов UDP. Данная возможность позволяет принимать пакеты NetFlow коллектором так, как будто они были отправленны непосредственно маршрутизатором без каких-либо промежуточных звеньев. В будущем планируется поставлять в составе пакета NetFlower собственный директор, который будет мультиплатформенным как и весь пакет. Настройке samplicator в качестве ”NetFlow директора” посвящена отдельная глава. В Таблице 3.1 показана схема формирования распределенных потоков NetFlow с одновременным их дублированием. Основной идеей схемы является разделение потоков с маршрутизаторов по группам, направление потоков NetFlow каждой группы на отдельный порт ”NetFlow директора”. Каждый порт (группу) обслуживает выделенный экземпляр samplicator’а, который генерирует необходимое число копий NetFlow потоков 5.3.1 Распределение нагрузки В случаях, когда мощности одного сервера с NetFlower не хватает, существует возможность разделения нагрузки по сбору и обработке NetFlow между несколькими серверами. Для решения этой проблемы администратор оценивает весовые доли, вносимые в общий поток NetFlow всеми обслуживаемыми маршрутизаторами. Далее, руководствуясь особенностями топологии сети, предполагаемым количеством серверов с NetFlower (N), администратор разбивает маршрутизаторы на (M) групп (например приблизительно равных по совокупному объему NetFlow, если предполагается использовать равные по производительности сервера). Потоки NetFlow разных групп направляются на разные обслуживающие сервера ”NetFlow директором”. 5.3.2 Масштабирование Масштабирование системы сбора можно производить в двух направлениях : • изменение количества резервных копий • распределение нагрузки на различное количество коллекторов Будем называть систему из N копий потоков, направленных на M серверов, системой, построенной по схеме NxM, например в схеме 2x3 используется 3 сервера-коллектора, собирающих 2 копии NetFlow потоков. Масштабирование Глава 5. Архитектура и общие принципы функционирования Маршрутизаторы Входной порт NetFlow директора netflower1_g1 netflower1_g2 netflower2_g1 netflower2_g2 netflower3_g1 netflower3_g2 ... ... ... ... ... netflowerN2_g2 12 NetFlow директор Входной порт NetFlow коллектора NetFlow коллектор netflower1_g3 netflower2_g3 netflower3_g3 ... 9995 netflowerN3_g3 9995 служба samplicate 1 9996 служба samplicate 2 9997 служба samplicate 3 9995 9995 9995 9995 netflowerN1_g1 9995 Таблица 5.1: Организация распределения нагрузки и дублирования потоков 1 1 1 2 2 2 1 1 3 2 2 1 1 3 1 1 3 1 3 2 2 4 2 4 1 1 3 5 2 4 2 2 4 1 3 5 3 3 4 3 4 5 Таблица 5.2: Принцип масштабирования системы по схемам 2x2, 2x3, 2x4, 2x5 Глава 6 Установка пакета NetFlower в ОС Windows Для пользователей ОС Windows пакет NetFlower оформлен в традиционном для данной платформы виде : программы-инсталятора. В процессе инсталляции администратор задает основные параметры работы пакета. После инсталляции фактически пакет готов к приему NetFlow трафика. "Тонкие"настройки администратор должен производить самостоятельно, редактируя конфигурационные файлы согласно описаниям их формата. Процесс инсталляции также настраивает системную службу, отвечающую за запуск/остановку NFcollect. Запуск/Остановка/Перезапуск службы производится системным администратором. ! В текущей версии NetFlower для Windows поддерживается только английский язык интерфейса инсталлятора. После установки и, возможно корректировки конфигурационных файлов, для начала сбора пакетов NetFlow, направленных на коллектор, системный администратор должен запустить службу "NetFlow v.1,5,6,7,9 collector". 13 Глава 6. Установка пакета NETFLOWER в ОС WINDOWS 14 Первая форма процесса установки определяет тип инсталляции : для первичной установки необходимо выбрать полную установку, для обновления - обновление бинарных файлов (вся конфигурация при этом будет сохранена). Второй вариант предполагает, что корректировка конфигурационных файлов (например при использовании новой опции) лежит полностью в зоне ответственности системного администратора. Рис. 6.1: Форма выбора типа установки. Глава 6. Установка пакета NETFLOWER в ОС WINDOWS 15 Следующая форма позволяет задать местоположение исполняемых файлов пакета а также входных, выходных каталогов, лог-файлов. Рис. 6.2: Форма выбора места установки. Глава 6. Установка пакета NETFLOWER в ОС WINDOWS 16 Форма определяет параметры конфигурации NFcollect, которые будут записаны в соответствующий файл конфигурации. Рис. 6.3: Форма конфигурации NFcollect. Глава 6. Установка пакета NETFLOWER в ОС WINDOWS 17 Форма определяет параметры конфигурации NFgroup, которые будут записаны в соответствующий файл конфигурации. Рис. 6.4: Форма конфигурации NFgroup. Глава 6. Установка пакета NETFLOWER в ОС WINDOWS 18 В зависимости от выбранного в предыдущей форме типа СУБД, в данной форме будет предложено задать параметры доступа к СУБД выбранного ранее типа. Также автоматически для заданной СУБД и выбранной ранее схемы агрегации будут сгенерированы SQL-строки создания базы и записи NetFlow строк в СУБД Рис. 6.5: Форма конфигурации параметров параметров записи в СУБД. Глава 6. Установка пакета NETFLOWER в ОС WINDOWS 19 Назначение формы очевидно Рис. 6.6: Форма запуска процедуры установки с заданными ранее параметрами. Глава 7 NetFlow директор 7.1 Реализация на базе ПО ”Samplicator” Ниже показаны на примере приемы, с помощью которых реализуются описанные ранее схемы масштабирования с использованием дополнительного звена в архитектуре сбора потоков NetFlow на базе ПО ”Samplicator” Подробное описание функций пакета выходит за рамки данной документации и может быть получено по адресу программы : http://code.google.com/p/samplicator/ Адрес не является постоянным адресом страницы на сайте разработчика, скорее всего по причине проявления "коллективного творчества"характерного для freeware, вследствии длительного отсутствия поддержки со стороны автора программы. Рассмотрим возможность использования Samplicator на примере. Предположим, у нас есть 2 рабочих NetFlow коллектора по адресам 10.0.0.2 и 10.0.0.3, прослушивающих UDP порты 9995. NetFlow директор (Samplicator) мы решили установить на сервере, с ip адресом 10.0.0.11 для получения UDP (NetFlow) пакетов. Cisco маршрутизаторы сконфигурированы так, что отправляют NetFlow пакеты на порт 9996 NetFlow директора. Следующая строка обеспечит дублирование потока UDP (NetFlow), spoof режимом (флаг -S) обеспечив "прозрачность"потоков : на коллекторах ситуация будет идентична той при которой оба потока направлялись непосредственно с Cisco (с сохранением адресов источников - Cisco в заголовках пакетов) : /opt/smpl/samplicate -s 10.0.0.11 -S -f -b 67108864 -p 9996 \ 10.0.0.2/9995 \ 10.0.0.3/9995 \ описание остальных флагов: -f - переводит программу в режим демона (fork) -b размер - размер приемного буфера в байтах (подробно можно прочитать в главе NFcollect) 20 Глава 8 NFcollect 8.1 Назначение NFcollect Как уже упоминалось, NFcollect - резидентное (постоянно находящееся в памяти в виде службы (Windows) или демона (UNIX)) приложение, единственной задачей которого является собрать всю возможную информацию из NetFlow потоков в файлы согласно опциям, заданным в конфигурационном файле. NFcollect поддерживает автоматическое распознавание версии протокола NetFlow, имеет простейшие средства фильтрации пакетов в зависимости от источника. NFcollect намеренно освобожден от каких-либо других задач для упрощения реализации, минимизации нагрузки и вероятности возникновение нежелательных эффектов (утечки памяти и т.д.) 8.2 Файлы конфигурации NFcollect 8.2.1 Главный файл конфигурации(NFcollect.conf) Опция listen_port listen_address Тип значения целое число диапазона 1..65535 строка receive_buffer_size целое число 21 Описание Прослушиваемый UDP порт Прослушиваемый адрес локального сетевого интерфейса Размер буфера (байт) для приема пакетов NetFlow Глава 8. NFCOLLECT 22 Опция split_interval Тип значения целочисленное выражение adjust_splitting булево output_dir строка log_dir log_file_name source_checking строка строка булево valid_sources список строк Описание длительность (в секундах) интервала создания новых выходных файлов. Периодически, по окончании очередного такого интервала, NFcollect создает для каждого источника NetFlow новый файл а старые переименовывает в имена с указанием timestamp начала и конца интервала, в течении которого производилась запись в эти файлы. С точки зрения входных данных приложения NFgroup и пакета NetFlower в целом, данный интервал именуется "интервалом агрегации" Выравнивать первое событие записи в новые файлы по границе, кратной целому количеству временных интервалов, прошедших с начала суток, заданных опцией split_interval. Например, при интервале 60 секунд, adjust_splitting = yes приведет к тому, что запущенный не в начале минуты NFcollect переключится на запись в новые файлы в начале новой минуты Каталог сбора файлов с информацией, прочитанной из Использовать проверку адреса - источника NetFlow Если включена проверка адреса источника NetFlow, будут приниматься пакеты только от перечисленных в данной переменной источников Допустимые типы значений : • целое число - например 9997 • целочисленное выражение - арифметическое выражение, значением которого является целое положительное число, например 60*(20+40) - задает часовой интервал агрегации • булево - yes|no • строка - заключенная в двойные кавычки последовательность любых символов за исключением двойной кавычки и запятой, например "/var/log/NFcollect.log" Глава 8. NFCOLLECT 23 • список строк - последовательность строк, разделенных запятыми, например ”192.168.10.1” , ”192.168.10.2”, ”192.168.10.3” 8.3 Опции командной строки NFcollect • -c имя_файла мы. задает имя главного конфигурационного файла програм- • -l имя_файла задает имя лог-файла программы. Имеет приоритет перед соответствующей опцией конфигурационного файла, удобна для выявления ошибок на ранней стадии. • -V печатает информацию о программе. Не выполняет никаких других действий. 8.4 Особенности MS Windows версии NFcollect Новые Windows версия NetFlower выпускаются в виде дистрибутива, инсталлирующего и предварительно конфигурирующего пакет. Не смортя на это NFcollect комплектуется вспомогательным приложением - NFservice, которое помогает управлять запуском и остановкой NFcollect в режиме системной службы. NFservice поддерживает следующие режимы запуска: 8.5 Управление службой NFcollect • -i (–install) путь_к_исполняемому_файлу_NFcollect путь_к_конфигурационному_файлу инсталлирует службу NFcollect • -d (–delete) удаляет службу NFcollect • -s (–start) запускает службу NFcollect • -p (–stop) 8.6 останавливает службу NFcollect Формат и имена выходных файлов NFcollect Выходные файлы NFcollect представляют собой текстовые файлы, каждая строка которых является информационными записями, соответствующими одной сетевой сессии. В следующей таблице приведены описания полей записи выходного файла NFcollect. Значения в колонке таблицы "Формат" не рассматривается подробно ввиду детального описания в главе NFgroup. Поле Формат Описание Глава 8. NFCOLLECT Поле sequence_number Формат целое беззнаковое begin_time Расширенный timestamp end_time source_addr source_port Расширенный timestamp ip адрес целое беззнаковое dest_addr dest_port ip адрес целое беззнаковое prot целое беззнаковое octets целое беззнаковое packets целое беззнаковое source_device input_interface ip адрес целое беззнаковое output_interface целое беззнаковое nexthop tos src_as ip адрес целое беззнаковое целое беззнаковое dst_as целое беззнаковое src_mask dst_mask целое беззнаковое целое беззнаковое 24 Описание Номер последовательности - индекс, приписываемый записи источником NetFlow, постоянный в пределах UDP??? пакета, в следующем UDP пакете увеличивается на количество NetFlow пакетов в предыдущем UDP пакете UNIX_timestamp.кол-во милисекунд . Время начала flow с точностью до миллисекунды Тоже, что и begin_time, только время окончания flow Адрес источника сетевой сессии TCP порт источника сетевой сессии Адрес назначения сетевой сессии TCP порт назначения сетевой сессии номер TCP протокола ??(UNIX /etc/protocols) количество зарегистрированных байт в записи количество зарегистрированных пакетов в записи адрес источника NetFlow потока Номер входного интерфейса на источнике NetFlow для зарегистрированной сессии Номер выходного интерфейса на источнике NetFlow для зарегистрированной сессии ??? Тип сервиса Номер автономной системы адреса-источника сетевой сессии Номер автономной системы адреса-назначения сетевой сессии ??? ??? Пример фрагмента из нескольких записей выходного файла NFcollect : 211046 1229943249.990 1229943249.990 172.31.31.2 3854 172.31.31.1 161 17 103 1 172.31.31.1 3 0 172.31.31.1 0 0 0 0 0 211046 1229943250.000 1229943250.000 172.31.31.1 161 172.31.31.2 3854 17 127 1 172.31.31.1 0 3 172.31.31.2 0 0 0 0 0 211052 1229943251.990 1229943251.990 172.31.31.2 3857 172.31.31.1 161 17 71 1 172.31.31.1 3 0 172.31.31.1 0 0 0 0 0 211052 1229943252.000 1229943252.000 172.31.31.1 161 172.31.31.2 3857 17 83 1 172.31.31.1 0 3 172.31.31.2 0 0 0 0 0 211052 1229943252.010 1229943252.010 172.31.31.2 3858 172.31.31.1 161 17 74 1 172.31.31.1 3 0 172.31.31.1 0 0 0 0 0 211052 1229943252.010 1229943252.010 172.31.31.1 161 172.31.31.2 3858 17 83 1 172.31.31.1 0 3 172.31.31.2 0 0 0 0 0 Глава 8. NFCOLLECT 25 8.7 Запуск NFcollect (секция не окончена) 8.7.1 О системном UDP буфере приема в различных операционных системах (секция не окончена) Приложение NFcollect, используемое в промышленных масштабах, принимает большое количество пакетов NetFlow, которые передаются от источников по протоколу UDP. При высоких нагрузках, системных установок по-умолчанию не достаточно. Пакеты UDP (и соответственно NetFlow) начинают либо "выпадать"либо совсем не доходят до приложения (размер выходных файлов NFcollect не увеличивается адекватно либо совсем не увеличивается). В таких ситуациях требуется настройка системы для обработки большого потока UDP пакетов увеличение системного буфера приема UDP. В UN*X системах размер системного принимающего буфера UDP ограничен специальными переменными среды окружения. Cистемный вызов (setsockopt), реально изменяющий размер буфера для конкретного приложения ограничен сверху этим значением. Подбор оптимального значения для таких переменных зависит от потока UDP, ресурсов сервера и лежит в зоне ответственности администратора системы-NetFlow коллектора. Приложения, не устанавливающие явно размер буфера, получают буфер размера по-умолчанию для данной операционной системы. Ниже приведены команды для разных ОС, задающие значение соответствующих системных переменных, для успешной установки системным вызовом setsockopt размер приемного UDP буфера в 128 Мб (134217728 байт). Linux : sysctl net.core.rmem_max=268435456 (необходимо задавать удвоенный объем буфера ) FreeBSD : sysctl -w kern.ipc.maxsockbuf=268435456 (необходимо задавать удвоенный объем буфера ) Solaris : /usr/sbin/ndd -set /dev/udp udp_max_buf 134217728 Windows : Ограничения на уровне системных переменных автору не известны. Данные команды должны быть выполнены непосредственно перез запуском NFcollect (традиционно в SHELL скриптах, запускающих NFcollect) 8.8 Различия между полной и бесплатной версиями NFcollect • Бесплатная версия не позволяет собирать NetFlow более чем с 2-х источников одновременно Глава 9 NFgroup 9.1 Назначение NFgroup NFgroup является специализированной (работающей в паре с NetFlower NFcollect) программой преобразования текстовых файлов из входного формата в выходной. Преобразование гибко управляется конфигурационными файлами. NFgroup запускается периодически (по мере готовности файлов с данными в исходном формате) системой cron или аналогичной. NFgroup предназначен для • Обработки • Сжатия (если необходимо) "на лету"выходных файлов алгоритмами – gzip (с опцией коэффициента сжатия 0-9) – bzip2 (с опцией коэффициента сжатия 0-9) • Генерации статистической информации 9.2 Схемы агрегации Введение понятия "Схем агрегации"направлено на рационализацию процесса сбора информации : • Уменьшение количества входных полей за счет отбрасывания незначимых • Уменьшение количества входящих строк за счет объединения строк, с совпадающими "ключевыми полями"за "Период агрегации" Компания Cisco Systems в руководстве по настройке своего продукта Cisco NetFlow Collector v 3.0 http://www.yars.free.net/CiscoCD/cc/td/doc/product/rtrmgmt/nfc/nfc_ 3_0/nfc_ug/nfctune.htm определяет 23 стандартных именованных схем агрегации: RawFlows, SourceNode, DestNode, HostMatrix, SourcePort, DestPort, Protocol, DetailDestNode, DetailHostMatrix, DetailInterface, CallRecord, ASMatrix1, NetMatrix1, 26 Глава 9. NFGROUP 27 DetailSourceNode, DetailASMatrix1, RouterAS2, RouterProtoPort2, RouterSrcPrefix2, RouterDstPrefix2, RouterPrefix2, AsHostMatrix1, HostMatrixInterface, DetailCallRecord. Все эти, а также произвольные другие, могут быть сконфигурированы в "файле описания схем агрегации"с некоторыми, оговариваемыми ниже, ограничениями. Схема RawFlows SourceNode Ключевые поля Поля значений srcadr DestNode dstadr HostMatrix srcadr dstadr SourcePort srcport DestPort dstport Protocol protocol DetailDestNode dstaddr, srcport, dstport, protocol DetailHostMatrix srcaddr, dstaddr, srcport, dstport, protocol DetailInterface srcaddr, dstaddr, input interface, output interface, nexthop srcaddr, dstaddr, srcport, dstport, protocol byte (prot), TOS packet count, byte count, flow count packet count, byte count, flow count packet count, byte count, flow count packet count, byte count, flow count packet count, byte count, flow count packet count, byte count, flow count packet count, byte count, flow count packet count, byte count, flow count, firstTimeStamp, lastTimeStamp packet count, byte count, flow count packet count, byte count, flow count, firstTimeStamp, lastTimeStamp, totalActiveTime packet count, byte count, flow count packet count, byte count, flow count packet count, byte count, flow count packet count, byte count, flow count packet count, byte count, flow count, firstTimeStamp, lastTimeStamp, totalActiveTime packet count, byte count, flow count, firstTimeStamp, lastTimeStamp, totalActiveTime packet count, byte count, flow count, firstTimeStamp, lastTimeStamp, totalActiveTime packet count, byte count, flow count, firstTimeStamp, lastTimeStamp, totalActiveTime packet count, byte count, flow count, firstTimeStamp, lastTimeStamp, totalActiveTime packet count, byte count, flow count, firstTimeStamp, lastTimeStamp, totalActiveTime packet count, byte count, flow count packet count, byte count, flow count, firstTimeStamp, lastTimeStamp, totalActiveTime CallRecord ASMatrix src_as, dst_as NetMatrix input interface, output interface, masked srcaddr, masked dstaddr, src_mask, dst_ mask srcaddr, srcport, dstport, protocol DetailSourceNode DetailASMatrix RouterAS srcaddr, dstaddr, srcport, dstport, protocol, input interface, output interface, src_as, dst_as input interface, output interface, scr_as, dst_as RouterProtoPort srcport, dstport, protocol RouterSrcPrefix input interface, src_as, masked srcaddr, src_mask RouterDstPrefix output interface, dst_as, masked dstaddr, dst_mask RouterPrefix input interface, output interface, src_as, dst_as, masked srcaddr, masked dst_addr, src_mask, dst_mask srcaddr, dstaddr, src_as, dst_as AsHostMatrix HostMatrixInterface DetailCallRecord srcaddr, dstaddr, protocol, input interface, output interface srcaddr, dstaddr, srcport, dstport, protocol, ToS, input interface, output interface Глава 9. NFGROUP 9.3 28 Опции командной строки –config (-c) задает путь к главному конфигурационному файлу –version (-V) 9.4 Возвращаемые значения Поскольку NFgroup • выполняет необратимые преобразования данных (конечной целью этих преобразований является замещение на диске исходных данных результирующими) • используется в пакетном режиме (то есть вызывается другим приложением) Глава 9. NFGROUP 29 9.5 Файлы конфигурации NFgroup 9.5.1 Главный файл конфигурации (NFgroup.conf) Опция scheme_config_fullpath Тип значения строка stat_config_fullpath строка input_dir_name строка threads_number целое число max_araws_number целое число compression_type compression_level вариант [bzip2|gzip|none] (по-умолчанию none) целое число aggregation_scheme строка use_statistics вариант [yes|no] умолчанию no) 9.5.2 Описание путь к файлу описания схем агрегирования путь к файлу конфигурации статистики путь к каталогу файлов, создаваемых NFcollect Количество легковесных процессов, используемых для агрегирования. Архитектура NFgroup предполагает параллельную обработку разных файлов отдельными легковесными процессами. Максимальная производительность достигается при использовании N нитей (легковесных процессов) на системе с N процессорными ядрами Предполагаемое количество строк после агрегации. Подбирается опытным путем. Слишком маленькое значение повышает риск нехватки памяти при неожиданных всплесках трафика. Слишком большое значение вызывает неоправданный расход памяти. значимо при наличии опции в методе сжатия : (0-9) для bzip2 имя одной из схем агрегации, описанной в конфигурационном файле схем (schemes.conf) (по- Файл описания схем агрегации (schemes.conf) Файл описания схем агрегации состоит из блоков, которые в свою очередь состоят из именованных секций, например : HostMatrix{ header{} options{} input{...} output{} Глава 9. NFGROUP 30 } SourceNode{ header{} options{} input{...} output{} } ... В данном примере в первом блоке определяется схема агрегации с именем HostMatrix. В текущей версии NFgroup секции, кроме input не используются (зарезервированы) но должны обязательно присутствовать и быть пустыми. Строка, начинающаяся с // ñ÷èòàåòñÿ êîììåíòàðèåì è èãíîðèðóåòñÿ ïàðñåðîì Формат секции input{} Секция input - таблица, состоящая обычно (для стандартных схем агрегации) из n+1 строк (n первых строк соответствуют полям выходных файлов NFcollect), например : input{ sequence_number begin_time end_time source_addr source_port dest_addr dest_port prot octets packets source_device input_interface output_interface nexthop tos src_as dst_as src_mask dst_mask flows dat dat dat key dat dat dat dat val val dat dat dat dat dat dat dat dat dat clc uint32 extended_timestamp extended_timestamp ipv4_addr port_uint16 ipv4_addr port_uint16 uint8 uint64 uint32 ipv4_addr uint16 uint16 ipv4_addr uint8 uint16 uint16 uint16 uint16 flows_uint32 = = = = = = = = self_add_int64 self_add_int32 = = = = = = = = = self_inc = = = unpack_ipv4 = = = = unpack_uint64 unpack_uint32 = = = unpack_ipv4 = = = = = unpack_uint32 последняя строка - для генерируемого поля (clc) на выходе NFgroup (т.е. соответствующего поля в выходных строках NFcollect нет), назначение таких полей описано ниже. Назначение полей : Поле 1: метка Имя поля фиксировано и является меткой соответствующего поля (по номеру строки в секции) строки выходного файла NFcollect. Поле 2: класс поля • key - ключевое поле, при совпадении всех ключевых полей записи объединяются в одну общую запись 99; 99; 99; 0; 99; 99; 99; 99; 2; 1; 99; 99; 99; 99; 99; 99; 99; 99; 99; 3; Глава 9. NFGROUP 31 • val - поле - значение, значение в агрегированной записи вычисляется путем применения "функции обработки"к значению полей агрегируемых строк, результат записывается в итоговую запись • dat - незначимые данные, поле игнорируется, в выводе не участвует • clc - вычислимое поле, вычисляется функцией обработки, применяемой к "старому"значению поля Поле 3 : Функция ввода (тип поля) Функции ввода обеспечивают преобразование входного текстового вида полей в их внутреннее представление. Фактически они определяют тип поля. • uint8 - целое без знака 1 байт • uint16 - целое без знака 2 байта • uint32 - целое без знака 4 байта • uint64 - целое без знака 8 байт • extended_timestamp - строка типа кол-во_секунд_с_1_января_1970_года.колво_миллисекунд_с_начала_прошедшей_секунды • ipv4_addr - текстовое представление ip адреса протокола ip v4 • port_uint16 до номера порта до 1024 включительно внутреннее представление совпадает, от 1025 до 65536 - представление по схеме 1025-9999 -> 1025, 10000-19999 -> 10000, ... , 60000-65535 -> 60000 • flows_uint_32 ?? (чем это отличается от uint32) Поле 4 : Функция обработки Функции обработки выполняют модификацию внутреннего представления полей, благодаря чему, в частности, происходит "агрегация данных". ! Текущим ограничением Функций обработки является невозможность использовать при вычислении нового значения значений других полей. • self_inc присваивает аргументу новое значение, равное увеличенному на 1 старому значению • self_add_int32 присваивает аргументу (размером 4 байта) новое значение, равное сумме старого и обрабатываемого поля • self_add_int64 присваивает аргументу (размером 8 байт) новое значение, равное сумме старого и обрабатываемого поля • self_min_int64 присваивает аргументу (размером 8 байт) новое значение, равное минимальному из старого и обрабатываемого поля • self_max_int64 присваивает аргументу (размером 8 байт) новое значение, равное максимальному из старого и обрабатываемого поля Глава 9. NFGROUP 32 Функции вывода Функции вывода обеспечивают преобразование внутреннего представления поля в его текстовый вид в выходном файле. • unpack_ipv4 - на выходе строка - ip адрес 4 версии ip протокола • unpack_uint8 - на выходе строка - символьное представление целого без знака числа размерностью 1 байт • unpack_uint16 - то же размерностью 2 байта • unpack_uint32 - то же размерностью 4 байта • unpack_uint64 - то же размерностью 8 байт • unpack_port_uint16 - до 1024 включительно - символьное представление числа, 1025 и более : – 1K_9K_Port (от 1025 до 9999 включительно) – 10K_19K_Port (от 10000 до 19999 включительно) – 20K_29K_Port (от 20000 до 29999 включительно) – 30K_39K_Port (от 30000 до 39999 включительно) – 40K_49K_Port (от 40000 до 49999 включительно) – 50K_59K_Port (от 50000 до 59999 включительно) – 60K_65K_Port (от 60000 до 65535 включительно) 9.5.3 Файл конфигурации записи в базу данных (db.conf) Сттроки файла представляют собой пары опция = значение Опция db_host db_name db_path db_user db_password db_sql_create db_sql_insert Тип значения Описание Опции, специфичные для СУБД MySQL строка Адрес сервера базы данных строка Имя базы данных Опции, специфичные для СУБД Firebird строка Путь к базе данных (firebird) строка Имя пользователя базы данных строка Пароль пользователя базы данных строка SQL выражение для создания базы данных строка SQL выражения для вставки строк в базу данных Допустимые типы значений : • строка - заключенная в двойные кавычки последовательность любых символов за исключением двойной кавычки и Глава 9. NFGROUP 9.5.4 33 Файл конфигурации статистики (stat.conf) В текущей версии есть поддержка некоторого вида статистики, в планах реализация реализации гибко настраиваемой статистики 9.6 Различия между полной и бесплатной версиями NFgroup • бесплатная версия не позволяет использовать многопоточную обработку данных (???) • бесплатная версия не позволяет изменять набор схем агрегирования (используются только преднастроенные схемы) 9.7 Потребляемые ресурсы (секция не окончена) Ключ, значение, Хэш на 32 разрядных платформах 4 байта указатель на ключ 4 байта длина ключа 4 байта указатель на данные 4 байта указатель на следующую структуру итого 16 байт на вспомогательную структуру для каждого ключа на 64 разрядных платформах 8 байт указатель на ключ 8 байт длина ключа 8 байт указатель на данные 8 байт указатель на следующую структуру итого 32 байта на вспомогательную структуру для каждого ключа 9.8 Статистика Текущая версия NFgroup поддерживает некоторые возможности генерации статистики. Однако, автор считает текущее состояние данной функции неприемлемым из-за недостаточной гибкости ее настройки. Развитие функционала генерации статистики одна из целей поставленных для достижения в рамках проекта NetFlower2. Те, кому все-таки интересна данная функция, могут обсудить ее с автором, написав электронное письмо. Глава 10 NFfilter 10.1 Назначение NFfilter NFfilter - приложение, работающее на стыке NFcollect и NFgroup. Задача NFfilter ограничить количество выходных строк, формируемых NFcollect, поступающих на вход NFgroup согласно критериям, определяемым в конфигурационном файле. NFfilter обрабатывает строки, поступающие со стандартного ввода. Строки, прошедшие согласно заданным критериям выводит на стандартный вывод. 10.2 Опциии командной строки NFfilter • -V : печать информации о NFfilter, выход без выполнения каких-либо других действий • -d : режим отладки, отладочная информация выводится в стандартный поток ошибок • -с путь_к_конфигурационному_файлу : чтение конфигурации из заданного файла • -f имя_фильтра : активация фильтра с заданным именем, определенного в конфигурационном файле 10.3 Формат конфигурационного файла NFfilter 10.3.1 Общее описание Файл конфигурации состоит из последовательности блоков, описывающих отдельные именованные фильтры. 34 Глава 10. NFFILTER 35 filter("Èìÿ\_ôèëüòðà\_1"){ ... } ... filter("Èìÿ\_ôèëüòðà\_N"){ ... } Блоки описания фильтров в свою очередь состоят из последовательности "разрешающих"/"запрещающих"блоков. Формат разрешающего блока : accept{ ... } Формат запрещающего блока : skip{ ... } "разрешающие"/"запрещающие"блоки имеют одинаковый синтаксис. Содержимое блока Фактически суперпозиция функций, описанных ниже. То есть, результаты некоторых функций подставляются в качестве аргументов в другую. Функции разбиты на 2 группы : • Условные функции в качестве аргументов принимают имя поля соответствующего типа в записях NetFlow, и константы соответствующего типа. Возвращают логическое значение в зависимости от выполнения условия, составляющего смысловую нагрузку функции. • Логические функции в качестве аргументов принимают логические значения (результаты выполнения условных и логических функций). Возвращают логические значения. 10.3.2 Базовые типы (для условных функций) Тип полей uint8 uint16 uint32 uint64 ipv4_addr extended_timestamp Функции, применимые к типу eq, lt, gt eq, lt, gt eq, lt, gt eq, lt, gt eq, in, in_net eq, lt, gt • eq - равно (2 аргумента) • lt - меньше чем (2 аргумента) Описание Целое беззнаковое длиной 1 байт Целое беззнаковое длиной 2 байта Целое беззнаковое длиной 4 байта Целое беззнаковое длиной 8 байт Ip адрес версии 4 UNIX таймстемп с миллисекундами Глава 10. NFFILTER 36 • gt - больше чем (2 аргумента) • in - в диапазоне (3 аргумента) • in_net - в рамках сети (3 аргумента) 10.3.3 Логические функции Логических функций 3: • and - (2 аргумент) возвращает "истину если значение "истина"имеют оба аргумента. В противном случае возвращает "ложь" • or - (2 аргумент) возвращает "истину если значение "истина"имеет хотябы один аргумент. В противном случае возвращает "ложь" • not - (1 аргумент) возвращает "истину если значение "истина"имеет хотябы один аргумент. В противном случае возвращает "ложь" 10.3.4 No 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Перечень и типы полей в записях NetFlow после NFcollect поле sequence_number begin_time end_time source_addr source_port dest_addr dest_port prot octets packets source input_interface output_interface nexthop tos src_as dst_as src_mask dst_mask тип uint32 extended_timestamp extended_timestamp ipv4_addr uint16 ipv4_addr uint16 uint8 uint64 uint32 ipv4_addr uint16 uint16 ipv4_addr uint8 uint16 uint16 uint16 uint16 внутреннее представление uint32_t uint64_t uint64_t uint32_t uint16_t uint32_t uint16_t uint8_t uint64_t uint32_t uint32_t uint16_t uint16_t uint32_t uint8_t uint16_t uint16_t uint16_t uint16_t пример 106581494 1196919883.922 1196919887.286 192.168.1.1 63042 192.168.1.2 80 6 97 1 192.168.1.254 9 1 192.168.1.10 0 0 0 0 0 Глава 10. NFFILTER 10.3.5 37 Пример конфигурационного файла filter("local_traffic"){ skip{ in(source_addr,"192.168.1.40","192.168.1.50") } accept{ or( ), } ) and( and( in(source_addr,"192.168.1.0","192.168.1.10"), eq(dest_port,80) in(source_addr,"192.168.1.20","192.168.1.30"), eq(dest_port,80) skip } filter("accept_all_traffic"){ accept } 10.3.6 Алгоритм "действия"конфигурационного файла NFfilter работает только с одним из сконфигурированных фильтров, называемым "активным". Активный фильтр требуется указать в командной строке запуска NFfilter в качестве аргумента ключа -f. Активный фильтр "применяется"к каждой строке входящего потока NFfilter. Блоки accept/skip применяются в порядке следования. Если результатом выполнения суперпозиции функций блока accept является "истина строка выводится в выходной поток. В противном случае строка пропускается. Для блока skip эти 2 правила действуют с точностью до наоборот. Если при проходе "сработал"некоторый условный блок, проход для данной строки прерывается. Блок accapt/skip без тела определяет для строк правило по-умолчанию. accept безусловно принимает все строки, skip пропускает.Каждый фильтр обязан содержать блок по-умолчанию (accept или skip). Этим достигается гарантированная определенность действия для любого смоделированного фильтра. Глава 11 Некоторые проблемы, причины и способы решения (Глава не окончена) Описание проблемы После инсталляции, коллектор не собирает потоки NetFlow 38 Платформа Windows Возможные причины не запущена служба "NetF