Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| router:zapret [2025/02/04 21:23] – ↷ Страница перемещена из zapret в router:zapret mirocow | router:zapret [2025/12/16 21:28] (текущий) – mirocow | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | {{tag> | ||
| + | |||
| ====== Zapret - DPI bypass multi platform Topics (NFQWS) | ====== Zapret - DPI bypass multi platform Topics (NFQWS) | ||
| - | ===== Entware - Software repository | + | * [[: |
| + | |||
| + | ===== Подготовка | ||
| <code bash> | <code bash> | ||
| - | $ amtm ep | + | $ amtm |
| + | ep | ||
| + | / | ||
| </ | </ | ||
| Строка 12: | Строка 18: | ||
| <code bash> | <code bash> | ||
| - | $ wget https:// | + | $ wget https:// |
| - | $ tar -xvzf zapret-v70.tar.gz | + | $ tar -xvzf zapret-v72.3.tar.gz |
| - | $ cd zapret-v70 | + | $ cd zapret-v72.3 |
| $ ./ | $ ./ | ||
| - Y | - Y | ||
| - Y | - Y | ||
| - Y | - Y | ||
| - | - 1 | + | - Y |
| + | - 1 : iptables | ||
| - Y | - Y | ||
| - N | - N | ||
| Строка 26: | Строка 33: | ||
| - N | - N | ||
| - 3 - br0 | - 3 - br0 | ||
| - | - 8 - eth3 | + | - 8 - eth0 |
| - 3 | - 3 | ||
| </ | </ | ||
| - | {{: | + | * **Выбираем iptables** |
| + | * **Выбираем имя внутреннего сетевого интерфейса (LAN), br0 - обычно в роутере** | ||
| + | * **Выбираем режим фильтрации трафика (none, ipset, hostlist, autohostlist). - none** | ||
| - | Выбираем имя внутреннего сетевого интерфейса (LAN), br0 - обычно в роутере: | + | ===== Обновление ===== |
| - | {{:network: | + | <code bash> |
| + | $ wget https:// | ||
| + | $ tar -xvzf zapret-v72.3.tar.gz | ||
| + | $ cd zapret-v72.3 | ||
| + | $ ./ | ||
| + | </ | ||
| - | Но заворот трафика на nfqws происходит всегда после маршрутизации, | + | ==== Режимы фильтрации |
| - | + | ||
| - | <note tip> | + | |
| * none - фильтрация отключена, | * none - фильтрация отключена, | ||
| Строка 47: | Строка 59: | ||
| Режим фильтра также можно потом менять через параметр MODE_FILTER в / | Режим фильтра также можно потом менять через параметр MODE_FILTER в / | ||
| - | nano / | + | ==== Текущие настройки |
| - | < | + | |
| - | www.youtube.com | + | |
| - | youtube.com | + | |
| - | </ | + | |
| - | + | ||
| - | nano / | + | |
| - | <code bash> | + | |
| - | #!/bin/sh | + | |
| - | ### BEGIN INIT INFO | + | |
| - | # Provides: | + | |
| - | # Required-Start: | + | |
| - | # Required-Stop: | + | |
| - | # Default-Start: | + | |
| - | # Default-Stop: | + | |
| - | ### END INIT INFO | + | |
| - | + | ||
| - | SCRIPT=$(readlink -f " | + | |
| - | EXEDIR=$(dirname " | + | |
| - | ZAPRET_BASE=$(readlink -f " | + | |
| - | . " | + | |
| - | + | ||
| - | NAME=zapret | + | |
| - | DESC=anti-zapret | + | |
| - | + | ||
| - | do_start() | + | |
| - | { | + | |
| - | + | ||
| - | if lsmod | grep " | + | |
| - | echo " | + | |
| - | else | + | |
| - | if insmod / | + | |
| - | echo " | + | |
| - | else | + | |
| - | echo " | + | |
| - | #exit 1 | + | |
| - | fi | + | |
| - | fi | + | |
| - | + | ||
| - | if lsmod | grep " | + | |
| - | echo " | + | |
| - | else | + | |
| - | if insmod / | + | |
| - | echo " | + | |
| - | else | + | |
| - | echo " | + | |
| - | #exit 1 | + | |
| - | fi | + | |
| - | fi | + | |
| - | + | ||
| - | if lsmod | grep " | + | |
| - | echo " | + | |
| - | else | + | |
| - | if insmod / | + | |
| - | echo " | + | |
| - | else | + | |
| - | echo " | + | |
| - | #exit 1 | + | |
| - | fi | + | |
| - | fi | + | |
| - | + | ||
| - | zapret_run_daemons | + | |
| - | [ " | + | |
| - | } | + | |
| - | do_stop() | + | |
| - | { | + | |
| - | zapret_stop_daemons | + | |
| - | [ " | + | |
| - | } | + | |
| - | + | ||
| - | case " | + | |
| - | start) | + | |
| - | do_start | + | |
| - | ;; | + | |
| - | + | ||
| - | stop) | + | |
| - | do_stop | + | |
| - | ;; | + | |
| - | + | ||
| - | restart) | + | |
| - | do_stop | + | |
| - | do_start | + | |
| - | ;; | + | |
| - | + | ||
| - | start-fw|start_fw) | + | |
| - | zapret_apply_firewall | + | |
| - | ;; | + | |
| - | stop-fw|stop_fw) | + | |
| - | zapret_unapply_firewall | + | |
| - | ;; | + | |
| - | + | ||
| - | restart-fw|restart_fw) | + | |
| - | zapret_unapply_firewall | + | |
| - | zapret_apply_firewall | + | |
| - | ;; | + | |
| - | + | ||
| - | start-daemons|start_daemons) | + | |
| - | zapret_run_daemons | + | |
| - | ;; | + | |
| - | stop-daemons|stop_daemons) | + | |
| - | zapret_stop_daemons | + | |
| - | ;; | + | |
| - | restart-daemons|restart_daemons) | + | |
| - | zapret_stop_daemons | + | |
| - | zapret_run_daemons | + | |
| - | ;; | + | |
| - | + | ||
| - | reload-ifsets|reload_ifsets) | + | |
| - | zapret_reload_ifsets | + | |
| - | ;; | + | |
| - | list-ifsets|list_ifsets) | + | |
| - | zapret_list_ifsets | + | |
| - | ;; | + | |
| - | list-table|list_table) | + | |
| - | zapret_list_table | + | |
| - | ;; | + | |
| - | + | ||
| - | *) | + | |
| - | N=/ | + | |
| - | echo " | + | |
| - | exit 1 | + | |
| - | ;; | + | |
| - | esac | + | |
| - | + | ||
| - | exit 0 | + | |
| - | </ | + | |
| nano / | nano / | ||
| <code bash> | <code bash> | ||
| - | # this file is included from init scripts | ||
| - | # change values here | ||
| - | |||
| - | # can help in case /tmp has not enough space | ||
| - | # | ||
| - | |||
| - | # redefine user for zapret daemons. required on Keenetic | ||
| WS_USER=nobody | WS_USER=nobody | ||
| - | |||
| - | # override firewall type : iptables, | ||
| FWTYPE=iptables | FWTYPE=iptables | ||
| - | # nftables only : set this to 0 to use pre-nat mode. default is post-nat. | + | SET_MAXELEM=1048576 |
| - | # pre-nat mode disables some bypass techniques for forwarded traffic but allows to see client IP addresses in debug log | + | |
| - | # | + | |
| - | + | ||
| - | # options for ipsets | + | |
| - | # maximum number of elements in sets. also used for nft sets | + | |
| - | SET_MAXELEM=522288 | + | |
| - | # too low hashsize can cause memory allocation errors on low RAM systems , even if RAM is enough | + | |
| - | # too large hashsize will waste lots of RAM | + | |
| IPSET_OPT=" | IPSET_OPT=" | ||
| - | # dynamically generate additional ip. $1 = ipset/ | ||
| - | # | ||
| - | |||
| - | # options for ip2net. " | ||
| IP2NET_OPT4=" | IP2NET_OPT4=" | ||
| - | IP2NET_OPT6=" | + | IP2NET_OPT6=" |
| - | # options for auto hostlist | + | |
| AUTOHOSTLIST_RETRANS_THRESHOLD=3 | AUTOHOSTLIST_RETRANS_THRESHOLD=3 | ||
| AUTOHOSTLIST_FAIL_THRESHOLD=3 | AUTOHOSTLIST_FAIL_THRESHOLD=3 | ||
| - | AUTOHOSTLIST_FAIL_TIME=60 | + | AUTOHOSTLIST_FAIL_TIME=30 |
| - | # 1 = debug autohostlist positives to ipset/ | + | |
| AUTOHOSTLIST_DEBUGLOG=0 | AUTOHOSTLIST_DEBUGLOG=0 | ||
| - | + | MDIG_THREADS=50 | |
| - | # number of parallel threads for domain list resolves | + | |
| - | MDIG_THREADS=30 | + | |
| - | + | ||
| - | # ipset/*.sh can compress large lists | + | |
| GZIP_LISTS=1 | GZIP_LISTS=1 | ||
| - | # command to reload ip/host lists after update | ||
| - | # comment or leave empty for auto backend selection : ipset or ipfw if present | ||
| - | # on BSD systems with PF no auto reloading happens. you must provide your own command | ||
| - | # set to " | ||
| - | # | ||
| - | |||
| - | # mark bit used by nfqws to prevent loop | ||
| DESYNC_MARK=0x40000000 | DESYNC_MARK=0x40000000 | ||
| DESYNC_MARK_POSTNAT=0x20000000 | DESYNC_MARK_POSTNAT=0x20000000 | ||
| - | |||
| TPWS_SOCKS_ENABLE=0 | TPWS_SOCKS_ENABLE=0 | ||
| - | # tpws socks listens on this port on localhost and LAN interfaces | ||
| TPPORT_SOCKS=987 | TPPORT_SOCKS=987 | ||
| - | # use < | ||
| - | # hostlist markers are replaced to empty string if MODE_FILTER does not satisfy | ||
| - | # < | ||
| TPWS_SOCKS_OPT=" | TPWS_SOCKS_OPT=" | ||
| - | --filter-tcp=80 --methodeol < | + | --filter-tcp=80 --methodeol |
| --filter-tcp=443 --split-pos=1, | --filter-tcp=443 --split-pos=1, | ||
| " | " | ||
| - | |||
| TPWS_ENABLE=0 | TPWS_ENABLE=0 | ||
| TPWS_PORTS=80, | TPWS_PORTS=80, | ||
| - | # use < | ||
| - | # hostlist markers are replaced to empty string if MODE_FILTER does not satisfy | ||
| - | # < | ||
| TPWS_OPT=" | TPWS_OPT=" | ||
| - | --filter-tcp=80 --methodeol | + | --filter-tcp=80 --methodeol |
| - | --filter-tcp=443 --split-pos=1,midsld --disorder | + | --filter-tcp=443 --split-pos=2,midsld --disorder |
| " | " | ||
| - | |||
| NFQWS_ENABLE=1 | NFQWS_ENABLE=1 | ||
| - | # redirect outgoing traffic with connbytes limiter applied in both directions. | ||
| NFQWS_PORTS_TCP=80, | NFQWS_PORTS_TCP=80, | ||
| NFQWS_PORTS_UDP=443 | NFQWS_PORTS_UDP=443 | ||
| - | # PKT_OUT means connbytes dir original | ||
| - | # PKT_IN means connbytes dir reply | ||
| - | # this is --dpi-desync-cutoff=nX kernel mode implementation for linux. it saves a lot of CPU. | ||
| NFQWS_TCP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD)) | NFQWS_TCP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD)) | ||
| NFQWS_TCP_PKT_IN=3 | NFQWS_TCP_PKT_IN=3 | ||
| NFQWS_UDP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD)) | NFQWS_UDP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD)) | ||
| NFQWS_UDP_PKT_IN=0 | NFQWS_UDP_PKT_IN=0 | ||
| - | # redirect outgoing traffic without connbytes limiter and incoming with connbytes limiter | + | MODE_HTTP=1 |
| - | # normally it's needed only for stateless DPI that matches every packet in a single TCP session | + | MODE_HTTPS=1 |
| - | # typical example are plain HTTP keep alives | + | MODE_QUIC=1 |
| - | # this mode can be very CPU consuming. enable with care ! | + | |
| - | # | + | |
| - | # | + | |
| - | # use < | + | |
| - | # hostlist markers are replaced to empty string if MODE_FILTER does not satisfy | + | |
| - | # < | + | |
| NFQWS_OPT=" | NFQWS_OPT=" | ||
| - | --filter-tcp=80 --dpi-desync=fake, | + | # YouTube rules |
| - | --filter-tcp=443 --dpi-desync=fake, | + | --filter-tcp=80 --dpi-desync=fake, |
| - | --filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=15 --dpi-desync-ttl=0 | + | --filter-tcp=443 --dpi-desync=fake, |
| + | # | ||
| + | --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, | ||
| + | |||
| + | # Main rules | ||
| + | --filter-tcp=80, | ||
| + | --filter-udp=443 --dpi-desync=fake --dpi-desync-ttl=0 | ||
| " | " | ||
| + | NFQWS_OPT_DESYNC=" | ||
| + | NFQWS_OPT_DESYNC_QUIC=" | ||
| - | # none, | + | # Network settings |
| MODE_FILTER=none | MODE_FILTER=none | ||
| + | FLOWOFFLOAD=disable | ||
| + | IFACE_LAN=br0 | ||
| + | IFACE_WAN=eth0 | ||
| - | # openwrt only : donttouch, | + | # Initialization |
| - | FLOWOFFLOAD=donttouch | + | INIT_APPLY_FW=1 |
| + | DISABLE_IPV6=0 | ||
| + | DEBUGLOG=0 | ||
| + | </ | ||
| - | # openwrt: specify networks to be treated as LAN. default is " | + | <code bash> |
| - | #OPENWRT_LAN=" | + | # Network settings |
| - | # openwrt: specify networks to be treated as WAN. default wans are interfaces with default route | + | MODE_FILTER=none |
| - | # | + | FLOWOFFLOAD=disable |
| - | # | + | |
| - | + | ||
| - | # for routers based on desktop linux and macos. has no effect in openwrt. | + | |
| - | # CHOOSE LAN and optinally WAN/WAN6 NETWORK INTERFACES | + | |
| - | # or leave them commented if its not router | + | |
| - | # it's possible to specify multiple interfaces like this : IFACE_LAN=" | + | |
| - | # if IFACE_WAN6 is not defined it take the value of IFACE_WAN | + | |
| IFACE_LAN=br0 | IFACE_LAN=br0 | ||
| - | IFACE_WAN=eth3 | + | IFACE_WAN=eth0 |
| - | #IFACE_WAN6=" | + | BIND_INTERFACE=1 # Interface binding for stability |
| - | # should start/stop command of init scripts apply firewall rules ? | + | # Caching and performance |
| - | # not applicable to openwrt with firewall3+iptables | + | ENABLE_DNS_CACHE=1 |
| - | INIT_APPLY_FW=1 | + | DNS_CACHE_SIZE=10000 |
| - | # firewall apply hooks | + | DNS_CACHE_TTL=300 |
| - | # | + | |
| - | # | + | |
| - | # | + | |
| - | # | + | |
| - | # do not work with ipv4 | + | # Initialization |
| - | # | + | INIT_APPLY_FW=1 |
| - | # do not work with ipv6 | + | |
| DISABLE_IPV6=0 | DISABLE_IPV6=0 | ||
| + | DEBUGLOG=0 | ||
| + | # Additional optimizations | ||
| + | # | ||
| + | # | ||
| + | ENABLE_FAST_START=1 | ||
| + | PRELOAD_IPSETS=1 | ||
| - | # select which init script will be used to get ip or host list | + | # YouTube-specific optimizations |
| - | # possible values : get_user.sh get_antizapret.sh get_combined.sh get_reestr.sh get_hostlist.sh | + | YOUTUBE_CDN_OPTIMIZE=1 |
| - | # comment if not required | + | ENABLE_QUIC_BYPASS=1 |
| - | #GETLIST | + | AGGRESSIVE_RETRANSMISSION=1 |
| </ | </ | ||
| - | * [[config-default]] | + | ==== Подготовка листа доменов для обработки ==== |
| - | * [[config-2]] | + | |
| - | * [[config-3]] | + | <code bash> |
| - | * [[config-4]] | + | $ echo '' |
| + | </ | ||
| + | |||
| + | === Только для теста === | ||
| + | |||
| + | * [[:config-default]] | ||
| ===== NWQWS_OPT ===== | ===== NWQWS_OPT ===== | ||
| < | < | ||
| - | --debug=0|1: 1 = выводить отладочные сообщения | + | --debug=0|1 |
| - | --daemon: демонизировать программу | + | --dry-run |
| - | --pidfile=< | + | --version |
| - | --user=< | + | --comment |
| - | --uid=uid[: | + | --daemon |
| - | --qnum=N: номер очереди N | + | --pidfile=< |
| - | --bind-fix4: пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных | + | --user=< |
| - | --bind-fix6: пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных | + | --uid=uid[: |
| - | --wsize=< | + | --qnum=N |
| - | --wssize=< | + | --bind-fix4 |
| - | --wssize-cutoff=[n|d|s]N: изменять server window size в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N | + | --bind-fix6 |
| - | --ctrack-timeouts=S:E:F[:U]: таймауты внутреннего | + | --ctrack-timeouts=S: |
| - | --hostcase: менять регистр заголовка " | + | --ctrack-disable=[0|1] |
| - | --hostnospace: убрать пробел после " | + | --ipcache-lifetime=< |
| - | --hostspell=HoST: точное написание заголовка Host (можно " | + | --ipcache-hostname=[0|1] |
| - | --domcase: домен после Host сделать таким: TeSt.cOm | + | --wsize=< |
| - | --dpi-desync=[< | + | --wssize=< |
| - | --dpi-desync-fwmark=< | + | --wssize-cutoff=[n|d|s]N |
| - | --dpi-desync-ttl=< | + | --wssize-forced-cutoff=0|1 ; 1(default)=автоматически отключать wssize в случае обнаружения известного протокола |
| - | --dpi-desync-ttl6=< | + | --synack-split=[syn|synack|acksyn] |
| - | --dpi-desync-autottl=[< | + | --orig-ttl=< |
| - | --dpi-desync-autottl6=[< | + | --orig-ttl6=< |
| - | --dpi-desync-fooling=< | + | --orig-autottl=[< |
| - | --dpi-desync-repeats=< | + | --orig-autottl6=[< |
| - | --dpi-desync-skip-nosni=0|1: 1 (по умолчанию) = не применять dpi desync для запросов без hostname в SNI, в частности для ESNI | + | --orig-tcp-flags-set=< |
| - | --dpi-desync-split-pos=< | + | --orig-tcp-flags-unset=< |
| - | --dpi-desync-split-http-req=method|host: разбивка HTTP request | + | --orig-mod-start=[n|d|s]N |
| - | --dpi-desync-split-tls=sni|sniext: разбивка TLS client hello на указанном логическом месте | + | --orig-mod-cutoff=[n|d|s]N |
| - | --dpi-desync-split-seqovl=<int>: использовать sequence overlap перед первым | + | --dup=< |
| - | --dpi-desync-split-seqovl-pattern=<filename>|0xHEX: чем заполнять фейковую часть overlap | + | --dup-replace=[0|1] |
| - | --dpi-desync-badseq-increment=< | + | --dup-ttl=< |
| - | --dpi-desync-badack-increment=< | + | --dup-ttl6=< |
| - | --dpi-desync-any-protocol=0|1: 0 (по умолчанию) = работать только по HTTP request и TLS client hello, | + | --dup-autottl=[< |
| - | --dpi-desync-fake-http=< | + | --dup-autottl6=[< |
| - | --dpi-desync-fake-tls=< | + | --dup-tcp-flags-set=< |
| - | --dpi-desync-fake-unknown=< | + | --dup-tcp-flags-unset=< |
| - | --dpi-desync-fake-syndata=< | + | --dup-fooling=< |
| - | --dpi-desync-fake-quic=< | + | --dup-ts-increment=< |
| - | --dpi-desync-fake-dht=< | + | --dup-badseq-increment=< |
| - | --dpi-desync-fake-unknown-udp=< | + | --dup-badack-increment=< |
| - | --dpi-desync-udplen-increment=< | + | --dup-ip-id=same|zero|seq|rnd |
| - | --dpi-desync-udplen-pattern=< | + | --dup-start=[n|d|s]N |
| - | --dpi-desync-start=[n|d|s]N: применять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру больше или равно N | + | --dup-cutoff=[n|d|s]N |
| - | --dpi-desync-cutoff=[n|d|s]N: применять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N | + | --hostcase |
| - | --hostlist=< | + | --hostnospace |
| - | --hostlist-exclude=< | + | --methodeol |
| - | --hostlist-auto=< | + | --hostspell=HoST |
| - | --hostlist-auto-fail-threshold=< | + | --domcase |
| - | --hostlist-auto-fail-time=< | + | --ip-id=seq|seqgroup|rnd|zero |
| - | --hostlist-auto-retrans-threshold=< | + | --dpi-desync=[< |
| - | --hostlist-auto-debug=< | + | --dpi-desync-fwmark=< |
| - | --new: начало новой стратегии | + | --dpi-desync-ttl=< |
| - | --filter-l3=ipv4|ipv6: фильтр версии ip для текущей стратегии | + | --dpi-desync-ttl6=< |
| - | --filter-tcp=[~]port1[-port2]: фильтр портов tcp для текущей стратегии. ~ означает инверсию. установка фильтра tcp и неустановка фильтра udp запрещает udp. | + | --dpi-desync-autottl=[< |
| - | --filter-udp=[~]port1[-port2]: фильтр портов udp для текущей стратегии. ~ означает инверсию. установка фильтра udp и неустановка фильтра tcp запрещает | + | --dpi-desync-autottl6=[< |
| + | --dpi-desync-tcp-flags-set=< | ||
| + | --dpi-desync-tcp-flags-unset=< | ||
| + | --dpi-desync-fooling=< | ||
| + | --dpi-desync-repeats=< | ||
| + | --dpi-desync-skip-nosni=0|1 | ||
| + | --dpi-desync-split-pos=N|-N|marker+N|marker-N | ||
| + | --dpi-desync-split-seqovl=N|-N|marker+N|marker-N | ||
| + | --dpi-desync-split-seqovl-pattern=[+ofs]@< | ||
| + | --dpi-desync-fakedsplit-pattern=[+ofs]@<filename>|0xHEX | ||
| + | --dpi-desync-fakedsplit-mod=mod[, | ||
| + | --dpi-desync-hostfakesplit-midhost=marker+N|marker-N | ||
| + | --dpi-desync-hostfakesplit-mod=mod[, | ||
| + | --dpi-desync-ts-increment=< | ||
| + | --dpi-desync-badseq-increment=< | ||
| + | --dpi-desync-badack-increment=< | ||
| + | --dpi-desync-any-protocol=0|1 | ||
| + | --dpi-desync-fake-tcp-mod=mod[, | ||
| + | --dpi-desync-fake-http=[+ofs]@< | ||
| + | --dpi-desync-fake-tls=[+ofs]@< | ||
| + | --dpi-desync-fake-tls-mod=mod[, | ||
| + | --dpi-desync-fake-unknown=[+ofs]@< | ||
| + | --dpi-desync-fake-syndata=[+ofs]@< | ||
| + | --dpi-desync-fake-quic=[+ofs]@< | ||
| + | --dpi-desync-fake-wireguard=[+ofs]@< | ||
| + | --dpi-desync-fake-dht=[+ofs]@< | ||
| + | --dpi-desync-fake-discord=[+ofs]@< | ||
| + | --dpi-desync-fake-stun=[+ofs]@< | ||
| + | --dpi-desync-fake-unknown-udp=[+ofs]@< | ||
| + | --dpi-desync-udplen-increment=< | ||
| + | --dpi-desync-udplen-pattern=[+ofs]@< | ||
| + | --dpi-desync-start=[n|d|s]N | ||
| + | --dpi-desync-cutoff=[n|d|s]N | ||
| + | --hostlist=< | ||
| + | ; в файле должен быть хост на каждой строке. | ||
| + | ; список читается при | ||
| + | ; при изменении | ||
| + | ; список может | ||
| + | ; списков может быть множество. пустой общий лист = его отсутствие | ||
| + | ; хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello. | ||
| + | --hostlist-domains=< | ||
| + | --hostlist-exclude=< | ||
| + | --hostlist-exclude-domains=< | ||
| + | --hostlist-auto=< | ||
| + | --hostlist-auto-fail-threshold=< | ||
| + | --hostlist-auto-fail-time=< | ||
| + | --hostlist-auto-retrans-threshold=< | ||
| + | --hostlist-auto-debug=< | ||
| + | --new ; начало новой стратегии | ||
| + | --skip | ||
| + | --filter-l3=ipv4|ipv6 | ||
| + | --filter-tcp=[~]port1[-port2]|* ; | ||
| + | --filter-udp=[~]port1[-port2]|* ; | ||
| + | --filter-l7=< | ||
| + | --filter-ssid=ssid1[, | ||
| + | --ipset=< | ||
| + | --ipset-ip=< | ||
| + | --ipset-exclude=< | ||
| + | --ipset-exclude-ip=< | ||
| + | </ | ||
| + | ^ Параметр / Комбинация | ||
| + | | --dpi-desync=fake, | ||
| + | | --dpi-desync-split-pos=10 | ||
| + | | --dpi-desync-ttl=1 / --dpi-desync-ttl=0 | ||
| + | | --dpi-desync-repeats=6 | ||
| + | | Отсутствие --dpi-desync-fooling | ||
| + | | | ||
| + | |||
| + | ===== Фильтры ===== | ||
| + | |||
| + | nano / | ||
| + | < | ||
| + | www.youtube.com | ||
| + | youtube.com | ||
| </ | </ | ||
| + | nano / | ||
| + | < | ||
| - | ==== Скрипты ==== | + | </ |
| - | <code bash> | + | nano / |
| - | $ ls -la / | + | < |
| - | $ cp -a / | + | 10tv.app |
| + | 1e100.net | ||
| + | 7tv.app | ||
| + | 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 | ||
| + | googlevideo.com | ||
| + | gstatic.com | ||
| + | gvt1.com | ||
| + | jnn-pa.googleapis.com | ||
| + | l.google.com | ||
| + | m.youtube.com | ||
| + | nhacmp3youtube.com | ||
| + | play.google.com | ||
| + | static.7tv.app | ||
| + | video.google.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 | ||
| + | youtubeembeddedplayer.googleapis.com | ||
| + | youtubei.googleapis.com | ||
| + | youtubekids.com | ||
| + | youtube-nocookie.com | ||
| + | youtube-studio.com | ||
| + | youtube-ui.l.google.com | ||
| + | yt.be | ||
| + | yt-video-upload.l.google.com | ||
| + | yt3.ggpht.com | ||
| + | ytimg.com | ||
| + | i.ytimg.com | ||
| + | static.doubleclick.net | ||
| + | googleads.g.doubleclick.net | ||
| </ | </ | ||
| - | | + | nano / |
| + | < | ||
| + | 0.0.0.0/8 | ||
| + | 10.0.0.0/ | ||
| + | 192.168.0.0/ | ||
| + | 172.16.0.0/ | ||
| + | 100.64.0.0/ | ||
| + | 169.254.0.0/ | ||
| + | 224.0.0.0/ | ||
| + | 255.255.255.255/ | ||
| + | </ | ||
| + | |||
| + | ==== Скрипты ==== | ||
| + | |||
| + | | ||
| ==== Отключение проверки контрольной суммы пакетов ==== | ==== Отключение проверки контрольной суммы пакетов ==== | ||
| Строка 420: | Строка 428: | ||
| <code bash> | <code bash> | ||
| $ chmod +x / | $ chmod +x / | ||
| + | </ | ||
| + | |||
| + | / | ||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | |||
| + | IPSET_DIR=" | ||
| + | IPSET_DIR=" | ||
| + | |||
| + | . " | ||
| + | |||
| + | TMPLIST=" | ||
| + | |||
| + | URL=" | ||
| + | |||
| + | dl() | ||
| + | { | ||
| + | # $1 - url | ||
| + | # $2 - file | ||
| + | # $3 - minsize | ||
| + | # $4 - maxsize | ||
| + | curl -L -H " | ||
| + | { | ||
| + | echo list download failed : $1 | ||
| + | exit 2 | ||
| + | } | ||
| + | dlsize=$(LC_ALL=C LANG=C wc -c " | ||
| + | if test $dlsize -lt $3; then | ||
| + | echo list is too small : $dlsize bytes. can be bad. | ||
| + | exit 2 | ||
| + | fi | ||
| + | zzcopy " | ||
| + | rm -f " | ||
| + | } | ||
| + | |||
| + | # useful in case ipban set is used in custom scripts | ||
| + | FAIL= | ||
| + | getipban || FAIL=1 | ||
| + | " | ||
| + | [ -n " | ||
| + | |||
| + | dl " | ||
| + | |||
| + | hup_zapret_daemons | ||
| + | |||
| + | exit 0 | ||
| </ | </ | ||
| Строка 425: | Строка 479: | ||
| <code bash> | <code bash> | ||
| - | $ /tmp/mnt/USB/ | + | $ /tmp/mnt/SYS/ |
| $ / | $ / | ||
| $ / | $ / | ||
| Строка 433: | Строка 487: | ||
| ==== Автозапуск ==== | ==== Автозапуск ==== | ||
| - | nano / | + | nano / |
| <code bash> | <code bash> | ||
| - | /tmp/mnt/USB/ | + | #!/bin/sh |
| - | / | + | |
| + | sleep 10 | ||
| + | |||
| + | logger " | ||
| + | |||
| + | /tmp/mnt/SYS/ | ||
| + | |||
| + | logger " | ||
| / | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | $ chmod +x / | ||
| </ | </ | ||