Compare commits

..

No commits in common. "8c9aa188c3234adc9619cbdacf68ea8d10dbcc58" and "94f59511f055a937b2c32964a361774bdb0fe8c3" have entirely different histories.

2 changed files with 4 additions and 13 deletions

View File

@ -97,7 +97,7 @@ NFQWS_OPT="
# none,ipset,hostlist,autohostlist # none,ipset,hostlist,autohostlist
MODE_FILTER=none MODE_FILTER=none
# donttouch,none,software,hardware # openwrt only : donttouch,none,software,hardware
FLOWOFFLOAD=donttouch FLOWOFFLOAD=donttouch
# openwrt: specify networks to be treated as LAN. default is "lan" # openwrt: specify networks to be treated as LAN. default is "lan"

View File

@ -760,21 +760,12 @@ iptables могут не работать. При включенном offloadin
Пакеты, проходящие через SFO, так же проходят мимо большей части механизмов iptables. При включенном SFO работает Пакеты, проходящие через SFO, так же проходят мимо большей части механизмов iptables. При включенном SFO работает
DNAT/REDIRECT (tpws). Эти соединения исключаются из offloading. Однако, остальные соединения идут через SFO, потому DNAT/REDIRECT (tpws). Эти соединения исключаются из offloading. Однако, остальные соединения идут через SFO, потому
NFQUEUE будет срабатывать только до помещения соединения в flowtable. Практически это означает, что почти весь функционал nfqws работать не будет. NFQUEUE будет срабатывать только до помещения соединения в flowtable. Практически это означает, что почти весь функционал nfqws работать не будет.
Offload включается через специальный target в iptables `FLOWOFFLOAD` или через flowtable в nftables. Offload включается через специальный target в iptables `FLOWOFFLOAD`. Не обязательно пропускать весь трафик через offload. Можно исключить из
offload соединения, которые должны попасть на tpws или nfqws. OpenWrt не предусматривает выборочного управления offload.
Не обязательно пропускать весь трафик через offload. Поэтому скрипты zapret поддерживают свою систему выборочного управления offload в OpenWrt.
tpws и так обходит offload "by design", а для отработки nfqws достаточно первых нескольких пакетов в tcp соединении или udp сеансе.
Пока сеанс не направлен на offload, он процессится обычным образом через полноценный netfilter.
Как только срабатывает правило offload по любому входящему или исходящему пакету, весь сеанс окончательно уходит из netfilter в offload.
Поэтому скрипты zapret берут правила для NFQUEUE, что они создали, и из них создают exemption правила, которые не дают раньше времени попасть сеансу в offload, а потом его "отпускают".
При этом входящим пакетам не дают начать offload, триггером выступают только исходящие пакеты.
Эта схема обеспечивает практически нулевой негативный эффект на скорость, одновременно покрывая нужды nfqws и упрощая правила таблиц.
OpenWrt не предусматривает выборочного управления offload, поэтому скрипты zapret поддерживают свою систему выборочного управления.
iptables target `FLOWOFFLOAD` - это проприетарное изобретение OpenWrt. iptables target `FLOWOFFLOAD` - это проприетарное изобретение OpenWrt.
Управление offload в nftables реализовано в базовом ядре linux без патчей. Управление offload в nftables реализовано в базовом ядре linux без патчей.
nftables - единственный способ включения offload на классическом Linux.
## tpws ## tpws