LINUX.ORG.RU

nDPI как замена l7filter

 ,


23

17

Если кому интересно, то вот рецепт

На большом потоке ( >300мбит/с ) c большим числом протоколов (>20) используется примерно 40% одного ядра Intel(R) Xeon(R) CPU E31230@3.20GHz. Если поток больше или процессор слабее, то включаем RPS или используем сетевые карты с multi-queue и irq-affinity :)

Требуется много памяти. На каждое соединение расходуется примерно 800+264*0.7 байт.

Исходники теперь есть на https://github.com/vel21ripn/nDPI/tree/netfilter

★★★★★

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

достаточно libxt_ndpi.so

libipt_ - это для совместимости со старыми расширениями (ipv4-only)

vel ★★★★★
() автор топика
Ответ на: комментарий от vel
linux-vrfz:/ # pkg-config --variable=xtlibdir xtables
/usr/lib64/xtables

туда и положил его и ура!!! заработало)) Спасибо, без тебя никак.

Ща буду на 3,4 ядре пробовать на Debiane 7,5 - отпишусь по окончанию теста. Ты бы donation прилепил, на фонд развития патчей и ndpi-netfilter - ты просто столько делаешь и все на интузиазме)

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

ну с ndpi-netfilter IMHO все плохо - там чувак видимо забил на проект.

Похоже нужно в ntop-dev@ntop.org писать.

Я сейчас на перле написал небольшой парсер трафика BT. Часть BT-шного трафика проста в декодировании и понятна (и что важно - в ней есть полезная информация). А вот другая часть пока не совсем понятна и не яcно есть ли там полезная информация. Документации крайне мало.

А на счет энтуазизма - это открытый проект, развивают его те кому он нужен. Мне оно нужно. Спасение утопающих - дело рук самих утопающих. Но в одиночку трудно выявлять баги. Если кто-то займется тестированием, то это тоже пойдет на пользу дела. Есть идея попробовать перенести это на openwrt. Там бетта-тестеров больше :)

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

Я наконец-то решил зарегистрироваться) Мне бы на данный момент такой багаж знаний как у тебя - мог помочь тебе, но увы я вот только-только осознал, что нужно «достичь просветления» в кодинге (дабы подпиливать софт под свои нужды) и в итоге я могу только разве что помогать тестить. У меня достаточно много шлюзов, которым актуально обнаруживать ВТ трафик. Так что с радостью помогу с тестами.

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

Провел тест на Debian 7.5 с ядром 3.4.92. Ядро пропатчилось без проблем, собралось и установлено. Модули и все остальное тоже:

root@debianGW:/usr/src/nDPI-1.4.0.r7867_v2/ndpi-netfilter/ipt# lsmod | grep xt_ndpi
xt_ndpi               305190  2
nf_conntrack           57545  2 xt_ndpi,nf_conntrack_ipv4
x_tables               19042  3 xt_ndpi,ip_tables,iptable_filter

Правда после установки ndpi - ipp2p модуль перестал работать.

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

После изменения ядра НУЖНО пересобирать все модули.

Изменение размеров некоторых ядерных структур скорее всего приведет к краху ядра при попытке использования не пересобранных модулей.

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

на ubuntu 12.04.04 после установки ndpi ipp2p (сам модуль ipp2p не требует патчей ядра или его пересборки для установки - он добавлен в xtables) остался работать без проблем, а на debian 7.5 и OpenSuse 13.1 перестал работать:

root@debianGW:/home/ramadan# iptables -A FORWARD -m ipp2p --bit -j DROP
iptables: No chain/target/match by that name.

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

на ubuntu 12.04.04

root@ubuntuGW12:~# lsmod|grep x_tables
x_tables               34060  4 xt_ndpi,[b]xt_ipp2p[/b],iptable_filter,ip_tables

на debian 7.5

root@debianGW:/lib/xtables# lsmod|grep x_tables
x_tables               19042  3 xt_ndpi,ip_tables,iptable_filter

и там и там в /lib/xtables лежит libxt_ipp2p.so и там и там

pkg-config --variable=xtlibdir xtables
/lib/xtables

единственное различие в libxt_ipp2p.so на дебиане в начале файла две строчки, которых нет в файле на убунту:

w _ITM_deregisterTMCloneTable
w _ITM_registerTMCloneTables

попробовал

 apt-get install --reinstall xtables-addons-common
не помогло

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

Не то переустанвливал =) вот это помогло:

apt-get install --reinstall xtables-addons-dkms

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

да. nDPI мало завичит от версии ядра.

парсер DHT реально улучшает процент обнаружения BT.

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

Раньше понедельника можешь не ждать - похоже я завтра вечером свалю из города. Если к понедельнику не умрет, значит оно в принципе работоспособно и можно будет обновить архивы.

на https://nagios.guap.ru/ndpi/ есть мониторинг проиходящего тестирования. Последняя серия графиков самая интересная - каждый второй график проценты неизвестного трафика по 4-м потокам раздельно tcp/in tcp/out udp/in udp/out

Пока < 1%, но как говорится - если дела идут хорошо, это значит вы что-то не замечаете :)

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

в любом случае крутяк. До понедельника буду графики смотреть))

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

Там утечка памяти была такой, что я сам остановил процесс.

Прийду в себя после отдыха - продолжу.

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

три дня отдыхали так, что утром было трудно встать :)

На работе 3 для до отпуска - нужно выпонить некоторые работы.

Я пока собираю информацию о BT/DHT и образцы трафика для тестирования. Пока не понятно сколько время нужно хранить информацию о нодах/пирах ( а ее собирается много - 12000000 записей за час ).

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

Mother of God! 12 лямов Х_Х не удивительно, что до сих пор не написан L7 фильтр блокирующий торрент на 100% Я вот потихоньку просвещаюсь в программировании на СИ... такой путь еще пройти до минимального просвещения...

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

На неделю я уеду подальше от интернета.

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

Я пока собираю информацию о BT/DHT и образцы трафика для тестирования. Пока не понятно сколько время нужно хранить информацию о нодах/пирах ( а ее собирается много - 12000000 записей за час ).

Может по этой образцам поспрашивать на nag.ru (там сетевики тусуюся) ?

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

по доброму завидую) я вот жду не дождусь тоже в отпуск ходить)

ramadan
()

Вот что выходит при попытки подгрузить этот модуль:
root@wifi-master:/usr/src/nDPI-1.4.0.r7867_v2/ndpi-netfilter# modprobe xt_ndpi
ERROR: could not insert 'xt_ndpi': Cannot allocate memory
root@wifi-master:/usr/src/nDPI-1.4.0.r7867_v2/ndpi-netfilter#

Ядро:
root@wifi-master:/usr/src/nDPI-1.4.0.r7867_v2/ndpi-netfilter# uname -r
3.12.4-debilax
root@wifi-master:/usr/src/nDPI-1.4.0.r7867_v2/ndpi-netfilter#

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

Какой средний процент шифрованного и не шифрованного p2p трафика детектируется у Ваших последнийх ревизий? Я имею ввиду ревизии которые еще не выложили в паблик.

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

я уже этого не вспомню - дело было 2 месяца назад.

Я надеюсь, что на следующей неделе смогу заняться ndpi.

Там появились новые трудности - они перешли к версии 1.5 и много чего переписали ( в правильную сторону ) и выкинули кучу левого кода, НО совсем непонятно, будет ли оно после этого компилиться для ядра.

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

Кстати. Я тут заметил, что в ревизии 7740 не работает маркировка icmp.

root@aslanov:~# iptables-save -t mangle
# Generated by iptables-save v1.4.12 on Mon Sep 29 16:06:11 2014
*mangle
:PREROUTING ACCEPT [90:5943]
:INPUT ACCEPT [84:5525]
:FORWARD ACCEPT [6:418]
:OUTPUT ACCEPT [78:6375]
:POSTROUTING ACCEPT [84:6793]
-A PREROUTING -i ppp0 -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A PREROUTING -i ppp0 -m ndpi --proto ip_icmp -j MARK --set-xmark 0x14/0xffffffff
-A PREROUTING -i ppp0 -m mark --mark 0x14 -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A PREROUTING -i ppp0 -m mark --mark 0x14 -j RETURN
-A POSTROUTING -o ppp0 -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A POSTROUTING -o ppp0 -m ndpi --proto ip_icmp -j MARK --set-xmark 0x14/0xffffffff
-A POSTROUTING -o ppp0 -m mark --mark 0x14 -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A POSTROUTING -o ppp0 -m mark --mark 0x14 -j RETURN
COMMIT
# Completed on Mon Sep 29 16:06:11 2014

Пускаю пинг, но счетчики по нулям. Это только у меня так? Все протоколы не проверял, но http и ssh точно ловит. А icmp почему-то нет...

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

не пробовал. Но посмотрю.

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

Из хороших новостей - мне удалось смержить свои изменения с текущим svn R8369 (ndpi-1.5.1+) и запустить на тестирование. Если оно через пару суток не умрет, то выложу.

На счет ip_icmp - в новой версии оно работает. в 7740 отрезано все кроме udp/tcp, в 7867 icmp есть.

версии до 7867 нет смысла использовать.

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

Спасибо! Сегодня вечером попробую и отпишусь.

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

Вот у меня вопрос. При использовании опций ndpi, я так понял сперва идет --value, потом номер метки, потом уже указываем clsf это или mark?

То есть например маркировка p2p меткой 5 будет иметь вид

-t mangle -A POSTROUTING -m ndpi --bittorrent -j NDPI --value 5 --set-mark -ret

А для отправления в класс 1:5

-t mangle -A POSTROUTING -m ndpi --bittorrent -j NDPI --value 0X1005 --set-clsf -ret

Правильно я понимаю?

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

И еще. Как быть если я хочу распространить метку на соединение. ТО есть сделать connmark. Ведь его надо делать до RETURN.

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

1 - угу

в класс 1:5

-j NDPI --value 0X10005 --set-clsf -ret
В примере правильно написано - старшие 16 бит - major, 16 бит - minor

Про connmark - каждый решает сам метить или нет, есть же -j CONNMARK --save-mark

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

1. Ну если захочу делать connmark то ваши комбинации уже не прокатят получается? Ведь по идее должно быть так

-j MARK --set-mark 10
-j CONNMARK --save-mark
-j RETURN

2. И еще.

iptables -t mangle -A PREROUTING -m ndpi --proto ip_icmp -j NDPI --value 0x10205 --set-clsf
Прокатывает) Трафик отправляется в класс. Tc его видит. При этом
iptables -t mangle -A PREROUTING -m ndpi --proto ip_icmp -j CLASSIFY --set-class 1:205
ругается
CLASSIFY target: used from hooks PREROUTING, but only usable from FORWARD/OUTPUT/POSTROUTING

Это специально Вами сделано?) Если да, то почему iptables изначально не поддерживает в prerouting классификацию. Самому недавно очень этого не хватало, чтоб избавиться от маркировки трафика, и сразу отправлять его в класс.

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