| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
| router:zapret [2025/03/11 22:56] – mirocow | router:zapret [2025/12/16 21:28] (текущий) – mirocow |
|---|
| | {{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> |
| $ amtm ep | $ amtm |
| | ep |
| | /tmp/mnt/SYS |
| </code> | </code> |
| |
| |
| <code bash> | <code bash> |
| $ wget https://github.com/bol-van/zapret/releases/download/v70/zapret-v70.tar.gz | $ wget https://github.com/bol-van/zapret/releases/download/v72.3/zapret-v72.3.tar.gz |
| $ tar -xvzf zapret-v70.tar.gz | $ tar -xvzf zapret-v72.3.tar.gz |
| $ cd zapret-v70 | $ cd zapret-v72.3 |
| $ ./install_easy.sh | $ ./install_easy.sh |
| - Y | - Y |
| - Y | - Y |
| - Y | - Y |
| - 1 | - Y |
| | - 1 : iptables |
| - Y | - Y |
| - N | - N |
| - N | - N |
| - 3 - br0 | - 3 - br0 |
| - 8 - eth3 | - 8 - eth0 |
| - 3 | - 3 |
| </code> | </code> |
| |
| {{:network:7e86e3fac7f44f9d13c3a737d882a845.jpg?600|}} | * **Выбираем iptables** |
| | * **Выбираем имя внутреннего сетевого интерфейса (LAN), br0 - обычно в роутере** |
| | * **Выбираем режим фильтрации трафика (none, ipset, hostlist, autohostlist). - none** |
| |
| Выбираем имя внутреннего сетевого интерфейса (LAN), br0 - обычно в роутере: | ===== Обновление ===== |
| |
| {{:network:7e777b8bf042462347c3d9ff20170beb.jpg?600|}} | <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> |
| |
| Но заворот трафика на nfqws происходит всегда после маршрутизации, поэтому к нему применима только фильтрация по WAN, так что LAN в этом режиме работы неважен. | ==== Режимы фильтрации ==== |
| | |
| <note tip>Важно: выбираем режим фильтрации трафика (none, ipset, hostlist, autohostlist).</note> | |
| |
| * none - фильтрация отключена, весь трафик обрабатывается утилитой. Простейший вариант. Рекомендую его использовать, если не хотите заморачиваться настройкой списков адресов, а хотите просто, чтобы быстро и просто все работало. | * none - фильтрация отключена, весь трафик обрабатывается утилитой. Простейший вариант. Рекомендую его использовать, если не хотите заморачиваться настройкой списков адресов, а хотите просто, чтобы быстро и просто все работало. |
| Режим фильтра также можно потом менять через параметр MODE_FILTER в /opt/zapret/config. | Режим фильтра также можно потом менять через параметр MODE_FILTER в /opt/zapret/config. |
| |
| nano /opt/zapret/init.d/sysv/zapret | ==== Текущие настройки ==== |
| <code bash> | |
| #!/bin/sh | |
| ### BEGIN INIT INFO | |
| # Provides: zapret | |
| # Required-Start: $local_fs $network | |
| # Required-Stop: $local_fs $network | |
| # Default-Start: 2 3 4 5 | |
| # Default-Stop: 0 1 6 | |
| ### END INIT INFO | |
| | |
| SCRIPT=$(readlink -f "$0") | |
| EXEDIR=$(dirname "$SCRIPT") | |
| ZAPRET_BASE=$(readlink -f "$EXEDIR/../..") | |
| . "$EXEDIR/functions" | |
| | |
| NAME=zapret | |
| DESC=anti-zapret | |
| | |
| do_start() | |
| { | |
| | |
| if lsmod | grep "xt_multiport " &> /dev/null ; then | |
| echo "xt_multiport.ko is already loaded" | |
| else | |
| if insmod /lib/modules/$(uname -r)/xt_multiport.ko &> /dev/null; then | |
| echo "iptable_raw.ko loaded" | |
| else | |
| echo "Cannot find xt_multiport.ko kernel module, aborting" | |
| #exit 1 | |
| fi | |
| fi | |
| | |
| if lsmod | grep "xt_connbytes " &> /dev/null ; then | |
| echo "xt_connbytes.ko is already loaded" | |
| else | |
| if insmod /lib/modules/$(uname -r)/xt_connbytes.ko &> /dev/null; then | |
| echo "xt_connbytes.ko loaded" | |
| else | |
| echo "Cannot find xt_connbytes.ko kernel module, aborting" | |
| #exit 1 | |
| fi | |
| fi | |
| | |
| if lsmod | grep "xt_NFQUEUE " &> /dev/null ; then | |
| echo "xt_NFQUEUE.ko is already loaded" | |
| else | |
| if insmod /lib/modules/$(uname -r)/xt_NFQUEUE.ko &> /dev/null; then | |
| echo "xt_NFQUEUE.ko loaded" | |
| else | |
| echo "Cannot find xt_NFQUEUE.ko kernel module, aborting" | |
| #exit 1 | |
| fi | |
| fi | |
| | |
| zapret_run_daemons | |
| [ "$INIT_APPLY_FW" != "1" ] || { zapret_apply_firewall; } | |
| } | |
| do_stop() | |
| { | |
| zapret_stop_daemons | |
| [ "$INIT_APPLY_FW" != "1" ] || zapret_unapply_firewall | |
| } | |
| | |
| case "$1" in | |
| 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=/etc/init.d/$NAME | |
| echo "Usage: $N {start|stop|restart|start-fw|stop-fw|restart-fw|start-daemons|stop-daemons|restart-daemons|reload-ifsets|list-ifsets|list-table}" >&2 | |
| exit 1 | |
| ;; | |
| esac | |
| | |
| exit 0 | |
| </code> | |
| |
| nano /opt/zapret/config | nano /opt/zapret/config |
| <code bash> | <code bash> |
| # Пользователь, от имени которого запускаются демоны zapret | |
| WS_USER=nobody | WS_USER=nobody |
| |
| # Тип фаервола (iptables, nftables, ipfw) | |
| FWTYPE=iptables | FWTYPE=iptables |
| | SET_MAXELEM=1048576 |
| # Максимальное количество элементов в ipset | |
| SET_MAXELEM=522288 | |
| | |
| # Параметры для ipset (размер хэш-таблицы и максимальное количество элементов) | |
| IPSET_OPT="hashsize 262144 maxelem $SET_MAXELEM" | IPSET_OPT="hashsize 262144 maxelem $SET_MAXELEM" |
| |
| # Параметры для агрегации IP-адресов (IPv4) | |
| IP2NET_OPT4="--prefix-length=22-30 --v4-threshold=3/4" | IP2NET_OPT4="--prefix-length=22-30 --v4-threshold=3/4" |
| | IP2NET_OPT6="--prefix-length=48-64 --v6-threshold=3" |
| # Параметры для агрегации IP-адресов (IPv6) | |
| IP2NET_OPT6="--prefix-length=56-64 --v6-threshold=5" | |
| | |
| # Порог повторных попыток для автоматического добавления хостов | |
| AUTOHOSTLIST_RETRANS_THRESHOLD=3 | AUTOHOSTLIST_RETRANS_THRESHOLD=3 |
| |
| # Порог ошибок для автоматического добавления хостов | |
| AUTOHOSTLIST_FAIL_THRESHOLD=3 | AUTOHOSTLIST_FAIL_THRESHOLD=3 |
| | AUTOHOSTLIST_FAIL_TIME=30 |
| # Время, через которое хосты удаляются из автоматического списка | |
| AUTOHOSTLIST_FAIL_TIME=60 | |
| | |
| # Включение отладки для автоматического списка хостов | |
| AUTOHOSTLIST_DEBUGLOG=0 | AUTOHOSTLIST_DEBUGLOG=0 |
| | MDIG_THREADS=50 |
| # Количество потоков для разрешения доменных имен | |
| MDIG_THREADS=30 | |
| | |
| # Сжатие списков IP и доменов | |
| GZIP_LISTS=1 | GZIP_LISTS=1 |
| |
| # Метка для предотвращения зацикливания пакетов в nfqws | |
| DESYNC_MARK=0x40000000 | DESYNC_MARK=0x40000000 |
| |
| # Метка для предотвращения зацикливания пакетов в post-nat режиме | |
| DESYNC_MARK_POSTNAT=0x20000000 | DESYNC_MARK_POSTNAT=0x20000000 |
| | TPWS_SOCKS_ENABLE=0 |
| # Включение SOCKS-прокси | |
| TPWS_SOCKS_ENABLE=1 | |
| | |
| # Порт для SOCKS-прокси | |
| TPPORT_SOCKS=987 | TPPORT_SOCKS=987 |
| |
| # Настройки SOCKS-прокси | |
| TPWS_SOCKS_OPT=" | TPWS_SOCKS_OPT=" |
| --filter-tcp=80 --methodeol <HOSTLIST> --new | --filter-tcp=80 --methodeol <HOSTLIST> --new |
| --filter-tcp=443 --split-pos=1,midsld --disorder <HOSTLIST> | --filter-tcp=443 --split-pos=1,midsld --disorder <HOSTLIST> |
| " | " |
| | TPWS_ENABLE=0 |
| # Включение TPWS (Transparent Proxy Web Server) | |
| TPWS_ENABLE=1 | |
| | |
| # Портs для TPWS | |
| TPWS_PORTS=80,443 | TPWS_PORTS=80,443 |
| |
| # Настройки TPWS | |
| TPWS_OPT=" | TPWS_OPT=" |
| --filter-tcp=80 --methodeol <HOSTLIST> --new | --filter-tcp=80 --methodeol --split-pos=2,midsld --hostlist=/opt/zapret/ipset/youtube_domain_list.txt --new |
| --filter-tcp=443 --split-pos=1,midsld --disorder <HOSTLIST> | --filter-tcp=443 --split-pos=2,midsld --disorder --hostlist=/opt/zapret/ipset/youtube_domain_list.txt |
| " | " |
| |
| # Включение NFQWS (NetFilter Queue Web Server) | |
| NFQWS_ENABLE=1 | NFQWS_ENABLE=1 |
| |
| # Портs для NFQWS (TCP) | |
| NFQWS_PORTS_TCP=80,443 | NFQWS_PORTS_TCP=80,443 |
| |
| # Портs для NFQWS (UDP) | |
| NFQWS_PORTS_UDP=443 | NFQWS_PORTS_UDP=443 |
| |
| # Лимит пакетов для исходящего TCP-трафика | |
| NFQWS_TCP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD)) | NFQWS_TCP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD)) |
| |
| # Лимит пакетов для входящего TCP-трафика | |
| NFQWS_TCP_PKT_IN=3 | NFQWS_TCP_PKT_IN=3 |
| |
| # Лимит пакетов для исходящего UDP-трафика | |
| NFQWS_UDP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD)) | NFQWS_UDP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD)) |
| |
| # Лимит пакетов для входящего UDP-трафика | |
| NFQWS_UDP_PKT_IN=0 | NFQWS_UDP_PKT_IN=0 |
| | MODE_HTTP=1 |
| # Основные настройки NFQWS_OPT для обхода блокировок | MODE_HTTPS=1 |
| | MODE_QUIC=1 |
| NFQWS_OPT=" | NFQWS_OPT=" |
| # youtube | # YouTube rules |
| --filter-tcp=80 --dpi-desync=fake,multisplit --dpi-desync-ttl=8 --dpi-desync-fooling=md5sig,badsum --ip-file=/opt/zapret/ipset/youtube_ip_list.txt --domain-file=/opt/zapret/ipset/youtube_domain_list.txt --new | --filter-tcp=80 --dpi-desync=fake,multisplit --dpi-desync-ttl=1 --hostlist=/opt/zapret/ipset/youtube_domain_list.txt --new |
| --filter-tcp=443 --dpi-desync=fake,multidisorder --dpi-desync-split-pos=method+2,midsld,5 --dpi-desync-ttl=8 --dpi-desync-fooling=md5sig,badsum,badseq --dpi-desync-repeats=15 --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin --ip-file=/opt/zapret/ipset/youtube_ip_list.txt --domain-file=/opt/zapret/ipset/youtube_domain_list.txt --new | --filter-tcp=443 --dpi-desync=fake,multidisorder --dpi-desync-split-pos=1 --dpi-desync-ttl=1 --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin --hostlist=/opt/zapret/ipset/youtube_domain_list.txt --new |
| --filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=15 --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 --ip-file=/opt/zapret/ipset/youtube_ip_list.txt --domain-file=/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 |
| | |
| | # Main rules |
| | --filter-tcp=80,443 --dpi-desync=fake --dpi-desync-ttl=0 |
| | --filter-udp=443 --dpi-desync=fake --dpi-desync-ttl=0 |
| " | " |
| | 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" |
| |
| # Режим фильтрации (none, ipset, hostlist, autohostlist) | # Network settings |
| MODE_FILTER=none | MODE_FILTER=none |
| | FLOWOFFLOAD=disable |
| # Отключение flow offload (donttouch, none, software, hardware) | |
| FLOWOFFLOAD=donttouch | |
| | |
| # Сетевой интерфейс для LAN | |
| IFACE_LAN=br0 | IFACE_LAN=br0 |
| |
| # Сетевой интерфейс для WAN | |
| IFACE_WAN=eth0 | IFACE_WAN=eth0 |
| |
| # Применение правил фаервола при старте/остановке | # Initialization |
| INIT_APPLY_FW=1 | INIT_APPLY_FW=1 |
| |
| # Отключение IPv6 (0 — включен, 1 — отключен) | |
| DISABLE_IPV6=0 | DISABLE_IPV6=0 |
| | DEBUGLOG=0 |
| </code> | </code> |
| |
| Пример для подключения нескольких списков с раздельными правилами | |
| <code bash> | <code bash> |
| # Основные настройки NFQWS_OPT для обхода блокировок | # Network settings |
| NFQWS_OPT=" | MODE_FILTER=none |
| --filter-tcp=80 --dpi-desync=fake,multisplit --dpi-desync-ttl=8 --dpi-desync-fooling=md5sig,badsum --ip-file=/opt/zapret/ip_list.txt --domain-file=/opt/zapret/domain_list.txt --new | FLOWOFFLOAD=disable |
| --filter-tcp=443 --dpi-desync=fake,multidisorder --dpi-desync-split-pos=method+2,midsld,5 --dpi-desync-ttl=8 --dpi-desync-fooling=md5sig,badsum,badseq --dpi-desync-repeats=15 --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin --ip-file=/opt/zapret/ip_list.txt --domain-file=/opt/zapret/domain_list.txt --new | IFACE_LAN=br0 |
| --filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=15 --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 --ip-file=/opt/zapret/ip_list.txt --domain-file=/opt/zapret/domain_list.txt | IFACE_WAN=eth0 |
| | BIND_INTERFACE=1 # Interface binding for stability |
| |
| --filter-tcp=80 --dpi-desync=fake,multisplit --dpi-desync-ttl=8 --dpi-desync-fooling=md5sig,badsum --ip-file=/opt/zapret/ip_list_rutracker.txt --domain-file=/opt/zapret/domain_list_rutracker.txt --new | # Caching and performance |
| --filter-tcp=443 --dpi-desync=fake,multidisorder --dpi-desync-split-pos=method+2,midsld,5 --dpi-desync-ttl=8 --dpi-desync-fooling=md5sig,badsum,badseq --dpi-desync-repeats=15 --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin --ip-file=/opt/zapret/ip_list_rutracker.txt --domain-file=/opt/zapret/domain_list_rutracker.txt --new | ENABLE_DNS_CACHE=1 |
| --filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=15 --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 --ip-file=/opt/zapret/ip_list_rutracker.txt --domain-file=/opt/zapret/domain_list_rutracker.txt | DNS_CACHE_SIZE=10000 |
| " | DNS_CACHE_TTL=300 |
| </code> | |
| |
| ==== Текущие настройки ==== | # Initialization |
| | |
| nano /opt/zapret/config | |
| <code bash> | |
| WS_USER=nobody | |
| FWTYPE=iptables | |
| SET_MAXELEM=522288 | |
| IPSET_OPT="hashsize 262144 maxelem $SET_MAXELEM" | |
| IP2NET_OPT4="--prefix-length=22-30 --v4-threshold=3/4" | |
| IP2NET_OPT6="--prefix-length=56-64 --v6-threshold=5" | |
| AUTOHOSTLIST_RETRANS_THRESHOLD=3 | |
| AUTOHOSTLIST_FAIL_THRESHOLD=3 | |
| AUTOHOSTLIST_FAIL_TIME=60 | |
| AUTOHOSTLIST_DEBUGLOG=0 | |
| MDIG_THREADS=30 | |
| GZIP_LISTS=1 | |
| DESYNC_MARK=0x40000000 | |
| DESYNC_MARK_POSTNAT=0x20000000 | |
| TPWS_SOCKS_ENABLE=0 | |
| TPPORT_SOCKS=987 | |
| TPWS_SOCKS_OPT=" | |
| --filter-tcp=80 --methodeol <HOSTLIST> --new | |
| --filter-tcp=443 --split-pos=1,midsld --disorder <HOSTLIST> | |
| " | |
| TPWS_ENABLE=1 | |
| TPWS_PORTS=80,443 | |
| TPWS_OPT=" | |
| --filter-tcp=80 --methodeol --split-pos=2,midsld --hostlist=/opt/zapret/ipset/youtube_domain_list.txt --new | |
| --filter-tcp=443 --split-pos=2,midsld --disorder --hostlist=/opt/zapret/ipset/youtube_domain_list.txt | |
| " | |
| NFQWS_ENABLE=0 | |
| NFQWS_PORTS_TCP=80,443 | |
| NFQWS_PORTS_UDP=443 | |
| NFQWS_TCP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD)) | |
| NFQWS_TCP_PKT_IN=3 | |
| NFQWS_UDP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD)) | |
| NFQWS_UDP_PKT_IN=0 | |
| MODE_HTTP=0 | |
| MODE_HTTPS=0 | |
| MODE_QUIC=0 | |
| NFQWS_OPT=" | |
| --filter-tcp=80 --dpi-desync=fake,multisplit --dpi-desync-ttl=0 --dpi-desync-fooling=md5sig,badsum --hostlist=/opt/zapret/ipset/youtube_domain_list.txt --new | |
| --filter-tcp=443 --dpi-desync=fake,multidisorder --dpi-desync-split-pos=method+2,midsld,5 --dpi-desync-ttl=0 --dpi-desync-fooling=md5sig,badsum,badseq --dpi-desync-repeats=15 --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin --hostlist=/opt/zapret/ipset/youtube_domain_list.txt --new | |
| --filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=15 --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 | |
| " | |
| MODE_FILTER=none | |
| FLOWOFFLOAD=donttouch | |
| IFACE_LAN=br0 | |
| IFACE_WAN=eth3 | |
| INIT_APPLY_FW=1 | INIT_APPLY_FW=1 |
| DISABLE_IPV6=0 | DISABLE_IPV6=0 |
| DEBUGLOG=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> |
| | |
| | ==== Подготовка листа доменов для обработки ==== |
| | |
| | <code bash> |
| | $ echo '' > /opt/zapret/ipset/youtube_domain_list.txt |
| | </code> |
| | |
| | === Только для теста === |
| |
| * [[:config-default]] | * [[:config-default]] |
| * [[:config-2]] | |
| * [[:config-3]] | |
| * [[:config-4]] | |
| |
| ===== NWQWS_OPT ===== | ===== NWQWS_OPT ===== |
| |
| <code> | <code> |
| --debug=0|1: 1 = выводить отладочные сообщения | --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, ESTABLISHED, FIN, таймаут 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>: дополнительные методики, как сделать, чтобы фейковый пакет не дошел до сервера. Варианты: none, md5sig, badseq, badsum, datanoack, hopbyhop, hopbyhop2 | --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|1: 1 (по умолчанию) = не применять 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|1: 0 (по умолчанию) = работать только по 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> |
| | |
| | ^ Параметр / Комбинация ^ Возможная проблема ^ |
| | | --dpi-desync=fake,multisplit & --dpi-desync=fake,multidisorder | Слишком агрессивные методы для TLS 1.2 могут нарушать стабильность соединения, что критично для Android-плееров и Smart TV. | |
| | | --dpi-desync-split-pos=10 | Слишком высокое значение может не работать для обхода и негативно влиять на производительность. | |
| | | --dpi-desync-ttl=1 / --dpi-desync-ttl=0 | Слишком низкий TTL может помешать пакетам достигать серверов Google, которые находятся "близко" к провайдеру, что приводит к сбоям | |
| | | --dpi-desync-repeats=6 | Может быть недостаточно для стабильного обхода, что приводит к подвисаниям YouTube на Android | |
| | | Отсутствие --dpi-desync-fooling | Без ограничителей фейки могут применяться ко всем подключениям, ломая легитимные | |
| | | | | |
| |
| ===== Фильтры ===== | ===== Фильтры ===== |
| nano /opt/zapret/ipset/youtube_domain_list.txt | nano /opt/zapret/ipset/youtube_domain_list.txt |
| <code> | <code> |
| googlevideo.com | 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 | ggpht.com |
| ytimg.com | googleapis.com |
| | googleusercontent.com |
| | googlevideo.com |
| | gstatic.com |
| | gvt1.com |
| | jnn-pa.googleapis.com |
| l.google.com | l.google.com |
| youtube.com | m.youtube.com |
| www.youtube.com | nhacmp3youtube.com |
| play.google.com | play.google.com |
| youtubei.googleapis.com | static.7tv.app |
| | video.google.com |
| | wide-youtube.l.google.com |
| | www.youtube.com |
| youtu.be | youtu.be |
| nhacmp3youtube.com | youtube.be |
| googleusercontent.com | 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 | googleads.g.doubleclick.net |
| </code> | </code> |
| ==== Скрипты ==== | ==== Скрипты ==== |
| |
| <code bash> | * [[:discord]] |
| $ ls -la /opt/zapret/ipset | |
| $ cp -a /opt/zapret/init.d/custom.d.examples.linux/10-keenetic-udp-fix /opt/zapret/init.d/sysv/custom.d/10-keenetic-udp-fix | |
| </code> | |
| |
| * [[:discord]] | |
| ==== Отключение проверки контрольной суммы пакетов ==== | ==== Отключение проверки контрольной суммы пакетов ==== |
| |
| <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> |
| |
| |
| <code bash> | <code bash> |
| $ /tmp/mnt/USB/entware/zapret/ipset/get_refilter_domains.sh | $ /tmp/mnt/SYS/entware/zapret/ipset/get_refilter_domains.sh |
| $ /opt/zapret/init.d/sysv/zapret restart | $ /opt/zapret/init.d/sysv/zapret restart |
| $ /opt/etc/init.d/S00fix start | $ /opt/etc/init.d/S00fix start |
| ==== Автозапуск ==== | ==== Автозапуск ==== |
| |
| nano /jffs/scripts/firewall-start | nano /jffs/scripts/firewall-start |
| <code bash> | <code bash> |
| #!/bin/sh | #!/bin/sh |
| logger "hostlist" "Update domains list" | logger "hostlist" "Update domains list" |
| |
| /tmp/mnt/USB/entware/zapret/ipset/get_refilter_domains.sh | /tmp/mnt/SYS/entware/zapret/ipset/get_refilter_domains.sh |
| |
| logger "firewall" "Applying dpi-start rules" | logger "firewall" "Applying dpi-start rules" |
| /opt/zapret/init.d/sysv/zapret restart | /opt/zapret/init.d/sysv/zapret restart |
| /opt/etc/init.d/S00fix start | /opt/etc/init.d/S00fix start |
| | </code> |
| |
| | <code bash> |
| | $ chmod +x /jffs/scripts/firewall-start |
| </code> | </code> |