mirror of
https://github.com/bol-van/zapret.git
synced 2024-12-02 22:50:53 +03:00
Compare commits
No commits in common. "1fbc26b77b89762fb415b85a0e0142a1dd9de9e8" and "03d51a3ccc8ffb40cdf934a7d14dd48c4db9c48f" have entirely different histories.
1fbc26b77b
...
03d51a3ccc
@ -500,7 +500,6 @@ write_config_var()
|
||||
fi
|
||||
else
|
||||
# var does not exist in config. add it
|
||||
contains "$M" " " && M="\"$M\""
|
||||
if [ -n "$M" ]; then
|
||||
echo "$1=$M" >>"$ZAPRET_CONFIG"
|
||||
else
|
||||
|
@ -84,9 +84,7 @@ NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake --dpi-desync-repeats=6"
|
||||
#NFQWS_OPT_DESYNC_QUIC6_SUFFIX=""
|
||||
|
||||
# CHOOSE TPWS DAEMON OPTIONS. run "tpws/tpws --help" for option list
|
||||
# SUFFIX VARS define additional lower priority desync profile. it's required if MODE_FILTER=hostlist and strategy has hostlist-incompatible 0-phase desync methods (mss)
|
||||
TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3 --oob"
|
||||
#TPWS_OPT_SUFFIX="--mss 88"
|
||||
|
||||
# openwrt only : donttouch,none,software,hardware
|
||||
FLOWOFFLOAD=donttouch
|
||||
|
@ -313,7 +313,3 @@ v62:
|
||||
|
||||
tpws: connection close logic rewrite. tcp user timeout parameters for local and remote leg.
|
||||
nfqws: multi-strategy
|
||||
|
||||
v63:
|
||||
|
||||
tpws: multi-strategy
|
||||
|
@ -97,6 +97,7 @@ blockcheck не всегда может выдать вам в итогах оп
|
||||
--dpi-desync-fooling, чтобы не сломать сайты на более коротких дистанциях.
|
||||
md5sig наиболее совместим, но работает только на linux серверах.
|
||||
badseq может работать только на https и не работать на http.
|
||||
badsum и вовсе перестал работать на многих провайдерах с некоторых пор, видимо включили проверку чексумм на DPI.
|
||||
Чтобы выяснить какие дополнительные ограничители работают, смотрите результат теста аналогичных стратегий без TTL
|
||||
с каждым из этих ограничителей.
|
||||
|
||||
@ -104,11 +105,6 @@ badseq может работать только на https и не работа
|
||||
может на одних провайдерах работать стабильно, на других потребуется выяснить при каких параметрах
|
||||
она стабильна, на третьих полный хаос, и проще отказаться.
|
||||
|
||||
Если используются методы нулевой фазы десинхронизации (--mss, --wssize, --syndata) и режим фильтрации hostlist,
|
||||
то все параметры, относящиеся к этим методам, следует помещать не в основные параметры (например, NFQWS_OPT_DESYNC),
|
||||
а в suffix (NFQWS_OPT_DESYNC_SUFFIX). Чтобы не ошибиться, можно их продублировать и там, и там.
|
||||
Иначе они могут не работать.
|
||||
|
||||
8) Запустите install_easy.sh.
|
||||
Выберите nfqws или tpws, затем согласитесь на редактирование параметров.
|
||||
Откроется редактор, куда впишите найденные стратегии.
|
||||
|
@ -87,11 +87,6 @@ badseq может работать только на https и не работа
|
||||
может на одних провайдерах работать стабильно, на других потребуется выяснить при каких параметрах
|
||||
она стабильна, на третьих полный хаос, и проще отказаться.
|
||||
|
||||
Если используются методы нулевой фазы десинхронизации (--wssize, --syndata) и фильтр hostlist,
|
||||
то все параметры, относящиеся к этим методам, следует помещать в следующий профиль без хостлиста,
|
||||
к которому перейдет управление, когда имя хоста еще неизвестно.
|
||||
Используйте параметр --debug для отладки вашего сценария.
|
||||
|
||||
7) Протестируйте найденные стратегии на winws. winws следует брать из zapret-winws.
|
||||
Для этого откройте командную строку windows от имени администратора в директории zapret-winws.
|
||||
Проще всего это сделать через _CMD_ADMIN.cmd. Он сам поднимет права и зайдет в нужную директорию.
|
||||
|
@ -633,10 +633,6 @@ tpws is transparent proxy.
|
||||
; its worth to make a reserve with 1.5 multiplier. by default maxfiles is (X*connections)*1.5+16
|
||||
--max-orphan-time=<sec> ; if local leg sends something and closes and remote leg is still connecting then cancel connection attempt after N seconds
|
||||
|
||||
--new ; begin new strategy
|
||||
--filter-l3=ipv4|ipv6 ; L3 protocol filter. multiple comma separated values allowed.
|
||||
--filter-tcp=[~]port1[-port2] ; TCP port filter. ~ means negation
|
||||
|
||||
--hostlist=<filename> ; only act on hosts in the list (one host per line, subdomains auto apply, gzip supported, multiple hostlists allowed)
|
||||
--hostlist-exclude=<filename> ; do not act on hosts in the list (one host per line, subdomains auto apply, gzip supported, multiple hostlists allowed)
|
||||
--hostlist-auto=<filename> ; detect DPI blocks and build hostlist automatically
|
||||
@ -741,17 +737,11 @@ Server replies with it's own MSS in SYN,ACK packet. Usually servers lower their
|
||||
fit to supplied MSS. The greater MSS client sets the bigger server's packets will be.
|
||||
If it's enough to split TLS 1.2 ServerHello, it may fool DPI that checks certificate domain name.
|
||||
This scheme may significantly lower speed. Hostlist filter is possible only in socks mode if client uses remote resolving (firefox `network.proxy.socks_remote_dns`).
|
||||
`--mss` is not required for TLS1.3. If TLS1.3 is negotiable then MSS make things only worse.
|
||||
TLS version filters are not possible.
|
||||
`--mss-pf` sets port filter for MSS. Use `mss-pf=443` to apply MSS only for https.
|
||||
Likely not required for TLS1.3. If TLS1.3 is negotiable then MSS make things only worse.
|
||||
Use only if nothing better is available. Works only in Linux, not BSD or MacOS.
|
||||
|
||||
### multiple strategies
|
||||
|
||||
`tpws` supports multiple strategies as well. They work mostly like with `nfqws` with minimal differences.
|
||||
`filter-udp` is absent because `tpws` does not support udp. 0-phase desync methods (`--mss`) can work with hostlist in socks modes with remote hostname resolve.
|
||||
This is the point where you have to plan profiles carefully. If you use `--mss` and hostlist filters, behaviour can be different depending on remote resolve feature enabled or not.
|
||||
Use `--mss` both in hostlist profile and profile without hostlist.
|
||||
Use `curl --socks5` and `curl --socks5-hostname` to issue two kinds of proxy queries.
|
||||
See `--debug` output to test your setup.
|
||||
|
||||
## Ways to get a list of blocked IP
|
||||
|
||||
@ -949,12 +939,6 @@ Its possible to change manipulation options used by tpws :
|
||||
|
||||
`TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3"`
|
||||
|
||||
Additional low priority desync profile for `MODE_FILTER=hostlist`.
|
||||
With multiple profile support 0-phase desync methods are no more applied with hostlist !
|
||||
To apply them additional profile is required without hostlist filter.
|
||||
|
||||
`TPWS_OPT_SUFFIX="--mss=88"`
|
||||
|
||||
nfqws options for DPI desync attack:
|
||||
|
||||
```
|
||||
|
@ -1,4 +1,4 @@
|
||||
zapret v.63
|
||||
zapret v.62
|
||||
|
||||
English
|
||||
-------
|
||||
@ -774,9 +774,6 @@ tpws - это transparent proxy.
|
||||
--hostlist-auto-fail-threshold=<int> ; сколько раз нужно обнаружить ситуацию, похожую на блокировку, чтобы добавить хост в лист (по умолчанию: 3)
|
||||
--hostlist-auto-fail-time=<int> ; все эти ситуации должны быть в пределах указанного количества секунд (по умолчанию: 60)
|
||||
--hostlist-auto-debug=<logfile> ; лог положительных решений по autohostlist. позволяет разобраться почему там появляются хосты.
|
||||
--new ; начало новой стратегии
|
||||
--filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии
|
||||
--filter-tcp=[~]port1[-port2] ; фильтр портов tcp для текущей стратегии. ~ означает инверсию.
|
||||
|
||||
|
||||
--debug позволяет выводить подробный лог действий на консоль, в syslog или в файл.
|
||||
@ -906,12 +903,13 @@ tpws поддерживает эту возможность асинхронно
|
||||
С фильтром по hostlist совместимо только в режиме socks при включенном удаленном ресолвинге хостов.
|
||||
(firefox network.proxy.socks_remote_dns). Это единственный вариант, когда tpws может узнать имя хоста
|
||||
еще на этапе установления соединения.
|
||||
Невозможен фильтр по версии TLS.
|
||||
Взамен имеется фильтр по портам --mss-pf. --mss-pf=443 применяет дурение только к https.
|
||||
Применяя данную опцию к сайтам TLS1.3, если броузер тоже поддерживает TLS1.3, то вы делаете только хуже.
|
||||
Но нет способа автоматически узнать когда надо применять, когда нет, поскольку MSS идет только в
|
||||
3-way handshake еще до обмена данными, а версию TLS можно узнать только по ответу сервера, который
|
||||
может привести к реакции DPI.
|
||||
Использовать только когда нет ничего лучше или для отдельных ресурсов.
|
||||
Для http использовать смысла нет, поэтому заводите отдельный desync profile с фильтром по порту 443.
|
||||
Работает только на linux, не работает на BSD и MacOS.
|
||||
|
||||
--skip-nodelay может быть полезен, чтобы привести MTU к MTU системы, на которой работает tpws.
|
||||
@ -926,20 +924,6 @@ TCP_USER_TIMEOUT. Под таймаутом подразумевается вр
|
||||
что данных для передачи нет. Полезно для сокращения время закрытия подвисших соединений.
|
||||
Поддерживается только на Linux и MacOS.
|
||||
|
||||
МНОЖЕСТВЕННЫЕ СТРАТЕГИИ
|
||||
Работают аналогично nfqws, кроме некоторых моментов.
|
||||
Нет параметра --filter-udp, поскольку tpws udp не поддерживает.
|
||||
Методы нулевой фазы (--mss) могут работать по хостлисту в одном единственном случае :
|
||||
если используется режим socks и удаленный ресолвинг хостов через прокси.
|
||||
То есть работоспособность вашей настройки в одном и том же режиме может зависеть от того,
|
||||
применяет ли клиент удаленный ресолвинг. Это может быть неочевидно.
|
||||
В одной программе работает, в другой - нет.
|
||||
Если вы используете профиль с хостлистом , и вам нужен mss, укажите mss в профиле с хостлистом,
|
||||
создайте еще один профиль без хостлиста, если его еще нет, и в нем еще раз укажите mss.
|
||||
Тогда при любом раскладе будет выполняться mss.
|
||||
Используйте `curl --socks5` и `curl --socks5-hostname` для проверки вашей стратегии.
|
||||
Смотрите вывод --debug, чтобы убедиться в правильности настроек.
|
||||
|
||||
Способы получения списка заблокированных IP
|
||||
-------------------------------------------
|
||||
|
||||
@ -1385,12 +1369,6 @@ MODE_FILTER=none
|
||||
|
||||
TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3"
|
||||
|
||||
Дополнительный низкоприоритетный профиль десинхронизации для режимов с MODE_FILTER=hostlist.
|
||||
После реализации поддержки множественных профилей режимы нулевой фазы десинхронизации больше не применяются с хостлистом !
|
||||
Для их применения требуется дополнительный профиль без хостлист фильтра.
|
||||
|
||||
#TPWS_OPT_SUFFIX="--mss 88"
|
||||
|
||||
Опции nfqws для атаки десинхронизации DPI :
|
||||
|
||||
DESYNC_MARK=0x40000000
|
||||
|
BIN
files/fake/quic_initial_google_com.bin
Normal file
BIN
files/fake/quic_initial_google_com.bin
Normal file
Binary file not shown.
@ -6,10 +6,9 @@ zapret_custom_daemons()
|
||||
{
|
||||
# $1 - 1 - run, 0 - stop
|
||||
local opt="--user=root --port=$TPPORT_MY"
|
||||
filter_apply_hostlist_target opt
|
||||
tpws_apply_binds opt
|
||||
opt="$opt $TPWS_OPT"
|
||||
filter_apply_hostlist_target opt
|
||||
filter_apply_suffix opt "$TPWS_OPT_SUFFIX"
|
||||
do_daemon $1 1 "$TPWS" "$opt"
|
||||
}
|
||||
|
||||
|
@ -163,10 +163,9 @@ zapret_do_daemons()
|
||||
}
|
||||
# MacOS requires root. kernel hardcoded requirement for /dev/pf ioctls
|
||||
opt="--user=root --port=$TPPORT"
|
||||
filter_apply_hostlist_target opt
|
||||
tpws_apply_binds opt
|
||||
opt="$opt $TPWS_OPT"
|
||||
filter_apply_hostlist_target opt
|
||||
filter_apply_suffix opt "$TPWS_OPT_SUFFIX"
|
||||
do_daemon $1 1 "$TPWS" "$opt"
|
||||
;;
|
||||
tpws-socks)
|
||||
@ -176,9 +175,8 @@ zapret_do_daemons()
|
||||
}
|
||||
opt="--socks --user=$WS_USER --port=$TPPORT"
|
||||
tpws_apply_socks_binds opt
|
||||
opt="$opt $TPWS_OPT"
|
||||
filter_apply_hostlist_target opt
|
||||
filter_apply_suffix opt "$TPWS_OPT_SUFFIX"
|
||||
opt="$opt $TPWS_OPT"
|
||||
do_daemon $1 1 "$TPWS" "$opt"
|
||||
;;
|
||||
filter)
|
||||
|
@ -10,7 +10,6 @@ zapret_custom_daemons()
|
||||
[ "$MODE_HTTP" = "1" ] && {
|
||||
opt="--port=$TPPORT $TPWS_OPT"
|
||||
filter_apply_hostlist_target opt
|
||||
filter_apply_suffix opt "$TPWS_OPT_SUFFIX"
|
||||
run_tpws 1 "$opt"
|
||||
}
|
||||
|
||||
|
@ -122,13 +122,11 @@ start_daemons_procd()
|
||||
tpws)
|
||||
opt="--port=$TPPORT $TPWS_OPT"
|
||||
filter_apply_hostlist_target opt
|
||||
filter_apply_suffix opt "$TPWS_OPT_SUFFIX"
|
||||
run_tpws 1 "$opt"
|
||||
;;
|
||||
tpws-socks)
|
||||
opt="--port=$TPPORT $TPWS_OPT"
|
||||
filter_apply_hostlist_target opt
|
||||
filter_apply_suffix opt "$TPWS_OPT_SUFFIX"
|
||||
run_tpws_socks 1 "$opt"
|
||||
;;
|
||||
nfqws)
|
||||
|
@ -10,7 +10,6 @@ zapret_custom_daemons()
|
||||
[ "$MODE_HTTP" = "1" ] && {
|
||||
opt="--port=$TPPORT $TPWS_OPT"
|
||||
filter_apply_hostlist_target opt
|
||||
filter_apply_suffix opt "$TPWS_OPT_SUFFIX"
|
||||
do_tpws $1 1 "$opt"
|
||||
}
|
||||
|
||||
|
@ -291,13 +291,11 @@ zapret_do_daemons()
|
||||
tpws)
|
||||
opt="--port=$TPPORT $TPWS_OPT"
|
||||
filter_apply_hostlist_target opt
|
||||
filter_apply_suffix opt "$TPWS_OPT_SUFFIX"
|
||||
do_tpws $1 1 "$opt"
|
||||
;;
|
||||
tpws-socks)
|
||||
opt="--port=$TPPORT $TPWS_OPT"
|
||||
filter_apply_hostlist_target opt
|
||||
filter_apply_suffix opt "$TPWS_OPT_SUFFIX"
|
||||
do_tpws_socks $1 1 "$opt"
|
||||
;;
|
||||
nfqws)
|
||||
|
@ -111,8 +111,8 @@ select_mode_mode()
|
||||
ask_list MODE "$MODES" tpws && write_config_var MODE
|
||||
|
||||
case $MODE in
|
||||
tpws|tpws-socks)
|
||||
vars="TPWS_OPT TPWS_OPT_SUFFIX"
|
||||
tpws)
|
||||
vars="TPWS_OPT"
|
||||
;;
|
||||
nfqws)
|
||||
vars="NFQWS_OPT_DESYNC NFQWS_OPT_DESYNC_SUFFIX NFQWS_OPT_DESYNC_HTTP NFQWS_OPT_DESYNC_HTTP_SUFFIX NFQWS_OPT_DESYNC_HTTPS NFQWS_OPT_DESYNC_HTTPS_SUFFIX NFQWS_OPT_DESYNC_HTTP6 NFQWS_OPT_DESYNC_HTTP6_SUFFIX NFQWS_OPT_DESYNC_HTTPS6 NFQWS_OPT_DESYNC_HTTPS6_SUFFIX NFQWS_OPT_DESYNC_QUIC NFQWS_OPT_DESYNC_QUIC_SUFFIX NFQWS_OPT_DESYNC_QUIC6 NFQWS_OPT_DESYNC_QUIC6_SUFFIX"
|
||||
|
Loading…
Reference in New Issue
Block a user