Zapret: what's new

Информация для любителей кинетиков на стоковой прошивке, где есть entware.

NDMS имеет проприетарное ядро, где в параллель со стандартными средствами маркировки mark и ct mark имеется в skbuff еще 1 марк - проприетарный ndmmark.
Он был сделан, чтобы управлять логикой iptables, оставляя основной марк полностью свободным для юзера.

В частности, ndmmark используется для ограничения маскарада. Только пакеты с определенным ndmmark идут на маскарад. См iptables-save -t nat

Если вы пытаетесь обойти блокировку quic через nfqws, то nfqws в этом случае дропает первый UDP пакет с quic initial, затем отправляет фейк своими средствами, ничего не зная о ndmmark. Первый пакет создает запись в conntrack, и она будет без маскарада.
Все дальнейшие пакеты будут уходить на внешний интерфейс с source ip 192.168.x.x и дропаться провайдером.

Таким образом, вы заставляете nfqws работать не на обход, а на блокировку QUIC.
И это даже иногда делает экспиренс лучше, если вдруг у провайдера DPI плохо блокирует QUIC, позволяя сеансу пройти дальше initial, а затем обрывая поток.
Того же эффекта вы можете достичь просто блокируя порт udp:443 на выход. Для этого nfqws не нужен.

Для лечения посмотрите как устроены ваши цепочки и добавьте в нужную цепочку маскарад на исходящий интерфейс WAN. Это может быть , например, ppp0, если у вас pppoe.

Если используются скрипты от zapret в варианте sysv, то можно добавить лечение в custom.
Как-то так, но смотрите какие у вас реально цепочки (я за версии прошивок не ручаюсь), и какой внешний интерфейс.
Пример лечащей добавки в скрипт custom-nfqws-quic4all

zapret_custom_firewall()
{
        # $1 - 1 - run, 0 - stop

        local MODE_OVERRIDE=nfqws
        local f
        local first_packets_only="-m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:3"
        local desync="-m mark ! --mark $DESYNC_MARK/$DESYNC_MARK"

        zapret_do_firewall_rules_ipt $1

        f="-p udp --dport 443"
        fw_nfqws_post $1 "$f $desync $first_packets_only" "$f $desync $first_packets_only" $QNUM2

        # fix NDM kernel masquerade for nfqws
        ipta_add_del $1 _NDM_MASQ -t nat -o ppp0 -j MASQUERADE
}