Сетевой инженер часто видит только адреса, порты и объём байт. Этого мало, когда нужно понять, что именно занимает канал: видеозвонки, резервное копирование, обновления или необычный клиент. nDPI — открытая библиотека глубокой инспекции пакетов, которая определяет приложение по содержимому потока, а не только по номеру порта. В статье — сборка, практические команды, разбор результатов и честные ограничения метода.
Что даёт nDPI
Библиотека распознаёт сотни протоколов и приложений, объединяет их в категории и выставляет флаги риска. Она умеет смотреть TLS SNI, DNS-запросы, характерные последовательности байт, поведение потока и параметры рукопожатия. Результат — не «порт 443», а конкретное имя сервиса, например облачное хранилище, мессенджер или игра. Для администратора это основа инвентаризации: какие приложения реально используются в сети и насколько это соответствует политике.
nDPI не является системой блокировки. Это библиотека и набор утилит для анализа. На её основе строят панели мониторинга, например ntopng, или собственные приложения. Для фильтрации трафика нужен отдельный компонент, который принимает решение и применяет правило.
Установка и сборка
В некоторых дистрибутивах есть готовые пакеты, но версия в репозитории может отставать. Для стабильной работы удобнее собрать из исходников: проект нетребователен к ресурсам, а зависимости ставятся одной командой. На Debian и Ubuntu понадобятся компилятор, autotools, libpcap и вспомогательные библиотеки.
sudo apt install build-essential git autoconf automake libtool pkg-config \
libpcap-dev libjson-c-dev libnuma-dev libpcre2-dev
git clone --depth 1 https://github.com/ntop/nDPI.git
cd nDPI
./autogen.sh && ./configure && make -j"$(nproc)"
sudo make install && sudo ldconfig
После установки проверьте список протоколов: ndpiReader -h выводит параметры, а -a 0, -a 1 и -a 2 — протоколы, категории и типы рисков. Так вы увидите возможности своей версии.
ndpiReader -a 0 | head -40
ndpiReader -a 1 | head -30
ndpiReader -a 2 | head -30
Первый запуск на интерфейсе
Для живой съёмки нужны права root или capability на захват пакетов. Укажите интерфейс и ограничьте время, чтобы не держать процесс бесконечно. Флаг -s задаёт длительность в секундах, -v управляет подробностью вывода, а -f позволяет отфильтровать трафик на уровне BPF.
sudo ndpiReader -i eth0 -s 60 -v 2
sudo ndpiReader -i eth0 -s 30 -f "tcp port 443" -v 1
sudo ndpiReader -i eth0 -s 120 -w /var/tmp/sample.pcap
Если протокол определён как Unknown, это не обязательно проблема: трафик может быть шифрованным или коротким. Сохраните pcap и разберите его повторно, не нагружая боевой интерфейс.
Разбор pcap и выгрузка результатов
Сохранённый дамп удобен тем, что его можно анализировать многократно и сравнивать до и после изменений. ndpiReader читает pcap напрямую, поддерживает фильтры и умеет выгружать статистику потоков в CSV. Колонки включают адреса, порты, протокол, SNI, объёмы и тайминги — этого достаточно для первичной аналитики в таблице.
ndpiReader -i /var/tmp/sample.pcap -v 2
ndpiReader -i /var/tmp/sample.pcap -C /var/tmp/flows.csv -F
column -s'|' -t /var/tmp/flows.csv | head -20
CSV стоит открывать не в браузере, а в таблице или разбирать скриптом: строк может быть десятки тысяч. Обратите внимание на поле proto_stack — там видна цепочка протоколов, например TLS поверх TCP. Поле server_name_sni помогает понять, к какому домену шло соединение, даже если IP принадлежит CDN.
Как устроена классификация
Сначала nDPI пытается определить протокол по порту и IP, но это лишь подсказка. Затем вступает анализ содержимого: сигнатуры в первых пакетах, структура TLS-рукопожатия, DNS-имена, характерные запросы HTTP. Для некоторых протоколов используется поведенческая эвристика: размеры пакетов, направление и ритм обмена. Если уверенности нет, поток может остаться неопределённым до появления новых данных.
Флаги риска — отдельный слой. Библиотека отмечает несоответствие порта протоколу, проблемные шаблоны и аномалии TLS. Это не замена антивирусу, а повод посмотреть на поток внимательнее; ложные срабатывания возможны.
Ограничения шифрованного трафика
Чем больше трафика уходит в TLS 1.3 и QUIC, тем меньше видно в пакетах. SNI всё чаще скрывается с помощью ECH, а QUIC прячет не только содержимое, но и часть метаданных. nDPI всё равно может опираться на IP-адреса, DNS, размеры и тайминги, но точность падает. Поэтому не стоит строить отчёты на предположении, что каждый поток будет назван идеально.
Практический вывод: используйте классификацию как обзор, а не бухгалтерию. Для критичных сервисов комбинируйте сетевые данные с журналами приложений и DNS, а телеметрию с конечных точек предпочитайте догадкам.
ntopng как панель
ntopng использует nDPI для определения приложений и показывает трафик в веб-интерфейсе. Для небольшой сети достаточно установить пакет, запустить сервис и открыть панель на порту 3000. Интерфейс стоит выбирать явно, а каталог данных — на диске с запасом: история быстро растёт.
sudo apt install ntopng redis-server
sudo systemctl enable --now redis-server
sudo ntopng -i eth0 -d /var/lib/ntopng
# панель: http://server-ip:3000
В настройках ограничьте доступ к панели доверенной подсетью и задайте пароль администратора. По умолчанию интерфейс не предназначен для публикации в интернет. Если сеть сегментирована, снимайте трафик с зеркала порта коммутатора, а не с одного хоста: иначе вы увидите только его собственный обмен.
Производительность и точка съёма
Глубокая инспекция — это дополнительная работа на каждый пакет. На гигабитном канале обычный сервер справляется, но на 10G без аппаратного ускорения или грамотного распределения потоков по ядрам возможны потери. Следите за счётчиками дропа на интерфейсе и за загрузкой CPU. Для пассивного анализа лучше зеркало порта или сетевой тап, чем установка агента на маршрутизаторе.
Ограничивайте захват фильтром и временем. Не храните pcap с персональными данными дольше нужного. Снимайте только свои сегменты и только те данные, на которые есть право.
Чек-лист внедрения
- Собран актуальный nDPI, проверены списки протоколов и рисков.
- Съём ведётся с зеркала порта или тапа, а не со случайного хоста.
- Заданы фильтр BPF и ограничение по времени.
- pcap хранится ограниченное время и в защищённом каталоге.
- Результаты проверены на нескольких источниках, а не на одном потоке.
- Учтены ограничения TLS 1.3 и QUIC.
- Панель ntopng закрыта от публичного доступа.
- Мониторинг согласован с политикой организации.
Итог
nDPI даёт понятную картину приложений без привязки к вендору. Начните с разбора одного pcap: соберите дамп на зеркале, выгрузите CSV и посмотрите, какие категории доминируют. Затем подключите ntopng и настройте сроки хранения.