nfdump

Network Analysis v1.7.8 · 28.04.2026 активный

Инструменты для сбора и анализа NetFlow v5/v9/IPFIX и sFlow: мощная фильтрация и агрегация трафика с синтаксисом, похожим на tcpdump; поддержка геолокации IP и обогащения данными об автономных системах.

v1.7.8
28.04.2026 current
Добавлен 26.06.2026 · Обновлён 26.06.2026 · Network Analysis
Установка
# Kali / Debian / Ubuntu
sudo apt install nfdump

# Из исходников
sudo apt install libbz2-dev liblz4-dev
git clone https://github.com/phaag/nfdump
cd nfdump && autoreconf -i && ./configure && make && sudo make install

# Пример: чтение NetFlow файла
nfdump -r netflow.bin -s record/bytes

# Фильтрация по IP
nfdump -r netflow.bin 'src ip 192.168.1.0/24'
переведено ИИ

nfdump

Статус сборки

nfdump — это мощный набор инструментов для сбора, обработки и анализа данных NetFlow, IPFIX и sFlow от сетевых устройств. Он поддерживает расширенную фильтрацию, агрегацию и обогащение (геолокация, AS, Tor) данных потоков с акцентом на эффективность, гибкость и расширяемость.


Содержание


Возможности

  • Собирает данные NetFlow (v1, v5/v7, v9, IPFIX) и sFlow.
  • Преобразует трафик в реальном времени или файлы pcap в данные потоков.
  • Многопоточная обработка для высокопроизводительного анализа и сортировки.
  • Расширенная фильтрация и агрегация потоков (синтаксис фильтров похож на tcpdump, но оптимизирован для данных потоков).
  • Поддержка пользовательской агрегации потоков.
  • Обогащение записей потоков информацией о геолокации, AS и узлах выхода Tor.
  • Гибкие форматы вывода (текст, CSV, JSON и пользовательские).
  • По желанию интегрирует базы данных GeoDB (геопоиск/Maxmind) и TorDB (torlookup).
  • Инструменты-помощники для расширения функциональности и интеграции со стеками мониторинга.
  • Активно поддерживается и совместим с NfSen.

Совместимость

  • nfdump-1.7.x (кодовое название «unicorn») — текущая серия релизов.
  • Полностью совместим с файлами, созданными в nfdump-1.6.18 или новее.
  • Старые файлы потоков из более ранних версий могут не содержать определённых полей. Используйте nfdump-1.6.17 для обновления таких записей при необходимости.
  • Чтобы преобразовать старые файлы в новый формат:

sh ./nfdump -r old-flowfile -y -w new-flowfile

  • Примечание: Только nfdump может читать устаревшие файлы nfdump-1.6.x; все остальные программы требуют новый формат.
  • Пользователям NfSen: Обновите NfSen до последней версии на GitHub для полной совместимости. Некоторые устаревшие бинарные файлы (например, nfprofile, nftrack) всё ещё доступны, но могут быть удалены в будущих релизах.

Установка

Сборка для общего использования или создания пакета

nfdump использует систему сборки GNU autotools 2.71.

./autogen.sh
./configure
make
sudo make install

Сборка для локальной системы

Если вы планируете запускать инструменты на той же системе, где они были собраны, можно включить дополнительные оптимизации:

./autogen.sh
./configure --enable-native --enable-lto
make
sudo make install

Это включает оптимизации, специфичные для процессора (-march=native), и оптимизацию на этапе компоновки (-flto) для повышения производительности.

Docker

Смотрите extra/docker/README.md.

Сборка в CentOS 7.x

Убедитесь, что у вас установлен autotools 2.71.

yum install centos-release-scl
yum install devtoolset-8-gcc devtoolset-8-gcc-c++
scl enable devtoolset-8 -- bash

Сборка в Ubuntu 18.04 LTS

Убедитесь, что у вас установлен autotools 2.71.

sudo apt-get install clang-10
CC=clang-10 ./configure ...

Параметры конфигурации

По умолчанию ./configure собирает:

  • сборщики nfcapd, sfcapd
  • nfdump для обработки потоков
  • дополнительные инструменты geolookup и torlookup

Полный список можно получить, запустив ./configure --help. Параметры включают:

  • --enable-nfpcapd Собрать nfpcapd для создания NetFlow из трафика интерфейса или pcap (по умолчанию: НЕТ)
  • --enable-ja4 Включить все модули отпечатков JA4 (по умолчанию: НЕТ)
  • --enable-jnat Поддержка специального журналирования NAT JunOS (по умолчанию: НЕТ)
  • --enable-readpcap Включить чтение данных потоков из pcap-файлов в nfcapd (по умолчанию: НЕТ)
  • --enable-ftconv Собрать конвертер flow-tools в nfdump (по умолчанию: НЕТ)
  • --enable-nfprofile Собрать nfprofile и nftrack, необходимые для NfSen (по умолчанию: НЕТ)
  • --enable-devel Включить отладку и параметры для разработчиков. Только для разработчиков (по умолчанию: НЕТ)
  • --with-lz4=PATH, --with-zstd=PATH, --with-bz2=PATH Указать нестандартные пути установки для библиотек сжатия.
  • --enable-lto Включить оптимизацию на этапе компоновки (LTO), если она поддерживается. Это позволяет компилятору оптимизировать все исходные файлы во время финального этапа компоновки, повышая производительность и уменьшая размер исполняемого файла.
  • --enable-native Использовать -march=native для включения оптимизаций, специфичных для процессора сборки. Это включает векторизацию и настройку набора команд для локального процессора. Рекомендуется для локальных сборок, не для переносимых бинарных файлов.

По сравнению с предыдущими версиями, скрипт конфигурации изменился: многие инструменты, которые ранее требовали явного включения, теперь собираются автоматически. Старые параметры --enable-xxxpath=path заменены стандартными --with-xxx=path.

Библиотеки сжатия ищутся и интегрируются, если найдены. Если вы хотите явно отключить библиотеку и, следовательно, метод сжатия, используйте формат --enable-xxx=no. Это отключит указанную библиотеку.

Следующие параметры больше не существуют:

--enable-nsel Поддержка NSEL включена по умолчанию; вам нужно только изменить формат вывода, если вы предпочитаете устаревший формат line или long для NSEL/NAT. Соответствующие форматы fmt укажите в конфигурационном файле nfdump.conf.

Примечания:

  • Убедитесь, что в вашей системе есть autoconf 2.71.
  • Для более старых дистрибутивов Linux может потребоваться установка libbsd и libbsd-dev.

  • nfprofile — устаревший бинарный файл, используемый NfSen, и может быть перенесён в отдельный архив в будущем.


Основное использование

Экспортёр → nfcapd → nfdump → анализ/экспорт (CSV, JSON, InfluxDB, Prometheus)

nfdump предоставляет набор инструментов для сбора и обработки. Основные инструменты и примеры команд:

Запуск сборщика NetFlow

nfcapd -D -S 2 -w /flow_base_dir/router1 -p 23456

Просмотр собранных данных

nfdump -r /flow_base_dir/router1/nfcapd.202501011200

Фильтрация и агрегация потоков

nfdump -r flowfile 'src ip 192.0.2.1 and dst port 443' -A srcip,dstip

Обогащение геолокацией или информацией Tor

При необходимости включите и настройте базы данных geolookup/torlookup. Подробности смотрите в соответствующих страницах руководства (man geolookup, man torlookup).

Экспорт метрик

Отправляйте метрики в InfluxDB или совместимые с Prometheus инструменты, используя nfinflux или nfexporter.


Включённые инструменты

nfdump включает несколько связанных инструментов для расширенных рабочих процессов:

  • nfcapd Демон-сборщик NetFlow. Собирает потоки NetFlow версий v1/v5/v7/v9 и IPFIX от одного или нескольких экспортёров и сохраняет данные записей потоков в бинарные файлы nfdump.

  • sfcapd Демон-сборщик sFlow. Собирает потоки sflow v4/v6 (совместимые с sflowtool) от одного или нескольких экспортёров и сохраняет данные записей потоков в бинарные файлы nfdump.

  • nfpcapd Преобразует трафик в реальном времени с сетевого интерфейса хоста или захваченный в pcap-файл трафик в записи NetFlow. Сохраняет данные записей потоков в бинарные файлы nfdump или пересылает поток данных в запущенный сборщик nfcapd на другом хосте.

  • nfdump Читает бинарные файлы nfdump, фильтрует записи потоков и выполняет пост-обработку. Расширенный язык фильтрации (см. доступную шпаргалку) позволяет выбирать потоки для обработки. Пост-обработка включает:

  • Гибкую агрегацию потоков

  • Статистику потоков на основе любого элемента потока
  • Вывод списков потоков
  • Обогащение потоков дополнительной информацией о геолокации и/или узлах выхода Tor.

  • geolookup Поиск информации о стране, регионе, городе и, опционально, AS для IP-адресов. Для работы требуется база данных геолокации. Смотрите скрипт updateGeoDB.sh для создания базы данных.

  • torlookup Поиск информации об узлах выхода Tor для IP-адресов. Для работы требуется база данных TorDB. Смотрите скрипт updateTorDB.sh для создания базы данных.

  • nfanon Анонимизирует IP-адреса в записях потоков с использованием CryptoPAn.

  • nfexpire Управляет истечением срока хранения старых данных потоков.

  • nfreplay Повторно воспроизводит собранные данные NetFlow для другого сборщика.

  • ft2nfdump Конвертирует формат flow-tools в формат nfdump. (опционально собирается)

  • nfprofile и nftrack Программы, необходимые для NfSen. nfprofile фильтрует и организует потоки по профилям, а nftrack обеспечивает отслеживание портов для плагина PortTracker.

  • nfreader Фреймворк для пользовательского кода на C для обработки файлов nfdump. По умолчанию не устанавливается.

---

Сжатие

Собранные файлы данных могут быть сжаты с использованием LZO, LZ4, ZSTD или bzip2. - LZO и LZ4 встроены и по умолчанию не требуют внешних зависимостей. - ZSTD и bzip2 требуют системных библиотек, автоматически определяемых при сборке. - Для сжатия на лету используйте опцию -z, например -z=lz4.

Пример:

nfcapd -z=lz4 ...
  • Используйте bzip2 для максимального сжатия при архивировании; используйте LZ4 (рекомендуется) для быстрой и эффективной сжатия в реальном времени.

Как работает nfdump

nfdump предназначен для анализа как исторических, так и текущих данных NetFlow, обеспечивая непрерывный или ретроспективный мониторинг сетевого трафика. Система оптимизирована для скорости и эффективности, позволяя выполнять сложную фильтрацию и агрегацию записей потока с синтаксисом, аналогичным tcpdump.

Хранение и организация данных

  • Все собранные данные записываются на диск перед анализом, отделяя сбор от обработки.
  • Данные организуются в структуру каталогов на основе времени, обычно с ротацией файлов каждые 5 минут.

Пример структуры каталогов:

/flow_base_dir/router1
/flow_base_dir/router2

Каждый подкаталог соответствует разному источнику потока.

Пример ротации файлов:

nfcapd.YYYYMMDDhhmm (например, nfcapd.200907110845 содержит данные начиная с 11 июля 2009 08:45)

При интервале в 5 минут количество файлов в день составляет 288.

Сбор с нескольких источников

Хотя несколько источников потока могут быть отправлены в один коллекционер, рекомендуется запускать несколько коллекционеров в загруженных сетях.

Запуск двух коллекционеров на разных портах:

nfcapd -D -S 2 -B 1024000 -w /flow_base_dir/router1 -p 23456
nfcapd -D -S 2 -B 1024000 -w /flow_base_dir/router2 -p 23457

Сбор всех источников в один файл:

nfcapd -D -S 2 -w /flow_base_dir/routers -p 23456

Разделение собранных данных по источникам:

nfcapd -D -S 2 -n router1,172.16.17.18,/flow_base_dir/router1 \
       -n router2,172.16.17.20,/flow_base_dir/router2 -p 23456

Подробное описание всех опций смотрите в nfcapd(1).

Безопасность

  • Привилегии root не требуются, если не происходит привязка к портам < 1024.
  • nfcapd не имеет встроенного контроля доступа; для фильтрации IP-адресов полагайтесь на безопасность уровня хоста.

Анализ и фильтрация данных

Данные могут анализироваться из одного файла или путем объединения нескольких файлов. Выходные данные могут быть в формате ASCII-текста или в бинарном формате для дальнейшей обработки.

Пример:

nfdump -r /flow_base_dir/router1/nfcapd.202501011200

Синтаксис фильтров мощный и вдохновлен tcpdump, но адаптирован для данных потока. Например:

nfdump -r flowfile 'src ip 192.0.2.1 and dst port 443'

Правила фильтров можно комбинировать, потоки — агрегировать и выводить в различных форматах, включая CSV для постобработки.

Пример: Конфигурация NetFlow на маршрутизаторе Cisco

Включение NetFlow на интерфейсе:

interface fastethernet 0/0
 ip address 192.168.92.162 255.255.255.224
 ip route-cache flow

Экспорт данных NetFlow:

ip flow-export 192.168.92.218 9995
ip flow-export version 5 
ip flow-cache timeout active 5

Это разбивает долгоживущие потоки на 5-минутные сегменты. Можно установить любое количество минут от 1 до 60.

Пример полного экспорта NetFlow v9 с сэмплированием:

interface Ethernet1/0
 ip address 192.168.92.162 255.255.255.224
 duplex half
 flow-sampler my-map
!
!
flow-sampler-map my-map
 mode random one-out-of 5
!
ip flow-cache timeout inactive 60
ip flow-cache timeout active 1
ip flow-capture fragment-offset
ip flow-capture packet-length
ip flow-capture ttl
ip flow-capture vlan-id
ip flow-capture icmp
ip flow-capture ip-id
ip flow-capture mac-addresses
ip flow-export version 9
ip flow-export template options export-stats
ip flow-export template options sampler
ip flow-export template options timeout-rate 1
ip flow-export template timeout-rate 1
ip flow-export destination 192.168.92.218 9995

Подробную информацию о конфигурации NetFlow смотрите в документации вашего устройства.

Примечание: NetFlow v5 и v7 используют 32-битные счетчики, которые могут переполниться на загруженных маршрутизаторах. Чтобы избежать переполнения, уменьшите тайм-аут кэша потока. Все инструменты nfdump используют 64-битные счетчики внутри.

Заметки об архитектуре

  • Бинарный формат файла не зависит от версии NetFlow, но зависит от архитектуры (little vs. big endian).
  • Внутри вся обработка независима от IP-протокола (поддерживает IPv4 и IPv6).

Сэмплирование

По умолчанию частота сэмплирования равна 1 (без сэмплирования) или значению, указанному через -s. Если поток NetFlow содержит информацию о сэмплировании, это значение имеет приоритет. Nfcapd автоматически распознает сэмплирование, когда оно объявлено в опциональных шаблонах v9/IPFIX с установленными тегами (#302, #304, #305, #306, #48, #49, #50, #34, #35), или в неофициальном хаке заголовка v5. Данные о сэмплировании хранятся в полях информации о сэмплировании в записи потока.

Примечание: Не все платформы (или версии программного обеспечения поставщиков) поддерживают экспорт информации о сэмплировании в данных NetFlow, даже если сэмплирование настроено. Количество байтов и пакетов в каждой записи NetFlow автоматически умножается на частоту сэмплирования. Общее количество потоков не изменяется, так как это недостаточно точно (маленькие потоки против больших).


Поддержка NetFlow/NSEL/NAT

  • Поддерживает Cisco NSEL (Network Event Security Logging) и NEL (NAT Event Logging) через NetFlow v9.
  • Частично совместим с JunOS NAT Event Logging (включается через --enable-jnat).

Связанные проекты

  • go-nfdump: Чтение файлов nfdump на Go.
  • nfinflux: Экспорт метрик в InfluxDB.
  • nfexporter: Экспорт метрик для Prometheus.
  • NfSen: Устаревший графический интерфейс.
  • nfsen-ng: Проект Майкла Болли

Спонсорство

Если вы считаете nfdump полезным, пожалуйста, поддержите разработку:
GitHub Sponsors: phaag


Лицензия

nfdump выпущен под лицензией BSD. Подробности смотрите в файле LICENSE.


Поддержка и документация

  • Для подробных инструкций по использованию обращайтесь к man-страницам (man nfdump, man nfcapd и т.д.) или запустите любой инструмент с опцией -h.
  • Не стесняйтесь открывать задачи или запрашивать слияние.
  • По другим вопросам, пожалуйста, смотрите мой адрес электронной почты в файле AUTHORS.
  • Для получения последних обновлений посещайте репозиторий nfdump на GitHub.
Комментарии
Войдите, чтобы оставить комментарий