diff --git a/common/linux_fw.sh b/common/linux_fw.sh index 3b428c9..7d45c68 100644 --- a/common/linux_fw.sh +++ b/common/linux_fw.sh @@ -20,10 +20,10 @@ zapret_do_firewall() # russian DPI sends RST,ACK with wrong ACK. # this is sometimes treated by conntrack as invalid and connbytes fw rules do not pass RST packet to nfqws. - # swith on liberal mode on zapret firewall start and switch off on zapret firewall stop + # switch on liberal mode on zapret firewall start and switch off on zapret firewall stop # this is only required for processing incoming bad RSTs. incoming rules are only applied in autohostlist mode # calling this after firewall because conntrack module can be not loaded before applying conntrack firewall rules - [ "$MODE_FILTER" = "autohostlist" -a "$MODE" != tpws-socks ] && set_conntrack_liberal_mode $1 + [ "$MODE_FILTER" = "autohostlist" -a "$MODE" != tpws -a "$MODE" != tpws-socks ] && set_conntrack_liberal_mode $1 [ "$1" = 1 -a -n "$INIT_FW_POST_UP_HOOK" ] && $INIT_FW_POST_UP_HOOK [ "$1" = 0 -a -n "$INIT_FW_POST_DOWN_HOOK" ] && $INIT_FW_POST_DOWN_HOOK diff --git a/docs/readme.txt b/docs/readme.txt index afed854..65267b1 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -918,6 +918,12 @@ tpws/nfqws сами назначают владельцем файла юзер Крайне рекомендовано использовать ограничитель connbytes, чтобы nfqws не обрабатывал гигабайты. По этой же причине не рекомендуется использование режима на BSD системах. Там нет фильтра connbytes. +На linux системах при использовании nfqws и фильтра connbytes может понадобится : +sysctl net.netfilter.nf_conntrack_tcp_be_liberal=1 +Было замечено, что некоторые DPI в России возвращают RST с неверным ACK. Это принимается tcp/ip стеком +linux, но через раз приобретает статус INVALID в conntrack. Поэтому правила с connbytes срабатывают +через раз, не пересылая RST пакет nfqws. + Как вообще могут вести себя DPI, получив "плохой запрос" и приняв решение о блокировке : 1) Зависание : просто отмораживается, блокируя прохождение пакетов по TCP каналу.