Я установил на роутер zapret nfqws, не используя стандартные скрипты из поставки. Конфигурация такая, какая описана вот в этом баге:
https://github.com/bol-van/zapret/discussions/262
Взял бинарник из репозитория, написал простейший init-скрипт (/etc/init.d/nfqws) для openwrt с вшитыми параметрами, написал свои правила firewall’а. Оригинальные тоже хорошие (и обрабатывают разные конфигурации), но вот эти банально проще.
# cat /etc/init.d/nfqws
#!/bin/sh /etc/rc.common
USE_PROCD=1
START=91
PROG=/etc/zapret/nfqws/nfqws
start_service() {
procd_open_instance
procd_set_param command "$PROG"
procd_append_param command --dpi-desync=fake
procd_append_param command --dpi-desync-fooling=md5sig,badseq
procd_append_param command --dpi-desync-split-pos=1
procd_append_param command --dpi-desync-repeats=12
procd_append_param command --dpi-desync-ttl=4
procd_append_param command --qnum=200
procd_append_param command --hostlist=/etc/zapret/nfqws/youtube.txt
# procd_append_param command --hostlist=/tmp/domains-export.txt
procd_set_param stdout 1 # forward stdout of the command to logd
procd_set_param stderr 1 # same for stderr
procd_close_instance
}
С моими правилами файрволла (connbytes) в nfqws копируются только первые 8 пакетов, а дальше всё маршрутизируется как обычно. /etc/zapret/zapret.nft:
chain zapret_lan_hook {
type filter hook forward priority mangle;
# iifname {"br-lan"} \
ip daddr != {0.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 100.64.0.0/10, 169.254.0.0/16, 224.0.0.0/3, 255.255.255.255/32} \
tcp dport {80, 443} ct original packets lt 8 counter queue flags bypass to 200 comment "zapret IPv4 443 tcp"
# iifname {"br-lan"} \
ip6 daddr != {::ffff:0:0/96, fc00::/7, fe80::/10, ff00::/8} \
tcp dport {80, 443} ct original packets lt 8 counter queue flags bypass to 200 comment "zapret IPv6 443 tcp"
# iifname {"br-lan"} \
ip daddr != {0.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 100.64.0.0/10, 169.254.0.0/16, 224.0.0.0/3, 255.255.255.255/32} \
udp dport 443 ct original packets lt 8 counter queue flags bypass to 200 comment "zapret IPv4 443 udp"
# iifname {"br-lan"} \
ip6 daddr != {::ffff:0:0/96, fc00::/7, fe80::/10, ff00::/8} \
udp dport 443 ct original packets lt 8 counter queue flags bypass to 200 comment "zapret IPv6 443 udp"
}
Нужно заinclude’ить скрипт в настройках firewall’а. /etc/config/firewall:
config include 'zapret'
option type 'nftables'
option path '/etc/zapret/zapret.nft'
option position 'table-post'
option enabled '1'
Необходимо отключить offloading, с ним, скорее всего, работать не будет (но я не проверял, оригинальные правила учитывают этот момент).
В таком виде всё установить можно на ЛЮБОЙ роутер, даже на 4/32, при большом желании (скриптом скачивания бинарника в оперативную память, при необходимости).
/etc/zapret/nfqws/youtube.txt:
youtube.com
youtu.be
googlevideo.com
googleapis.com
gvt1.com
ggpht.com
ytimg.com
youtube-nocookie.com
play.google.com
video.google.com
youtube-ui.l.google.com
youtubeeducation.com
youtubekids.com