diff --git a/docs/readme.md b/docs/readme.md index 14b60f7..a08659c 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -761,8 +761,16 @@ iptables могут не работать. При включенном offloadin DNAT/REDIRECT (tpws). Эти соединения исключаются из offloading. Однако, остальные соединения идут через SFO, потому NFQUEUE будет срабатывать только до помещения соединения в flowtable. Практически это означает, что почти весь функционал nfqws работать не будет. Offload включается через специальный target в iptables `FLOWOFFLOAD` или через flowtable в nftables. + Не обязательно пропускать весь трафик через offload. -Можно исключить из offload соединения, которые должны попасть на tpws или nfqws. OpenWrt не предусматривает выборочного управления offload. +tpws и так обходит offload "by design", а для отработки nfqws достаточно первых нескольких пакетов в tcp соединении или udp сеансе. +Пока сеанс не направлен на offload, он процессится обычным образом через полноценный netfilter. +Как только срабатывает правило offload по любому входящему или исходящему пакету, весь сеанс окончательно уходит из netfilter в offload. +Поэтому скрипты zapret берут правила для NFQUEUE, что они создали, и из них создают exemption правила, которые не дают раньше времени попасть сеансу в offload, а потом его "отпускают". +При этом входящим пакетам не дают начать offload, триггером выступают только исходящие пакеты. +Эта схема обеспечивает практически нулевой негативный эффект на скорость, одновременно покрывая нужды nfqws и упрощая правила таблиц. + +OpenWrt не предусматривает выборочного управления offload. Поэтому скрипты zapret поддерживают свою систему выборочного управления offload в OpenWrt. iptables target `FLOWOFFLOAD` - это проприетарное изобретение OpenWrt.