Zapret: обсуждение

О, спасибо :slight_smile: Поизучаю.

Нашел два живучих конфига под ютуб

Спойлер

–dpi-desync=rst,split2
–dpi-desync=rst,disorder2

А в чём загвоздка-то? Если в ядре NF_DUP включён, так клонируй исходящий пакет, каждому свою метку присвой и по разным очередям рассылай. А в этом случае, коли один хостлист короткий, можно и без клонирования обойтись: если пакет новый да домен американского видеосервиса содержит - сразу пихай сюды, а если нет - туды отправляй, там разберутся. Всяко веселей, чем прокси со своими причудами и опциями. Или, может, я какую-то другую проблему упускаю?

Не нужен этот изврат, скоро будут мульти-профили

Свежеустановленный Zapret на OpenWRT на роутере, попытки посмотреть Youtube без успеха.
(на ноуте и смартфоне)
Хотя на телефоне ByeDPI пробивает легко при split в позиции 2.

Zapret status = running. При вводе iptables -L не показывает ни одного правила (может так и должно быть? не знаю…)

В zapret пробовал параметры
–dpi-desync=split --dpi-desync-split-pos=2
–dpi-desync=split2 --dpi-desync-split-pos=2
–dpi-desync=split2 --dpi-desync-split-pos=10
–dpi-desync=split2 --dpi-desync-split-tls=sni
из них последние два варианта рекомендованы после blockcheck.
stop_fw не влияет

Что еще можно посмотреть, где искать причину?

Я пока остановился на этом:
NFQWS_OPT_DESYNC=“–dpi-desync=disorder2 --dpi-desync-fooling=badsum”
билайн, одна строка

iptables -nvL POSTROUTING -t mangle

Еще у nfqws есть --debug=@/path/to/logfile

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 NFQUEUE    tcp  --  *      br-lan  0.0.0.0/0            0.0.0.0/0            multiport dports 80,443 connbytes 1:6 connbytes mode packets connbytes direction original mark match ! 0x40000000/0x40000000 ! match-set nozapret dst NFQUEUE num 200 bypass
    0     0 NFQUEUE    tcp  --  *      br-lan  0.0.0.0/0            0.0.0.0/0            multiport dports 443 connbytes 1:6 connbytes mode packets connbytes direction original mark match ! 0x40000000/0x40000000 ! match-set nozapret dst NFQUEUE num 200 bypass
    0     0 NFQUEUE    tcp  --  *      br-lan  0.0.0.0/0            0.0.0.0/0            multiport dports 80 mark match ! 0x40000000/0x40000000 ! match-set nozapret dst NFQUEUE num 200 bypass

да, так показывает
всё ли здесь правильно?

На новом openwrt используются nftables. Если были выбраны iptables - это плохо.

Без ограничителей split 100% ломает соединение, поскольку отсылкает фейки.
split2 фейков не отсылает и не нуждается в ограничителях

Надо смотреть дебаг log nfqws

Спасибо вам, маэстро, что помогаете! Всем спасибо.

сейчас с логом разберемся, пока ничего не трогаю, и поменяю на nftables.

вот так?
/opt/zapret/binaries/mips32r1-lsb/nfqws “–qnum=1 --debug=syslog --dpi-desync=split2 --dpi-desync-split-pos=2”

данная команда выдала в терминал

opening library handle
unbinding existing nf_queue handler for AF_INET (if any)
binding nfnetlink_queue as nf_queue handler for AF_INET
binding this socket to queue ‘1’
setting copy_packet mode
initializing raw sockets bind-fix4=0 bind-fix6=0
Running as UID=******* GID=********

…и остановилась, не закрылась. Ничего не происходит. Прервал по Ctrl+C.

Так нормально. Запустилась и работает, тестируйте.
Хотите иметь фоном - устанавливайте по полной форме, в README описано.

сислог читается по logread в openwrt
можно так : logread | grep nfqws
если надо на консоль, то надо было --debug без параметров указывать

Скрипт для тех, кто хочет сделать свой собственный fake пакет с TLS ClientHello с определённым доменом.
Вариант использования: ./capture_tls_client_hello.sh example.com
capture_tls_clienthello.sh (1.1 KB)

Круто, спасибо!

а под openwrt такое не получится?

Попробуйте накатить curl, tshark, jq самостоятельно и удалите строчки с apt install. В пакетах на openwrt не разбираюсь, не знаю есть ли tshark (jq вроде как должен быть)

(nc -l -p 4343 > hello.bin) & curl https://www.google.com --connect-to ::127.0.0.1:4343 -m 1

Подскажи пожалуйста, четвертый день мучаюсь с подбором стабильного конфига в итоге после очередного изменения и перезапуска:
service zapret stop
service zapret start

проверка по curl --connect-to ::speedtest.selectel.ru https://manifest.googlevideo.com/100MB -k -o/dev/null перестала показывать скорость и ютюб перестал быстро открывать видео.
С tpws вроде работает, но тоже нестабильно.

Снес скрипт полностью, установил заново с выбором nfqws, не помогло.
Вот лог, если правильно снял, не разобрался как запускать /opt/zapret/binaries/aarch64/nfqws --debug=@/tmp
пишет - cannot create /tmp

root@OpenWrt:/# logread | grep nfqws
Tue Sep 17 19:42:28 2024 daemon.notice procd: /etc/rc.d/S21zapret: Starting daemon 2: /opt/zapret/nfq/nfqws --qnum=200 --user=daemon --dpi-desync-fwmark=0x40000000 --dpi-desync=rst,disorder2 --dpi-desync-ttl=0 --dpi-desync-ttl6=0 --dpi-desync-fooling=badsum --hostlist=/opt/zapret/ipset/zapret-hosts-user.txt --hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
Tue Sep 17 19:42:28 2024 daemon.notice procd: /etc/rc.d/S21zapret: Starting daemon 10: /opt/zapret/nfq/nfqws --qnum=210 --user=daemon --dpi-desync-fwmark=0x40000000 --dpi-desync=fake --dpi-desync-repeats=6 --hostlist=/opt/zapret/ipset/zapret-hosts-user.txt --hostlist-exclude=/opt/zapret/ipset/zapret-hosts-user-exclude.txt
Tue Sep 17 19:42:28 2024 daemon.notice procd: /etc/rc.d/S21zapret: Adding nftables ipv4 rule for nfqws postrouting (qnum 200) : tcp dport {443} ct original packets 1-6 mark and 0x40000000 == 0
Tue Sep 17 19:42:28 2024 daemon.notice procd: /etc/rc.d/S21zapret: Adding nftables ipv4 rule for nfqws prerouting (qnum 200) : tcp sport {443} ct reply packets 1
Tue Sep 17 19:42:28 2024 daemon.notice procd: /etc/rc.d/S21zapret: Adding nftables ipv4 rule for nfqws postrouting (qnum 210) : udp dport {443} ct original packets 1-6 mark and 0x40000000 == 0

zapret-hosts-user.txt заполнен по инструкции “Обход замедления youtube в России”
Провайдер домру Казань

до этого работало не стабильно, то 50,000-170,000 kbps скорость, то падает до 4000 kbps. Протокол в основном http/1.1 во вкладке сеть в хроме, или по h3 пытается загрузить.

nc_tls_clienthello.sh (712 Bytes)

Чем больше я пытаюсь разобраться в логике работы программы, тем меньше я понимаю. Например, блокчек выдал такой результат для nfqws

nfqws --dpi-desync=fake,split2 --dpi-desync-ttl=3
  1. fake и split2 можно применять вместе, но НУЖНО ЛИ? или лучше/достаточно выбрать что-то одно?

  2. почему с опциями nfqws --dpi-desync=fake,split2 программа запускается, но если fake и split2 поменять местами: nfqws --dpi-desync=split2,fake, программа выдает ошибку invalid desync combo : split2+fake

  3. Блокчек выдал значение --dpi-desync-ttl=3, но в руководстве при этом написано следующее:

Опции nfqws для атаки десинхронизации DPI :

DESYNC_MARK=0x40000000
DESYNC_MARK_POSTNAT=0x20000000
NFQWS_OPT_DESYNC="–dpi-desync=fake –dpi-desync-ttl=0

Что вообще значит ttl=0 ? (и -dpi-desync-ttl=5 для ip v6)