From b10e5fb0c14f386504b38eff80f4842daa3cf86c Mon Sep 17 00:00:00 2001 From: bol-van Date: Sat, 29 Jan 2022 17:41:42 +0300 Subject: [PATCH] readme: UDP stream notes --- docs/readme.eng.md | 3 +++ docs/readme.txt | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/readme.eng.md b/docs/readme.eng.md index bc7ed9a..191ef1e 100644 --- a/docs/readme.eng.md +++ b/docs/readme.eng.md @@ -323,6 +323,9 @@ It can be fed with unidirectional or bidirectional packets. A SYN or SYN,ACK packet creates an entry in the conntrack table. +First seen UDP packet creates UDP stream. It defines the stream direction. Then all packets with the same +src_ip,src_port,dst_ip,dst_port are considered to belong to the same UDP stream. UDP stream exists till timeout. + That's why iptables redirection must start with the first packet although can be cut later using connbytes filter. A connection is deleted from the table as soon as it's no more required to satisfy nfqws needs or when a timeout happens. diff --git a/docs/readme.txt b/docs/readme.txt index 2d6f622..f654047 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -368,11 +368,14 @@ CONNTRACK nfqws оснащен ограниченной реализацией слежения за состоянием tcp соединений (conntrack). Он включается для реализации некоторых методов противодействия DPI. На текущий момент это параметры --wssize и --dpi-desync-cutoff. -conntrack способен следить за фазой соединения : SYN,ESTABLISHED,FIN , количеством пакетов в каждую сторону, sequence numbers. -conntrack способен "кормиться" пакетами в обе или только в одну сторону. +conntrack способен следить за фазой соединения : SYN,ESTABLISHED,FIN , количеством пакетов в каждую сторону, +sequence numbers. conntrack способен "кормиться" пакетами в обе или только в одну сторону. Соединение попадает в таблицу при обнаружении пакетов с выставленными флагами SYN или SYN,ACK. -Поэтому если необходим conntrack, в правилах перенаправления iptables соединение должно идти на nfqws с самого первого пакета, -хотя затем может обрываться по фильтру connbytes. +Для UDP инициатором попадания в таблицу является первый UDP пакет. Он же и определяет направление потока. +Считается, что первый UDP пакет исходит от клиента к серверу. Далее все пакеты с совпадающими +src_ip,src_port,dst_ip,dst_port считаются принадлежащими этому потоку до истечения времени неактивности. +Поэтому если необходим conntrack, в правилах перенаправления iptables соединение должно идти на nfqws с самого первого +пакета, хотя затем может обрываться по фильтру connbytes. conntrack - простенький, он не писался с учетом всевозможных атак на соединение, он не проверяет пакеты на валидность sequence numbers или чексумму. Его задача - лишь обслуживание нужд nfqws, он обычно кормится только исходящим трафиком, потому нечувствителен к подменам со стороны внешней сети.