LINUX.ORG.RU

История изменений

Исправление ValdikSS, (текущая версия) :

Я не использовал скрипты из поставки, делал так, как описал вот в этом баге:

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
ggpht.com
ytimg.com
youtube-nocookie.com
play.google.com

Исправление ValdikSS, :

Я не использовал скрипты из поставки, делал так, как описал вот в этом баге:

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, при большом желании (скриптом скачивания бинарника в оперативную память, при необходимости).

Исправление ValdikSS, :

Я не использовал скрипты из поставки, делал так, как описал вот в этом баге:

https://github.com/bol-van/zapret/discussions/262

Взял бинарник из репозитория, написал простейший init-скрипт для 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 пакетов, а дальше всё маршрутизируется как обычно.

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"
}

Исходная версия ValdikSS, :

Я не использовал скрипты из поставки, делал так, как описал вот в этом баге:

https://github.com/bol-van/zapret/discussions/262

С моими правилами файрволла (connbytes) в nfqws копируются только первые 8 пакетов, а дальше всё маршрутизируется как обычно.

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"
}