Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
router:zapret [2025/02/04 21:23] – ↷ Страница перемещена из zapret в router:zapret mirocow | router:zapret [2025/09/27 22:24] (текущий) – mirocow | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Zapret - DPI bypass multi platform Topics (NFQWS) | ====== Zapret - DPI bypass multi platform Topics (NFQWS) | ||
+ | * [[:nfqws]] | ||
===== Entware - Software repository ===== | ===== Entware - Software repository ===== | ||
<code bash> | <code bash> | ||
- | $ amtm ep | + | $ amtm |
+ | ep | ||
+ | / | ||
</ | </ | ||
Строка 12: | Строка 15: | ||
<code bash> | <code bash> | ||
- | $ wget https:// | + | $ wget https:// |
- | $ tar -xvzf zapret-v70.tar.gz | + | $ tar -xvzf zapret-v71.4.tar.gz |
- | $ cd zapret-v70 | + | $ cd zapret-v71.4 |
$ ./ | $ ./ | ||
- Y | - Y | ||
- Y | - Y | ||
- Y | - Y | ||
- | - 1 | + | - Y |
+ | - 1 : iptables | ||
- Y | - Y | ||
- N | - N | ||
Строка 30: | Строка 34: | ||
</ | </ | ||
- | {{: | + | * **Выбираем iptables** |
+ | * **Выбираем имя внутреннего сетевого интерфейса (LAN), br0 - обычно в роутере** | ||
+ | * **Выбираем режим фильтрации трафика (none, ipset, hostlist, autohostlist). - none** | ||
- | Выбираем имя внутреннего сетевого интерфейса (LAN), br0 - обычно в роутере: | + | ==== Режимы фильтрации |
- | + | ||
- | {{: | + | |
- | + | ||
- | Но заворот трафика на nfqws происходит всегда после маршрутизации, | + | |
- | + | ||
- | <note tip> | + | |
* none - фильтрация отключена, | * none - фильтрация отключена, | ||
Строка 47: | Строка 47: | ||
Режим фильтра также можно потом менять через параметр 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=" | |
- | # none,ipset,hostlist,autohostlist | + | NFQWS_OPT_DESYNC_QUIC=" |
MODE_FILTER=none | MODE_FILTER=none | ||
- | + | FLOWOFFLOAD=disable | |
- | # openwrt only : donttouch, | + | |
- | FLOWOFFLOAD=donttouch | + | |
- | + | ||
- | # openwrt: specify networks to be treated as LAN. default is " | + | |
- | # | + | |
- | # openwrt: specify networks to be treated as WAN. default wans are interfaces with default route | + | |
- | # | + | |
- | # | + | |
- | + | ||
- | # 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 |
- | # | + | |
- | + | ||
- | # should start/stop command of init scripts apply firewall rules ? | + | |
- | # not applicable to openwrt with firewall3+iptables | + | |
INIT_APPLY_FW=1 | INIT_APPLY_FW=1 | ||
- | # firewall apply hooks | ||
- | # | ||
- | # | ||
- | # | ||
- | # | ||
- | |||
- | # do not work with ipv4 | ||
- | # | ||
- | # do not work with ipv6 | ||
DISABLE_IPV6=0 | DISABLE_IPV6=0 | ||
+ | DEBUGLOG=0 | ||
+ | </ | ||
- | # select which init script will be used to get ip or host list | + | <code bash> |
- | # possible values : get_user.sh get_antizapret.sh get_combined.sh get_reestr.sh get_hostlist.sh | + | $ echo '' |
- | # comment if not required | + | |
- | #GETLIST | + | |
</ | </ | ||
- | * [[config-default]] | + | === Только для теста === |
- | * [[config-2]] | + | |
- | * [[config-3]] | + | * [[:config-default]] |
- | * [[config-4]] | + | |
===== NWQWS_OPT ===== | ===== NWQWS_OPT ===== | ||
Строка 379: | Строка 178: | ||
</ | </ | ||
+ | ===== Фильтры ===== | ||
- | ==== Скрипты ==== | + | nano / |
+ | < | ||
+ | www.youtube.com | ||
+ | youtube.com | ||
+ | </ | ||
+ | |||
+ | nano / | ||
+ | < | ||
- | <code bash> | ||
- | $ ls -la / | ||
- | $ cp -a / | ||
</ | </ | ||
- | | + | nano / |
+ | < | ||
+ | youtube.com | ||
+ | youtu.be | ||
+ | googlevideo.com | ||
+ | googleapis.com | ||
+ | ggpht.com | ||
+ | ytimg.com | ||
+ | youtube-nocookie.com | ||
+ | play.google.com | ||
+ | gstatic.com | ||
+ | googlevideo.com | ||
+ | ggpht.com | ||
+ | ytimg.com | ||
+ | l.google.com | ||
+ | youtube.com | ||
+ | www.youtube.com | ||
+ | play.google.com | ||
+ | youtubei.googleapis.com | ||
+ | youtu.be | ||
+ | nhacmp3youtube.com | ||
+ | googleusercontent.com | ||
+ | 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/ | ||
+ | </ | ||
+ | |||
+ | ==== Скрипты ==== | ||
+ | |||
+ | | ||
==== Отключение проверки контрольной суммы пакетов ==== | ==== Отключение проверки контрольной суммы пакетов ==== | ||
Строка 425: | Строка 269: | ||
<code bash> | <code bash> | ||
- | $ /tmp/mnt/USB/ | + | $ /tmp/mnt/SYS/ |
$ / | $ / | ||
$ / | $ / | ||
Строка 433: | Строка 277: | ||
==== Автозапуск ==== | ==== Автозапуск ==== | ||
- | nano / | + | nano / |
<code bash> | <code bash> | ||
- | /tmp/mnt/USB/ | + | #!/bin/sh |
- | / | + | |
+ | sleep 10 | ||
+ | |||
+ | logger " | ||
+ | |||
+ | /tmp/mnt/SYS/ | ||
+ | |||
+ | logger " | ||
/ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | $ chmod +x / | ||
</ | </ |