Небольшая заметка с хабра:
Спустя 15 лет с момента представления оригинального ntop, пришло время создать новый, современный ntop. Мы называем его ntopng, ntop next generation (ntop следующее поколение)
Ради эксперимента и наличии свободного времени, решился поиграться на своем медиа сервере под управлением фряхи.
Не буду вдаваться в лирику, приступим.
Что имеем:
root@beast:/ # uname -srm FreeBSD 10.4-RELEASE-p7 amd64 root@beast:/ #
Установим сам зонд
root@beast:/ # portmaster net/ntopng
Есть фишка хранить сетевые данные в бд MySQL. Как ставить данную субд я описывать не буду, в инете полно руководств.
Поехали дальше.
Для корректной работы зонда надо еще поставить бд redis.
root@beast:/ # portmaster databases/redis
Обращаю внимание, что без redis данная тулза категорически отказывается запускаться.
[Redis.cpp:34] ERROR: Unable to connect to redis 127.0.0.1:6379
Добавим в файлик /etc/rc.conf следующие строки:
ntopng_enable="YES" ntopng_flags="/usr/local/etc/ntopng.conf" redis_enable="YES"
Можно в /etc/rc.conf добавить сразу необходимые флаги для запуска зонда, например:
ntopng_flags="-G=/var/tmp/ntopng.pid --local-networks "192.168.1.0/24" --interface bge0"
Но я указал путь к конфигурационному файлу, где необходимые флаги указал. Сделал это по причине того, чтобы не захламлять конфиг автозапуска демонов
Так же можно определить идентификатор интерфейса, если это необходимо:
root@beast:/ # ntopng -i ntopng: option requires an argument -- i 19/Mar/2018 12:24:07 [Ntop.cpp:1485] Setting local networks to 127.0.0.0/8 19/Mar/2018 12:24:07 [Redis.cpp:111] Successfully connected to redis 127.0.0.1:6379@0 19/Mar/2018 12:24:07 [Redis.cpp:111] Successfully connected to redis 127.0.0.1:6379@0 Data segment size exceeds process limit Abort trap 19/Mar/2018 12:24:07 [PcapInterface.cpp:88] Reading packets from interface bge0... 19/Mar/2018 12:24:07 [Ntop.cpp:1612] Registered interface bge0 [id: 0] 19/Mar/2018 12:24:07 [PcapInterface.cpp:88] Reading packets from interface lo0... 19/Mar/2018 12:24:07 [Ntop.cpp:1612] Registered interface lo0 [id: 1] 19/Mar/2018 12:24:07 [main.cpp:301] PID stored in file /var/run/ntopng.pid
Таки почти все готово к запуску. Конфиг:
root@beast:/ # cat /usr/local/etc/ntopng.conf -G=/var/tmp/ntopng.pid --daemon= --interface=bge0 --local-networks=192.168.1.0/24 --dns-mode=3 --dump-flows=mysql;localhost;ntopng;flows;ntopng;ntopngpassword --verbose
Расшифровка флага --dump-flows
mysql | localhost | ntopng | flows | ntopng | ntopngpassword |
---|---|---|---|---|---|
mysql | имя хоста|сокет | наименование бд | наименование таблицы | пользователь | пароль |
Для сохранения сетевых потоков в мускуле надо создать базу с пользователем. Эту часть я опущу, так как предостаточно руководств по подобной тематике.
Запускаем зонд:
root@beast:/ # /usr/local/etc/rc.d/ntopng start
Проверяем журнал на ошибки:
root@beast:/ # tail -f /var/tmp/ntopng/ntopng.log 18/Mar/2018 17:10:39 [Ntop.cpp:385] Welcome to ntopng amd64 v.3.2.180315 - (C) 1998-17 ntop.org 18/Mar/2018 17:10:39 [Ntop.cpp:677] Adding 192.168.1.3/32 as IPv4 interface address for bge0 18/Mar/2018 17:10:39 [Ntop.cpp:685] Adding 192.168.1.0/24 as IPv4 local network for bge0 18/Mar/2018 17:10:39 [PeriodicActivities.cpp:59] Started periodic activities loop... 18/Mar/2018 17:10:39 [PeriodicActivities.cpp:100] Each periodic activity script will use 2 threads 18/Mar/2018 17:10:39 [NetworkInterface.cpp:2326] Started packet polling on interface bge0 [id: 0]... 18/Mar/2018 17:10:39 [NetworkInterface.cpp:1935] Invalid packet received [len: 2946][max-len: 1518]. 18/Mar/2018 17:10:39 [NetworkInterface.cpp:1936] WARNING: If you have TSO/GRO enabled, please disable it 18/Mar/2018 17:10:40 [MySQLDB.cpp:682] Attempting to connect to MySQL for interface bge0... 18/Mar/2018 17:10:40 [MySQLDB.cpp:723] Successfully connected to MySQL [ntopng@localhost:3306] for interface bge0
Вроде полет нормальный. Веб интерфейс встроенный, никаких плясок с бубнами по настройке апачей или нгинкса не требуется.
Открываем браузер по адресу http://ваш_ip_адрес:3000, по умолчанию логин и пароль admin,admin
Чтобы можно было без аутентификации заходить в админку, добавляете флаг:
--disable-login=1
Слушать только localhost (при установке данного флага, вы не сможете зайти удаленно):
--http-port=:3000
Не резолвить имена:
--dns-mode=3
Указать сразу несколько сетей:
--local-networks=192.168.2.0/24,10.0.0.0/8,8.8.8.0/24
Интерфейс:
и еще
Вы можете войти под своим логином или зарегистрироваться на сайте.