Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
router:zapret [2025/10/16 20:53] 192.168.1.159router:zapret [2025/12/16 21:28] (текущий) mirocow
Строка 1: Строка 1:
 +{{tag>[asus merlin amtm entware router]}}
 +
 ====== Zapret - DPI bypass multi platform Topics (NFQWS)  ====== ====== Zapret - DPI bypass multi platform Topics (NFQWS)  ======
  
   * [[:nfqws]]   * [[:nfqws]]
-===== Entware - Software repository =====+ 
 +===== Подготовка =====
  
 <code bash> <code bash>
Строка 15: Строка 18:
  
 <code bash> <code bash>
-$ wget https://github.com/bol-van/zapret/releases/download/v71.4/zapret-v71.4.tar.gz +$ wget https://github.com/bol-van/zapret/releases/download/v72.3/zapret-v72.3.tar.gz 
-$ tar -xvzf zapret-v71.4.tar.gz +$ tar -xvzf zapret-v72.3.tar.gz 
-$ cd zapret-v71.4+$ cd zapret-v72.3
 $ ./install_easy.sh $ ./install_easy.sh
 - Y - Y
Строка 30: Строка 33:
 - N - N
 - 3 - br0 - 3 - br0
-- 8 - eth3+- 8 - eth0
 - 3 - 3
 </code> </code>
Строка 37: Строка 40:
   * **Выбираем имя внутреннего сетевого интерфейса (LAN), br0 - обычно в роутере**   * **Выбираем имя внутреннего сетевого интерфейса (LAN), br0 - обычно в роутере**
   * **Выбираем режим фильтрации трафика (none, ipset, hostlist, autohostlist). - none**   * **Выбираем режим фильтрации трафика (none, ipset, hostlist, autohostlist). - none**
 +
 +===== Обновление =====
 +
 +<code bash>
 +$ wget https://github.com/bol-van/zapret/releases/download/v72.3/zapret-v72.3.tar.gz
 +$ tar -xvzf zapret-v72.3.tar.gz
 +$ cd zapret-v72.3
 +$ ./install_bin.sh
 +</code>
  
 ==== Режимы фильтрации ==== ==== Режимы фильтрации ====
Строка 93: Строка 105:
 #--filter-udp=443 --dpi-desync=fake --dpi-desync-ttl=1 --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin --hostlist=/opt/zapret/ipset/youtube_domain_list.txt #--filter-udp=443 --dpi-desync=fake --dpi-desync-ttl=1 --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin --hostlist=/opt/zapret/ipset/youtube_domain_list.txt
 --filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-ttl=0 --dpi-desync-any-protocol --dpi-desync-cutoff=d4 --dpi-desync-fooling=md5sig,badsum --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin --hostlist=/opt/zapret/ipset/youtube_domain_list.txt --filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-ttl=0 --dpi-desync-any-protocol --dpi-desync-cutoff=d4 --dpi-desync-fooling=md5sig,badsum --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin --hostlist=/opt/zapret/ipset/youtube_domain_list.txt
 + 
 # Main rules # Main rules
 --filter-tcp=80,443 --dpi-desync=fake --dpi-desync-ttl=0 --filter-tcp=80,443 --dpi-desync=fake --dpi-desync-ttl=0
Строка 100: Строка 112:
 NFQWS_OPT_DESYNC="--dpi-desync=fake,disorder2 --dpi-desync-split-pos=1 --dpi-desync-ttl=0 --dpi-desync-fooling=md5sig,badsum --dpi-desync-repeats=6 --dpi-desync-any-protocol --dpi-desync-cutoff=d4 --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin" NFQWS_OPT_DESYNC="--dpi-desync=fake,disorder2 --dpi-desync-split-pos=1 --dpi-desync-ttl=0 --dpi-desync-fooling=md5sig,badsum --dpi-desync-repeats=6 --dpi-desync-any-protocol --dpi-desync-cutoff=d4 --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin"
 NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-ttl=0 --dpi-desync-any-protocol --dpi-desync-cutoff=d4 --dpi-desync-fooling=md5sig,badsum --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin" NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-ttl=0 --dpi-desync-any-protocol --dpi-desync-cutoff=d4 --dpi-desync-fooling=md5sig,badsum --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin"
 +
 +# Network settings
 MODE_FILTER=none MODE_FILTER=none
 FLOWOFFLOAD=disable FLOWOFFLOAD=disable
 IFACE_LAN=br0 IFACE_LAN=br0
 IFACE_WAN=eth0 IFACE_WAN=eth0
 +
 +# Initialization
 INIT_APPLY_FW=1 INIT_APPLY_FW=1
 DISABLE_IPV6=0 DISABLE_IPV6=0
 DEBUGLOG=0 DEBUGLOG=0
 </code> </code>
 +
 +<code bash>
 +# Network settings
 +MODE_FILTER=none
 +FLOWOFFLOAD=disable
 +IFACE_LAN=br0
 +IFACE_WAN=eth0
 +BIND_INTERFACE=1  # Interface binding for stability
 +
 +# Caching and performance
 +ENABLE_DNS_CACHE=1
 +DNS_CACHE_SIZE=10000
 +DNS_CACHE_TTL=300
 +
 +# Initialization
 +INIT_APPLY_FW=1
 +DISABLE_IPV6=0
 +DEBUGLOG=0
 +# Additional optimizations
 +#SKIP_IPv4_DISABLED=1
 +#SKIP_IPv6_DISABLED=1
 +ENABLE_FAST_START=1
 +PRELOAD_IPSETS=1  # Ipsets preloading for speed
 +
 +# YouTube-specific optimizations
 +YOUTUBE_CDN_OPTIMIZE=1
 +ENABLE_QUIC_BYPASS=1
 +AGGRESSIVE_RETRANSMISSION=1
 +</code>
 +
 +==== Подготовка листа доменов для обработки ====
  
 <code bash> <code bash>
Строка 120: Строка 167:
  
 <code> <code>
---debug=0|11 = выводить отладочные сообщения +--debug=0|1                                               ; 1=выводить отладочные сообщения 
---daemonдемонизировать программу +--dry-run                                                 ; проверить опции командной строки и выйти. код 0 - успешная проверка. 
---pidfile=<file>сохранить PID в файл +--version                                                 ; вывести версию и выйти 
---user=<username>менять uid процесса +--comment                                                 ; любой текст (игнорируется) 
---uid=uid[:gid]менять uid процесса +--daemon                                                  ; демонизировать прогу 
---qnum=Nномер очереди N +--pidfile=<file>                                          ; сохранить PID в файл 
---bind-fix4пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных IPv4 пакетов +--user=<username>                                         ; менять uid процесса 
---bind-fix6пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных IPv6 пакетов +--uid=uid[:gid]                                           ; менять uid процесса 
---wsize=<winsize>[:<scale_factor>]менять tcp window size на указанный размер в SYN,ACK. Если не задан scale_factor, то он не меняется (устарело) +--qnum=N                                                  ; номер очереди N 
---wssize=<winsize>[:<scale_factor>]менять tcp window size на указанный размер в исходящих пакетах. По умолчанию scale_factor = 0 (см. conntrack) +--bind-fix4                                               ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv4 пакетов 
---wssize-cutoff=[n|d|s]Nизменять server window size в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N +--bind-fix6                                               ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv6 пакетов 
---ctrack-timeouts=S:E:F[:U]: таймауты внутреннего conntrack в состояниях SYN, ESTABLISHEDFIN, таймаут UDPПо умолчанию 60:300:60:60 +--ctrack-timeouts=S:E:F[:U]                               ; таймауты внутреннего conntrack в состояниях SYN, ESTABLISHED, FIN, таймаут udp. по умолчанию 60:300:60:60 
---hostcaseменять регистр заголовка "Host:" по умолчанию на "host:" +--ctrack-disable=[0|1]                                    ; 1 или остутствие аргумента отключает conntrack 
---hostnospaceубрать пробел после "Host:" и переместить его в конец значения "User-Agent:" для сохранения длины пакета +--ipcache-lifetime=<int>                                  ; время жизни записей кэша IP в секундах. 0 - без ограничений. 
---hostspell=HoSTточное написание заголовка Host (можно "HOST" или "HoSt"). Автоматом включает --hostcase +--ipcache-hostname=[0|1]                                  ; 1 или отсутствие аргумента включают кэширование имен хостов для применения в стратегиях нулевой фазы 
---domcaseдомен после Host сделать таким: TeSt.cOm +--wsize=<winsize>[:<scale_factor>                       ; менять tcp window size на указанный размер в SYN,ACK. если не задан scale_factor, то он не меняется (устарело !
---dpi-desync=[<mode0>,]<mode>[,<mode2>]атака по десинхронизации DPI. mode: synack syndata fake fakeknown rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2 udplen tamper +--wssize=<winsize>[:<scale_factor>                      ; менять tcp window size на указанный размер в исходящих пакетах. scale_factor по умолчанию 0(см. conntrack !
---dpi-desync-fwmark=<int|0xHEX>бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. По умолчанию = 0x40000000 +--wssize-cutoff=[n|d|s]N                                  ; изменять server window size в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N 
---dpi-desync-ttl=<int>установить TTL для десинхронизирующих пакетов +--wssize-forced-cutoff=0|1                                ; 1(default)=автоматически отключать wssize в случае обнаружения известного протокола 
---dpi-desync-ttl6=<int>установить IPv6 hop limit для десинхронизирующих пакетов. Если не указано, используется значение TTL +--synack-split=[syn|synack|acksyn]                        ; выполнить tcp split handshake. вместо SYN,ACK отсылать только SYN, SYN+ACK или ACK+SYN 
---dpi-desync-autottl=[<delta>[:<min>[-<max>]]]режим auto TTL для IPv4 и IPv6По умолчанию: 1:3-20. Delta=0 отключает функцию +--orig-ttl=<int>                                          ; модифицировать TTL оригинального пакета 
---dpi-desync-autottl6=[<delta>[:<min>[-<max>]]]переопределение предыдущего параметра для IPv6 +--orig-ttl6=<int>                                         ; модифицировать ipv6 hop limit оригинальных пакетов.  если не указано, используется значение --orig-ttl 
---dpi-desync-fooling=<fooling>дополнительные методикикак сделать, чтобы фейковый пакет не дошел до сервера. Варианты: nonemd5sigbadseqbadsumdatanoackhopbyhophopbyhop2 +--orig-autottl=[<delta>[:<min>[-<max>]]|-]                ; режим auto ttl для ipv4 и ipv6. по умолчанию+5:3-64. "0:0-0" или "-" отключает функцию 
---dpi-desync-repeats=<N>посылать каждый генерируемый в nfqws пакет N раз (не влияет на остальные пакеты) +--orig-autottl6=[<delta>[:<min>[-<max>]]|-]               ; переопределение предыдущего параметра для ipv6 
---dpi-desync-skip-nosni=0|11 (по умолчанию) = не применять dpi desync для запросов без hostname в SNI, в частности для ESNI +--orig-tcp-flags-set=<int|0xHEX|flaglist>                 ; устанавливать указанные tcp флаги (flags |= value). число , либо список через запятую FIN,SYN,RST,PSH,ACK,URG,ECE,CWR,AE,R1,R2,R3 
---dpi-desync-split-pos=<1..1500>:олько для split*, disorder*) разбивать пакет на указанной позиции +--orig-tcp-flags-unset=<int|0xHEX|flaglist>               ; удалять указанные tcp флаги (flags &= ~value) 
---dpi-desync-split-http-req=method|host: разбивка HTTP request на указанном логическом месте +--orig-mod-start=[n|d|s]N                                 ; применять orig-mod только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру больше или равно N 
---dpi-desync-split-tls=sni|sniext: разбивка TLS client hello на указанном логическом месте +--orig-mod-cutoff=[n|d|s]N                                ; применять orig-mod только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N 
---dpi-desync-split-seqovl=<int>: использовать sequence overlap перед первым отсылаемым оригинальным tcp сегментом +--dup=<int>                                               ; высылать N дубликатов до оригинала 
---dpi-desync-split-seqovl-pattern=<filename>|0xHEX: чем заполнять фейковую часть overlap +--dup-replace=[0|1]                                       ; 1 или отсутствие аргумента блокирует отправку оригинала. отправляются только дубликаты. 
---dpi-desync-badseq-increment=<int|0xHEX>инкремент sequence number для badseq. По умолчанию -10000 +--dup-ttl=<int>                                           ; модифицировать TTL дубликатов 
---dpi-desync-badack-increment=<int|0xHEX>инкремент ack sequence number для badseq. По умолчанию -66000 +--dup-ttl6=<int>                                          ; модифицировать ipv6 hop limit дубликатов. если не указано, используется значение --dup-ttl 
---dpi-desync-any-protocol=0|10 (по умолчанию) = работать только по HTTP request и TLS client hello, 1 = по всем непустым пакетам данных +--dup-autottl=[<delta>[:<min>[-<max>]]|-]                 ; режим auto ttl для ipv4 и ipv6. по умолчанию: +1:3-64. "0:0-0" или "-" отключает функцию 
---dpi-desync-fake-http=<filename>|0xHEXфайл, содержащий фейковый HTTP запрос для dpi-desync=fake, на замену стандартному www.iana.org +--dup-autottl6=[<delta>[:<min>[-<max>]]|-]                ; переопределение предыдущего параметра для ipv6 
---dpi-desync-fake-tls=<filename>|0xHEXфайл, содержащий фейковый TLS client hello для dpi-desync=fake, на замену стандартному +--dup-tcp-flags-set=<int|0xHEX|flaglist>                  ; устанавливать указанные tcp флаги (flags |= value). число , либо список через запятую : FIN,SYN,RST,PSH,ACK,URG,ECE,CWR,AE,R1,R2,R3 
---dpi-desync-fake-unknown=<filename>|0xHEXфайл, содержащий фейковый пейлоад неизвестного протокола для dpi-desync=fake, на замену стандартным 256 байт нулей +--dup-tcp-flags-unset=<int|0xHEX|flaglist>                ; удалять указанные tcp флаги (flags &= ~value) 
---dpi-desync-fake-syndata=<filename>|0xHEXфайл, содержащий фейковый пейлоад пакета SYN для режима десинхронизации syndata +--dup-fooling=<fooling>                                   ; дополнительные методики как сделать, чтобы дубликат не дошел до сервераnone md5sig badseq badsum datanoack ts hopbyhop hopbyhop2 
---dpi-desync-fake-quic=<filename>|0xHEXфайл, содержащий фейковый QUIC Initial +--dup-ts-increment=<int|0xHEX>                            ; инкремент TSval для ts. по умолчанию -600000 
---dpi-desync-fake-dht=<filename>|0xHEXфайл, содержащий фейковый пейлоад DHT протокола для dpi-desync=fake, на замену стандартным 64 байтам нулей +--dup-badseq-increment=<int|0xHEX>                        ; инкремент sequence number для badseq. по умолчанию -10000 
---dpi-desync-fake-unknown-udp=<filename>|0xHEXфайл, содержащий фейковый пейлоад неизвестного UDP протокола для dpi-desync=fake, на замену стандартным 64 байтам нулей +--dup-badack-increment=<int|0xHEX>                        ; инкремент ack sequence number для badseq. по умолчанию -66000 
---dpi-desync-udplen-increment=<int>насколько увеличивать длину UDP пейлоада в режиме udplen +--dup-ip-id=same|zero|seq|rnd                             ; режим назначения ip_id для пакетов dup 
---dpi-desync-udplen-pattern=<filename>|0xHEXчем добивать UDP пакет в режиме udplen. По умолчанию – нули +--dup-start=[n|d|s]N                                      ; применять dup только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру больше или равно N 
---dpi-desync-start=[n|d|s]Nприменять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру больше или равно N +--dup-cutoff=[n|d|s]N                                     ; применять dup только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N 
---dpi-desync-cutoff=[n|d|s]Nприменять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N +--hostcase                                                ; менять регистр заголовка "Host:" по умолчанию на "host:". 
---hostlist=<filename>применять дурение только к хостам из листа. Может быть множество листов, они объединяются. Пустой общий лист = его отсутствие +--hostnospace                                             ; убрать пробел после "Host:" и переместить его в конец значения "User-Agent:" для сохранения длины пакета 
---hostlist-exclude=<filename>не применять дурение к хостам из листа. Может быть множество листовони объединяются +--methodeol                                               ; добавить перевод строки в unix стиле ('\n') перед методом и убрать пробел из Host: : "GET / ... Host: domain.com" => "\nGET  / ... Host:domain.com" 
---hostlist-auto=<filename>обнаруживать автоматически блокировки и заполнять автоматический hostlist (требует перенаправления входящего трафика) +--hostspell=HoST                                          ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase 
---hostlist-auto-fail-threshold=<int>сколько раз нужно обнаружить ситуацию, похожую на блокировку, чтобы добавить хост в лист (по умолчанию: 3) +--domcase                                                 ; домен после Hostсделать таким : TeSt.cOm 
---hostlist-auto-fail-time=<int>все эти ситуации должны быть в пределах указанного количества секунд (по умолчанию: 60) +--ip-id=seq|seqgroup|rnd|zero                             ; режим назначения ip_id для генерированных пакетов 
---hostlist-auto-retrans-threshold=<int>сколько ретрансмиссий запроса считать блокировкой (по умолчанию: 3) +--dpi-desync=[<mode0>,]<mode>[,<mode2]                    ; атака по десинхронизации DPI. mode : synack syndata fake fakeknown rst rstack hopbyhop destopt ipfrag1 multisplit multidisorder fakedsplit hostfakesplit fakeddisorder ipfrag2 udplen tamper 
---hostlist-auto-debug=<logfile>лог положительных решений по autohostlist. позволяет разобраться почему там появляются хосты. +--dpi-desync-fwmark=<int|0xHEX>                           ; бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. default = 0x40000000 
---newначало новой стратегии +--dpi-desync-ttl=<int>                                    ; установить ttl для десинхронизирующих пакетов 
---filter-l3=ipv4|ipv6фильтр версии ip для текущей стратегии +--dpi-desync-ttl6=<int>                                   ; установить ipv6 hop limit для десинхронизирующих пакетов. если не указано, используется значение --dpi-desync-ttl 
---filter-tcp=[~]port1[-port2]фильтр портов tcp для текущей стратегии. ~ означает инверсию. установка фильтра tcp и неустановка фильтра udp запрещает udp. +--dpi-desync-autottl=[<delta>[:<min>[-<max>]]|-         ; режим auto ttl для ipv4 и ipv6по умолчанию: 1:3-20. "0:0-0" или "-" отключает функцию 
---filter-udp=[~]port1[-port2]фильтр портов udp для текущей стратегии. ~ означает инверсию. установка фильтра udp и неустановка фильтра tcp запрещает udp+--dpi-desync-autottl6=[<delta>[:<min>[-<max>]]|-        ; переопределение предыдущего параметра для ipv6 
 +--dpi-desync-tcp-flags-set=<int|0xHEX|flaglist>           ; устанавливать указанные tcp флаги (flags |= value). число , либо список через запятую : FIN,SYN,RST,PSH,ACK,URG,ECE,CWR,AE,R1,R2,R3 
 +--dpi-desync-tcp-flags-unset=<int|0xHEX|flaglist>         ; удалять указанные tcp флаги (flags &= ~value) 
 +--dpi-desync-fooling=<fooling>                            ; дополнительные методики как сделать, чтобы фейковый пакет не дошел до сервера. none md5sig badseq badsum datanoack ts hopbyhop hopbyhop2 
 +--dpi-desync-repeats=<N>                                  ; посылать каждый генерируемый в nfqws пакет N раз (не влияет на остальные пакеты) 
 +--dpi-desync-skip-nosni=0|1                               ; 1(default)=не применять dpi desync для запросов без hostname в SNI, в частности для ESNI 
 +--dpi-desync-split-pos=N|-N|marker+N|marker-N             ; список через запятую маркеров для tcp сегментации в режимах split и disorder 
 +--dpi-desync-split-seqovl=N|-N|marker+N|marker-N          ; единичный маркер, определяющий величину перекрытия sequence в режимах split и disorder. для split поддерживается только положительное число. 
 +--dpi-desync-split-seqovl-pattern=[+ofs]@<filename>|0xHEX ; чем заполнять фейковую часть overlap 
 +--dpi-desync-fakedsplit-pattern=[+ofs]@<filename>|0xHEX   ; чем заполнять фейки в fakedsplit/fakeddisorder 
 +--dpi-desync-fakedsplit-mod=mod[,mod]                     ; может быть none, altorder=0|1|2|3 + 0|8|16 
 +--dpi-desync-hostfakesplit-midhost=marker+N|marker-N      ; маркер дополнительного разреза сегмента с оригинальным хостом. должен попадать в пределы хоста. 
 +--dpi-desync-hostfakesplit-mod=mod[,mod]                  ; может быть none, host=<hostname>, altorder=0|1 
 +--dpi-desync-ts-increment=<int|0xHEX>                     ; инкремент TSval для ts. по умолчанию -600000 
 +--dpi-desync-badseq-increment=<int|0xHEX>                 ; инкремент sequence number для badseq. по умолчанию -10000 
 +--dpi-desync-badack-increment=<int|0xHEX>                 ; инкремент ack sequence number для badseq. по умолчанию -66000 
 +--dpi-desync-any-protocol=0|1                             ; 0(default)=работать только по http request и tls clienthello  1=по всем непустым пакетам данных 
 +--dpi-desync-fake-tcp-mod=mod[,mod]                       ; список через запятую режимов runtime модификации tcp фейков (любых) : none, seq 
 +--dpi-desync-fake-http=[+ofs]@<filename>|0xHEX           ; файл, содержащий фейковый http запрос для dpi-desync=fake, на замену стандартному www.iana.org 
 +--dpi-desync-fake-tls=[+ofs]@<filename>|0xHEX|![+offset] файл, содержащий фейковый tls clienthello для dpi-desync=fake, на замену стандартному. '!' = стандартный фейк 
 +--dpi-desync-fake-tls-mod=mod[,mod]                       ; список через запятую режимов runtime модификации фейков : none,rnd,rndsni,sni=<sni>,dupsid,padencap 
 +--dpi-desync-fake-unknown=[+ofs]@<filename>|0xHEX         ; файл, содержащий фейковый пейлоад неизвестного протокола для dpi-desync=fake, на замену стандартным нулям 256 байт 
 +--dpi-desync-fake-syndata=[+ofs]@<filename>|0xHEX         ; файл, содержащий фейковый пейлоад пакета SYN для режима десинхронизации syndata 
 +--dpi-desync-fake-quic=[+ofs]@<filename>|0xHEX            ; файл, содержащий фейковый QUIC Initial 
 +--dpi-desync-fake-wireguard=[+ofs]@<filename>|0xHEX       ; файл, содержащий фейковый wireguard handshake initiation 
 +--dpi-desync-fake-dht=[+ofs]@<filename>|0xHEX             ; файл, содержащий фейковый пейлоад DHT протокола для dpi-desync=fake, на замену стандартным нулям 64 байт 
 +--dpi-desync-fake-discord=[+ofs]@<filename>|0xHEX         ; файл, содержащий фейковый пейлоад Discord протокола нахождения IP адреса для голосовых чатов для dpi-desync=fake, на замену стандартным нулям 64 байт 
 +--dpi-desync-fake-stun=[+ofs]@<filename>|0xHEX            ; файл, содержащий фейковый пейлоад STUN протокола для dpi-desync=fake, на замену стандартным нулям 64 байт 
 +--dpi-desync-fake-unknown-udp=[+ofs]@<filename>|0xHEX     ; файл, содержащий фейковый пейлоад неизвестного udp протокола для dpi-desync=fake, на замену стандартным нулям 64 байт 
 +--dpi-desync-udplen-increment=<int>                       ; на сколько увеличивать длину udp пейлоада в режиме udplen 
 +--dpi-desync-udplen-pattern=[+ofs]@<filename>|0xHEX       ; чем добивать udp пакет в режиме udplen. по умолчанию нули 
 +--dpi-desync-start=[n|d|s]N                               ; применять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру больше или равно N 
 +--dpi-desync-cutoff=[n|d|s]N                              ; применять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N 
 +--hostlist=<filename>                                     ; действовать только над доменами, входящими в список из filename. поддомены автоматически учитываются, если хост не начинается с '^'
 +                                                          ; в файле должен быть хост на каждой строке. 
 +                                                          ; список читается при старте и хранится в памяти в виде иерархической структуры для быстрого поиска. 
 +                                                          ; при изменении времени модификации файла он перечитывается автоматически по необходимости 
 +                                                          ; список может быть запакован в gzip. формат автоматически распознается и разжимается 
 +                                                          ; списков может быть множествопустой общий лист = его отсутствие 
 +                                                          ; хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello. 
 +--hostlist-domains=<domain_list>                          ; фиксированный список доменов через зяпятую. можно использовать # в начале для комментирования отдельных доменов. 
 +--hostlist-exclude=<filename>                             ; не применять дурение к доменам из листа. может быть множество листов. схема аналогична include листам. 
 +--hostlist-exclude-domains=<domain_list>                  ; фиксированный список доменов через зяпятую. можно использовать # в начале для комментирования отдельных доменов. 
 +--hostlist-auto=<filename>                                ; обнаруживать автоматически блокировки и заполнять автоматический hostlist (требует перенаправления входящего трафика) 
 +--hostlist-auto-fail-threshold=<int>                      ; сколько раз нужно обнаружить ситуацию, похожую на блокировку, чтобы добавить хост в лист (по умолчанию: 3) 
 +--hostlist-auto-fail-time=<int>                           ; все эти ситуации должны быть в пределах указанного количества секунд (по умолчанию: 60) 
 +--hostlist-auto-retrans-threshold=<int>                   ; сколько ретрансмиссий запроса считать блокировкой (по умолчанию: 3) 
 +--hostlist-auto-debug=<logfile>                           ; лог положительных решений по autohostlist. позволяет разобраться почему там появляются хосты. 
 +--new                                                     ; начало новой стратегии (новый профиль) 
 +--skip                                                    ; не использовать этот профиль . полезно для временной деактивации профиля без удаления параметров. 
 +--filter-l3=ipv4|ipv6                                     ; фильтр версии ip для текущей стратегии 
 +--filter-tcp=[~]port1[-port2]|*                           ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. установка фильтра tcp и неустановка фильтра udp запрещает udp. поддерживается список через запятую
 +--filter-udp=[~]port1[-port2]|*                           ; фильтр портов udp для текущей стратегии. ~ означает инверсию. установка фильтра udp и неустановка фильтра tcp запрещает tcp. поддерживается список через запятую
 +--filter-l7=<proto>                                       ; фильтр протокола L6-L7. поддерживается несколько значений через запятую. proto : http tls quic wireguard dht discord stun unknown 
 +--filter-ssid=ssid1[,ssid2,ssid3,...]                     ; фильтр по имени wifi сети (только для linux) 
 +--ipset=<filename>                                        ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая. 
 +--ipset-ip=<ip_list>                                      ; фиксированный список подсетей через запятую. можно использовать # в начале для комментирования отдельных подсетей. 
 +--ipset-exclude=<filename>                                ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая. 
 +--ipset-exclude-ip=<ip_list>                              ; фиксированный список подсетей через запятую. можно использовать # в начале для комментирования отдельных подсетей.
 </code> </code>
  
Строка 201: Строка 305:
 nano /opt/zapret/ipset/youtube_domain_list.txt nano /opt/zapret/ipset/youtube_domain_list.txt
 <code> <code>
-gstatic.com +10tv.app
-ggpht.com+
 1e100.net 1e100.net
-youtubei.googleapis.com +7tv.app 
-l.google.com+7tv.gg 
 +7tv.io 
 +api.7tv.app 
 +api.ffzap.com 
 +api.frankerfacez.com 
 +apis.google.com 
 +betterttv.net 
 +cdn.7tv.app 
 +cdn.7tv.gg 
 +cdn.betterttv.net 
 +cdn.frankerfacez.com 
 +cdn2.frankerfacez.com 
 +doubleclick.net 
 +emotes.7tv.app 
 +events.7tv.app 
 +frankerfacez.com 
 +ggpht.com 
 +googleapis.com
 googleusercontent.com googleusercontent.com
 +googlevideo.com
 +gstatic.com
 gvt1.com gvt1.com
 +jnn-pa.googleapis.com
 +l.google.com
 +m.youtube.com
 +nhacmp3youtube.com
 +play.google.com
 +static.7tv.app
 video.google.com video.google.com
-youtube-nocookie.com+wide-youtube.l.google.com 
 +www.youtube.com 
 +youtu.be 
 +youtube.be 
 +youtube.ca 
 +youtube.co 
 +youtube.co.in 
 +youtube.co.uk 
 +youtube.com 
 +youtube.com.au 
 +youtube.com.br 
 +youtube.com.mx 
 +youtube.com.tr 
 +youtube.com.ua 
 +youtube.de 
 +youtube.es 
 +youtube.fr 
 +youtube.googleapis.com 
 +youtube.jp 
 +youtube.nl 
 +youtube.pl 
 +youtube.pt 
 +youtube.ru 
 +youtubeapi.com 
 +youtubechildren.com 
 +youtubecommunity.com 
 +youtubecreators.com
 youtubeeducation.com youtubeeducation.com
 +youtubeembeddedplayer.googleapis.com
 +youtubei.googleapis.com
 youtubekids.com youtubekids.com
 +youtube-nocookie.com
 +youtube-studio.com
 +youtube-ui.l.google.com
 yt.be yt.be
-play.google.com +yt-video-upload.l.google.com 
-nhacmp3youtube.com +yt3.ggpht.com
-apis.google.com +
-doubleclick.net +
-youtube.com +
-youtu.be +
-googlevideo.com +
-googleapis.com+
 ytimg.com ytimg.com
-www.youtube.com+i.ytimg.com 
 +static.doubleclick.net 
 +googleads.g.doubleclick.net
 </code> </code>
  
Строка 273: Строка 428:
 <code bash> <code bash>
 $ chmod +x /opt/etc/init.d/S00fix $ chmod +x /opt/etc/init.d/S00fix
 +</code>
 +
 +/tmp/mnt/SYS/entware/zapret/ipset/get_refilter_domains.sh
 +<code bash>
 +#!/bin/sh
 +
 +IPSET_DIR="$(dirname "$0")"
 +IPSET_DIR="$(cd "$IPSET_DIR"; pwd)"
 +
 +. "$IPSET_DIR/def.sh"
 +
 +TMPLIST="$TMPDIR/list.txt"
 +
 +URL="https://github.com/1andrevich/Re-filter-lists/releases/latest/download/domains_all.lst"
 +
 +dl()
 +{
 +  # $1 - url
 +  # $2 - file
 +  # $3 - minsize
 +  # $4 - maxsize
 +  curl -L -H "Accept-Encoding: gzip" -k --fail --max-time 60 --connect-timeout 10 --retry 4 --max-filesize $4 -o "$TMPLIST" "$1" ||
 +  {
 +   echo list download failed : $1
 +   exit 2
 +  }
 +  dlsize=$(LC_ALL=C LANG=C wc -c "$TMPLIST" | xargs | cut -f 1 -d ' ')
 +  if test $dlsize -lt $3; then
 +   echo list is too small : $dlsize bytes. can be bad.
 +   exit 2
 +  fi
 +  zzcopy "$TMPLIST" "$2"
 +  rm -f "$TMPLIST"
 +}
 +
 +# useful in case ipban set is used in custom scripts
 +FAIL=
 +getipban || FAIL=1
 +"$IPSET_DIR/create_ipset.sh"
 +[ -n "$FAIL" ] && exit
 +
 +dl "$URL" "$ZHOSTLIST" 32768 4194304
 +
 +hup_zapret_daemons
 +
 +exit 0
 </code> </code>