ntopng — открытый анализатор сетевого трафика с веб-интерфейсом. Он показывает, кто и куда ходит в вашей сети, какие приложения используют полосу, какие хосты создают подозрительную активность. В отличие от простого счётчика пакетов, ntopng разбирает протоколы, определяет приложения через nDPI и хранит историю. Разберём установку, настройку и практическую диагностику.
Что умеет ntopng
Инструмент слушает сетевой интерфейс, зеркальный порт коммутатора или поток NetFlow/sFlow/IPFIX. Он строит таблицы хостов, разговоров и потоков, считает объём трафика, определяет протоколы прикладного уровня и может отправлять оповещения при превышении порогов.
Веб-интерфейс по умолчанию слушает порт 3000. Данные хранятся в каталоге, а для долговременной статистики и оповещений подключают Redis. Для больших объёмов историю выгружают во внешнюю базу временных рядов.
Установка
В Debian и Ubuntu пакета может не быть в стандартном репозитории, поэтому подключают официальный репозиторий ntop. Для RHEL-совместимых систем тоже есть готовые пакеты. Ниже пример для Debian 12: сначала добавляют репозиторий, затем ставят Redis и ntopng.
sudo apt update
sudo apt install -y wget
sudo sed -i '/^deb/ s/$/ contrib/' /etc/apt/sources.list
wget https://packages.ntop.org/apt-stable/bookworm/all/apt-ntop-stable.deb
sudo apt install -y ./apt-ntop-stable.deb
sudo apt update && sudo apt install -y redis-server ntopng
Проверьте, что сервис слушает нужный порт и не открыт наружу:
ss -lntp | grep -E "3000|6379"
sudo journalctl -u ntopng -n 50 --no-pager
Базовая настройка
Главный конфигурационный файл — /etc/ntopng/ntopng.conf. В нём задают интерфейс, порт, каталог данных и параметры Redis. После правки перезапустите сервис и проверьте журнал.
# /etc/ntopng/ntopng.conf
--interface=eth0
--http-port=3000
--data-dir=/var/lib/ntopng
--redis=127.0.0.1:6379
--local-networks=192.168.0.0/16
--bpf-filter=not port 22
Параметр —local-networks задаёт локальные сети: без него ntopng может считать внутренним трафиком всё подряд. Если интерфейсов несколько, добавьте отдельные строки —interface. Для зеркального порта достаточно указать его имя, например mirror0.
sudo systemctl restart ntopng
ntopng --version
Первый вход и интерфейс
Откройте http://адрес-сервера:3000. При первом входе ntopng использует учётную запись admin. Сразу задайте надёжный пароль и ограничьте доступ через файрвол: интерфейс не предназначен для публикации в интернет.
В разделе Dashboard видно текущую скорость, число хостов и распределение по протоколам. Вкладка Hosts показывает активность по IP, Flows — отдельные соединения, Applications — распределение по приложениям. Фильтры позволяют быстро найти хост, который качает обновления или создаёт тысячи соединений.
- Hosts — трафик и порты конкретного адреса.
- Flows — активные и завершённые соединения.
- Applications — распознанные протоколы и сервисы.
- Alerts — события по порогам и подозрительной активности.
Сбор трафика с коммутатора
Самый простой способ — зеркалировать порт uplink на порт, где стоит сервер с ntopng. На коммутаторе это настраивается как port mirroring или SPAN. Такой вариант даёт полную картину, но требует пропускной способности и CPU.
Если зеркалирование недоступно, используйте экспорт потоков. Маршрутизатор или коммутатор отправляет NetFlow/IPFIX/sFlow на коллектор. Современные сборки ntopng умеют принимать такие потоки сами, но набор возможностей зависит от версии. Уточните в документации синтаксис интерфейса коллектора и откройте соответствующий UDP-порт только для источника экспорта.
sudo tcpdump -i eth0 -c 20 -nn 'not port 22'
sudo tcpdump -i eth0 -nn 'udp port 2055' -c 10
Команда tcpdump полезна для проверки: если пакеты не приходят на интерфейс, ntopng не сможет их показать. Проверяйте счётчики после каждого изменения. Сравните показатели на коммутаторе и в интерфейсе ntopng.
Оповещения и пороги
ntopng умеет сигнализировать о превышении полосы, скачках трафика, новых устройствах и подозрительных соединениях. Правила настраиваются в веб-интерфейсе и могут отправляться по почте или через webhook. Начните с нескольких понятных порогов: например, уведомление, если хост устойчиво отдаёт больше 50 Мбит/с или открывает более 500 соединений.
Не включайте все категории оповещений сразу — получите поток ложных срабатываний и перестанете их читать. Сначала неделя наблюдения, затем настройка порогов по реальной картине.
Хранение и экспорт данных
Локальная история ограничена размером диска. Для отчётов за месяцы и годы подключают внешнее хранилище: InfluxDB, ClickHouse или другую совместимую базу. Это также снижает нагрузку на сам ntopng.
Следите за каталогом данных и ротацией. Если диск заполнится, сервис может перестать писать статистику или работать нестабильно. Настройте мониторинг свободного места и отдельный раздел под /var/lib/ntopng.
df -h /var/lib/ntopng
du -sh /var/lib/ntopng
redis-cli info memory | grep used_memory_human
Производительность
Разбор каждого пакета требует CPU. На гигабитном канале с большим числом мелких соединений один сервер может не справиться. Помогают: выделенные ядра, отключение лишних проверок, фильтр BPF для отсечения служебного трафика и переход на сбор потоков вместо полного зеркала.
Для фильтрации используйте параметр —bpf-filter с выражением BPF. Например, чтобы исключить резервное копирование между подсетями, задайте правило на уровне интерфейса. Проверяйте нагрузку через top и счётчики потерь на сетевой карте. Начните с одного интерфейса и добавляйте новые только после замера нагрузки.
top -H -p $(pgrep -d, ntopng)
ip -s link show eth0
Безопасность и правовые рамки
Мониторинг трафика затрагивает персональные данные и тайну связи. Анализируйте только свою инфраструктуру, уведомляйте сотрудников и закрепляйте правила в локальных документах. Не сохраняйте содержимое чужих сообщений и не публикуйте дампы трафика.
Сам ntopng должен быть защищён: HTTPS через обратный прокси, сильный пароль, доступ по списку адресов, регулярные обновления. Redis не должен быть доступен из внешней сети.
Чек-лист
- Определите точку съёма трафика: зеркало порта или экспорт потоков.
- Задайте локальные подсети параметром -m.
- Ограничьте доступ к веб-интерфейсу и Redis.
- Настройте хранение истории и контроль свободного места.
- Включите только нужные оповещения и проверьте их на практике.
- Сверьте данные ntopng со счётчиками коммутатора.
Итог
ntopng даёт быстрый и наглядный ответ на вопрос «что происходит в сети». Он полезен для поиска перегрузок, разбора инцидентов и планирования полосы. Начинайте с зеркала порта и нескольких хостов, затем добавляйте экспорт потоков, историю и оповещения. Главное — заранее продумать производительность, хранение и законные границы мониторинга.