Архив заметок

FreeBSD 10 и ntopng

Просмотров: 4428Комментарии: 0
FreeBSD

Небольшая заметка с хабра:

Ntop это сетевой зонд, который показывает использование сети подобно *nix приложениям top и processes.

Спустя 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"

Но я указал путь к конфигурационному файлу, где необходимые флаги указал. Сделал это по причине того, чтобы не захламлять конфиг автозапуска демоновsmile

Так же можно определить идентификатор интерфейса, если это необходимо:

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

mysqllocalhostntopngflowsntopngntopngpassword
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

Интерфейс:

и еще

Учтите, что учет сетевой активности жрет очень много места на диске. Меньше ,чем за сутки работы бд съела почти 800 мегабайт.

Журнал использования бд 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)

Вы можете войти под своим логином или зарегистрироваться на сайте.