Comments (6)
В conntrack, в connlabel (128bit) хранится адрес структуры. На разных хостах адреса структур будут разные. При такой схеме синхронизация невозможна принципиально.
Чтобы хоть как-то синхронизовать ноды нужно решить 2 проблемы: падение и синхронизация данных о соединених самого nDPI.
Чтобы избежать падения нужно как минимум иметь разные MAGIC_CT на разных хостах (например задать через procfs). Это просто.
Либо подправить conntrackd чтобы он не восстанавливал данные для connlabel.
Для синхронизации данных nDPI нужно писать аналог conntrackd или допиливать сам conntrackd т.к. в connlabel не запихнуть всю необходимую информацию. Полная синхронизация это очень сложно. Нужно учитывать, что у ndpi данные о соединении меняются чуть ли не после каждого пакета (в начале соединения).
Если синхронизировать только номера протоколов и уровень достоверности, то
это можно сделать путём допиливания conntrackd и модуля ядра.
Всё, что не влезает в 128 бит синхронизировать значительно сложнее.
У нас большие проблемы с ядром.
С 5.19 нет возможности легально обработать удаление записи из conntrack. Чуть ранее была ликвидирована возможность расширять nfconntrack.
Пока я пытаюсь обходиться без патчей для ядра (пересобрать ядро во многих дистрибутивах невозможно для большинства пользователей т.к. ядро подписано).
from ndpi.
То есть для чего используется connlabel в conntrack в общем случае?
Судя по тому что я вижу, это "буфер" для синхронизации данных в модуле, которые взаимодействуют с сессией.
И эти данные должны быть одинаковыми между нодами, чтобы прозрачно переключаться между ними.
Поправьте, если я не прав.
Но если я правильно понял, получается, что без этого тот же nDPI не сможет перенять соединение у отключающийся ноды, так как для поддержки соединения не будет достаточно информации.
Верно?
По крайней мере в эксперименте с синхронизацией conntrackd, с разным MAGIC_CT у нод, падения действительно не было, но сессии через правило iptables с nDPI не переносились.
from ndpi.
А собственно появление connlabel - это не этот патч к ядру?
Я пытаюсь найти концы connlabel, в частности как оно применяется в conntrack и откуда ограничение в 128 бит.
И если это оно, а не может пользователь заменить этот самый label через iptables -m connlabel
?
from ndpi.
Это не тот патч. Патч нужен если нет возможности использовать live-patch.
connlabel - это возможность хранить в conntrack свои 128 бит данных.
ndpi использует connlabel для хранения указателя на свои структуры.
Это грязный хак.
from ndpi.
connlabel - это возможность хранить в conntrack свои 128 бит данных.
Разве свои 128 бит данных?
Судя по общению в коммите(коммите, не патче, перепутал) connlable - это расширение conntrack, чтобы хранить lablel, который задаётся через iptables -m connlabel
.
Поэтому следом у меня и возник вопрос:
И если это оно, а не может пользователь заменить этот самый label через
iptables -m connlabel
?
from ndpi.
Я сейчас в отпуске, т.ч. не каждый день заглядываю на гитхаб.
connlabel
позволяет задать соединению метку в виде 128 битного значения.
Я использовал эту возможность для хранения указателя на внутренние структуры ndpi. Это грязый хак. Если через -j CONNLABEL исправить заначения битов с 64 по 127, то можно получить kernel panic.
Твой PR задает MAGIC_CT один раз при загрузке модуля, что не совсем корректно.
MAGIC_CT должен быть уникален для каждого netns и сделать это нужно до появления первого правила ndpi.
Нужно добавить поле типа "uint16_t magic_ct" в "struct ndpi_net".
Нужно добавить в парсер для /proc/net/xt_ndpi/proto назначение поля.
В качестве примера можно использовать команду netns которая задает имя для netns (поле ns_name) .
from ndpi.
Related Issues (20)
- unresolved symbol __aarch64_ldadd8_sync on aarch64 HOT 4
- Inconsistent BitTorrent Filtering with nDPI HOT 4
- Handling large host_proto lists HOT 2
- Linux 6.7: build error HOT 6
- Please help filter iptables DNAT traffic
- iptables 1.8.10 causes ksoftirqd 100% CPU HOT 5
- /root/nDPI/ndpi-netfilter/src/../../src/lib/ndpi_main.c:1040:5: error: �for� loop initial declarations are only allowed in C99 or C11 mode
- Error compiling kernel modules under arm32 bit HOT 5
- host_proto wildcard options. HOT 2
- Compile error message HOT 10
- Compile error about /src/lib/ndpi_network_list_compile.h HOT 1
- These are some protocols updated in the new version of ndpi_network_list_compile.h, please update them. HOT 1
- Проходит трафик несоответствующий правилу HOT 21
- The Google Drive traffic isn't caught HOT 3
- Failed to match traffic with manually patched kernel v6.6.37 HOT 6
- Traffic from Google sites not being detected HOT 3
- Вопросы по принципу работы HOT 1
- Some Applications based on QUIC protocol not being detected
- ndpi tlsv1.2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ndpi.