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

FreeBSD 10 и ntopng

Просмотров: 444Комментарии: 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)
Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена.

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

(обязательно)