LINUX.ORG.RU
ФорумAdmin

nDPI как замена l7filter [продолжение2]

 , ,


7

8

Продолжение предыдущей темы

Оригинальный рецепт для тех кто умеет самостоятельно прикладывать патчи и собирать ядра/софт.

Отдельно и более подробно для Ubuntu и CentOS от as_lan

В понятиях netfilter оно умеет проверять пакеты на принадлежность к протоколам (match) и ставить на пакеты метки/классы (target) по аналогии с MARK & CLASSIFY. Есть поддержка NET_NS и IPv6.

Исходники теперь только на Github!

Ветка netfilter основана на nDPI-1.7.

От основной ветки на github/ntop/nDPI/1.7-stable отличается меньшим потреблением памяти и «улучшением» определения bittorrent.

Ветка netfilter2 основана на nDPI-2.0

Ветка netfilter-2.2 основана на nDPI-2.3(dev)

Ветка netfilter-2.6 основана на nDPI-2.6

Ветка flow основана на nDPI-2.6 nDPI-2.8

Продолжается тестирование ветки.

информации о соединении:

  • время создания коннекта и время последнего обновления.
  • протокол L3 и L4
  • адрес источника ipv4/6
  • порт источника (если есть)
  • адрес назначение ipv4/6
  • порт назначения (если есть)
  • счетчики пакетов и байтов в обе стороны
  • интерфейсы
  • обнаруженный протокол (nDPI)
  • имя сертификата SSL
  • имя хоста (для http,dns)
  • информация о nat ipv4 (если применялся)

В некоторых случаях можно будет отказаться от ipt_NETFLOW.

★★★★★

Последнее исправление: vel (всего исправлений: 6)

Ответ на: комментарий от stasn77

all=2 удаление накопленных данных сверх установленного лимита.

Но смущает «Delete 0 flows»

При следующем чтении flows в первых строках должна быть «LOST_TRAFFIC xxx xxx xxx xxx»

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

Вот и меня это смутило. И вообще не понял откуда там столько их взялось при количестве в коннтреке около 48тыс всего, а модуль загружался с limit=1000000! LOST_TRAFFIC не смотрел, так как скрипт разбирает раз в 5мин все и удаляет исходные данные после (

[215008.618355] ndpi_delete_acct: all=2 rem 1746117 skip_del 750000
[215008.632340] ndpi_delete_acct: Delete 0 flows. Active 235013
[215008.861380] nflow_read: Start dump(0): CT total 235192 deleted 1746472
[215009.170794] nflow_read: End   dump(0): CT total 39367 deleted 1550774
[215009.648371] ndpi_delete_acct: all=2 rem 1551319 skip_del 750000
[215009.652063] ndpi_delete_acct: Delete 0 flows. Active 39757

Выгрузил-вгрузил модуль и дальше все пошло нормально как обычно.

stasn77
()
Ответ на: комментарий от vel

Еще если загрузить чем-нибудь процессор, то может появляться вот такое:

[Wed Jul  3 09:19:35 2019] ndpi_delete_acct: all=3 rem 0 skip_del 0
[Wed Jul  3 09:19:35 2019] ndpi_delete_acct: Delete 0 flows. Active 0
[Wed Jul  3 09:20:00 2019] nflow_read: Start dump(0): CT total 158494 deleted 146831
[Wed Jul  3 09:20:00 2019] nflow_read: End   dump(0): CT total 28304 deleted 16566
[Wed Jul  3 09:20:06 2019] ndpi_delete_acct: all=3 rem 0 skip_del 0
[Wed Jul  3 09:20:06 2019] ndpi_delete_acct: Delete 0 flows. Active 0
stasn77
()
Ответ на: комментарий от stasn77

Если лимит 1М, то все почти нормально,

3/4 от лимита не удаляется (skip_del=750k).

ndpi_delete_acct: Delete 0 flows.

Вот это странно

Active 235013

Это нормально, т.к. после этого 750к+235к < 1M

только вот как достигнуть 1.7М при лимите в 1М - я пока не понял.

Есть какая-то не очень страшная проблема.

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

Что-то где-то все-таки не удаляется во время дампа ( За сутки значение deleted постепенно растет и не зависит особо от реальной активности и количества удаленных сессий с прошлого дампа. Перезагружаем модуль и видим картину похожую на правду:

[Mon Jul  8 05:04:58 2019] nflow_read: Start dump(0): CT total 116193 deleted 475796
[Mon Jul  8 05:04:58 2019] nflow_read: End   dump(0): CT total 17714 deleted 377336
[Mon Jul  8 05:09:58 2019] nflow_read: Start dump(0): CT total 116184 deleted 475657
[Mon Jul  8 05:09:58 2019] nflow_read: End   dump(0): CT total 18490 deleted 378022
[Mon Jul  8 05:14:15 2019] ndpi_delete_acct: all=3 rem 481202 skip_del 0
[Mon Jul  8 05:14:15 2019] ndpi_delete_acct: Delete 102440 flows. Active 0
[Mon Jul  8 05:14:15 2019] xt_ndpi v1.2 ndpi 2.8.0-1525-7f64f39 IPv6=YES debug_message=no
                            BT: hash_size 128k, hash_expiation 1800 sec, log_size 0kb
                            sizeof hash_ip4p_node=44 id_struct=296 PATRICIA_MAXBITS=128
                            flow_struct=2064 packet_struct=1400
                              flow_tcp_struct=42 flow_udp_struct=27 int_one_line_struct=16
                            ndpi_ip_addr_t=16 ndpi_protocol=8 nf_ct_ext_ndpi=176
                            spinlock_t=4
                            NF_EXT_ID 9
[Mon Jul  8 05:14:15 2019] xt_ndpi: MAX_PROTOCOLS 320 LAST_PROTOCOL 243
[Mon Jul  8 05:14:15 2019] xt_ndpi: flow acctounting ON
[Mon Jul  8 05:14:15 2019] parse_ndpi_flow: set limit=5000000
[Mon Jul  8 05:14:15 2019] parse_ndpi_flow: set timeout=330
[Mon Jul  8 05:14:58 2019] nflow_read: Start dump(0): CT total 14616 deleted 6090
[Mon Jul  8 05:14:58 2019] nflow_read: End   dump(0): CT total 8505 deleted 29
[Mon Jul  8 05:19:58 2019] nflow_read: Start dump(0): CT total 108521 deleted 98301
[Mon Jul  8 05:19:58 2019] nflow_read: End   dump(0): CT total 10989 deleted 874
[Mon Jul  8 05:24:58 2019] nflow_read: Start dump(0): CT total 105964 deleted 95975
[Mon Jul  8 05:24:58 2019] nflow_read: End   dump(0): CT total 11713 deleted 1695
stasn77
()
Ответ на: комментарий от stasn77

Что-то где-то все-таки не удаляется во время дампа

[Mon Jul 8 05:09:58 2019] nflow_read: Start dump(0): CT total 116184 deleted 475657

На момент начала чтения у тебя было 116184 активных записей и 475657 записей про закрытые коннекты.

[Mon Jul 8 05:09:58 2019] nflow_read: End dump(0): CT total 18490 deleted 378022

а после окончания чтения активных записей осталось 18490, а удаленных 378022.

IMHO странно, что после чтения сильно сократилось число записей об активных соединениях, а число удаленных сократилось на четверть.

А как читается /proc/net/xt_ndpi/flows ? Я читаю через cat /proc/net/xt_ndpi/flows >tmpfile

Читать и парсить на ходу - плохая мысль. Нужно быстро забрать все данные, а потом уже их разбирать.

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

Читаю точно так же в промежуточный файл, а потом уже парсинг из него.

Смысл вывода я понимаю. Не понимаю откуда столько удаленных берется постоянно каждые 5 минут, как будто они не доудаляются при чтении. А после перезагрузки модуля их сразу становится сильно меньше за те же промежутки времени.

stasn77
()
Ответ на: комментарий от stasn77

Хм, а сколько у тебя лимит? LOST_TRAFFIC не появляется ?

Какой и сколько процессоров используется в системе? Сколько памяти? Какое ядра?

У тебя весь сетевой трафик анализируется или только часть? Не попадает ли туда локальный трафик ? Т.е. тот который попадает в ndpi, но не попадает в "-j NDPI --flow-info"

vel ★★★★★
() автор топика
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

Лимит увеличен до 5млн. после того как переполнился 1млн недавно. LOST_TRAFFIC не появлялся. E3-1230 V2 @ 3.50GHz. Выделено под это дело 2 ядра, загрузка каждого не превышает 25%. Памяти в избытке, занято в худшем случае 750мб. Ядро 4.19.57. Анализируется только транзитный трафик, локальный точно не попадает. На этом сервере всего 500мбит/с пролетает. Т.е. с ресурсами все ОК.

Дело в том, что вот днем сейчас:

[Mon Jul  8 13:44:57 2019] nflow_read: Start dump(0): CT total 396029 deleted 454472
[Mon Jul  8 13:44:58 2019] nflow_read: End   dump(0): CT total 47455 deleted 105850

conntrack -C
49370
потом ночью нагрузка и активность упадет, а deleted уменьшится незначительно, пока не перезагрузишь модуль. Раньше как-то не следил и дошло до того что при лимите 1млн накопилось удаленных 1.7млн (я писал выше).

stasn77
()
Ответ на: комментарий от vel

Постепенно растет значение deleted в строке «End dump». А в «Start dump» при этом не уменьшается при спаде активности. Вчера сутки отслеживал.

stasn77
()
Ответ на: комментарий от stasn77

nflow_read: End dump(0): CT total 47455 deleted 105850

conntrack -C

49370

хм. То, что после чтения «total 47455» близок к «conntrack -C», это хорошо.

А вот «deleted 105850» - это плохо.

Пока не могу представить эту ситуацию, но попробую посмотреть.

vel ★★★★★
() автор топика
Ответ на: комментарий от stasn77

nflow_read: Start dump(0): CT total 396029 deleted 454472

У меня нет таких сообщений «dump(0)» !

... nflow_read: Start dump: CT total 233754 deleted 177986
Попробуй обновить.

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

Я уже и сам в исходники посмотрел - ничего из того, что там может писать - нету в дмесге и ошибок при копировании тоже нет )

В скобках это у меня тип дампа выводится, в самом начале когда экспериментировал, так и осталось...

stasn77
()
Ответ на: комментарий от vel

А так версия последняя с гита.

Есть еще тестовая машинка где в коннтреке не более 1000 записей обычно и там такого эффекта не наблюдается, все красиво...

а на более нагруженной постоянно растет:

[Mon Jul  8 15:24:57 2019] nflow_read: Start dump: CT total 332044 deleted 295353
[Mon Jul  8 15:24:58 2019] nflow_read: End   dump: CT total 38378 deleted 1801
[Mon Jul  8 15:29:58 2019] nflow_read: Start dump: CT total 378423 deleted 341517
[Mon Jul  8 15:29:58 2019] nflow_read: End   dump: CT total 40008 deleted 2927
[Mon Jul  8 15:34:57 2019] nflow_read: Start dump: CT total 384199 deleted 347727
[Mon Jul  8 15:34:58 2019] nflow_read: End   dump: CT total 40791 deleted 4243
[Mon Jul  8 15:39:58 2019] nflow_read: Start dump: CT total 403452 deleted 366503
[Mon Jul  8 15:39:58 2019] nflow_read: End   dump: CT total 42531 deleted 5544
за 10 часов постепенно по 1000-1500 каждые 5 минут выросло до 132+ тыс.

stasn77
()
Ответ на: комментарий от stasn77

Я добавил отладочный вывод (commit 1cfd9bcf3324c6e9bdbba04aa038fd563ba549bb)

Доп. данные будут выводится в dmesg только после

«echo 1 >/sys/module/xt_ndpi/parameters/flow_read_debug»

Если нужно отключить то «echo 0» туда же.

Попробуй читать данные из flow через dd if=/proc/net/xt_ndpi/flows bs=256k of=....

При каждом чтении будет выведено число просмотренных записей, сколько передано и сколько удалено.

Очень интересно, что оно у тебя покажет.

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

сюда дмесг полностью не вмещается - отправил на почту

stasn77
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.