Небольшая заметка с хабра:
Спустя 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
Интерфейс:
и еще
Журнал использования бд ntopng
root@beast:/ # mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8715 Server version: 5.6.39-log Source distribution Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | ntopng | | performance_schema | | zabbix | +--------------------+ 5 rows in set (0.00 sec) mysql> use ntopng; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> SHOW TABLES; +------------------+ | Tables_in_ntopng | +------------------+ | flowsv4 | | flowsv6 | +------------------+ 2 rows in set (0.00 sec) mysql> DESCRIBE flowsv4; +----------------------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------------+----------------------+------+-----+---------+----------------+ | idx | int(11) | NO | MUL | NULL | auto_increment | | VLAN_ID | smallint(5) unsigned | YES | | NULL | | | L7_PROTO | smallint(5) unsigned | YES | | NULL | | | IP_SRC_ADDR | int(10) unsigned | YES | | NULL | | | L4_SRC_PORT | smallint(5) unsigned | YES | | NULL | | | IP_DST_ADDR | int(10) unsigned | YES | | NULL | | | L4_DST_PORT | smallint(5) unsigned | YES | | NULL | | | PROTOCOL | tinyint(3) unsigned | YES | | NULL | | | IN_BYTES | int(10) unsigned | YES | | NULL | | | OUT_BYTES | int(10) unsigned | YES | | NULL | | | PACKETS | int(10) unsigned | YES | | NULL | | | FIRST_SWITCHED | int(10) unsigned | YES | MUL | NULL | | | LAST_SWITCHED | int(10) unsigned | YES | | NULL | | | INFO | varchar(255) | YES | | NULL | | | JSON | blob | YES | | NULL | | | NTOPNG_INSTANCE_NAME | varchar(256) | YES | MUL | NULL | | | INTERFACE_ID | smallint(5) | YES | | NULL | | +----------------------+----------------------+------+-----+---------+----------------+ 17 rows in set (0.00 sec) mysql> SELECT table_name AS `flows4`,round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` FROM information_schema.TABLES WHERE table_schema = "ntopng"; +---------+------------+ | flows4 | Size in MB | +---------+------------+ | flowsv4 | 762.80 | | flowsv6 | 0.16 | +---------+------------+ 2 rows in set (0.02 sec)
Вы можете войти под своим логином или зарегистрироваться на сайте.