readme: tpws multi-profile

This commit is contained in:
bol-van 2024-09-20 11:14:35 +03:00
parent 4b0b562509
commit 719f7387c4
3 changed files with 48 additions and 6 deletions

View File

@ -313,3 +313,7 @@ v62:
tpws: connection close logic rewrite. tcp user timeout parameters for local and remote leg. tpws: connection close logic rewrite. tcp user timeout parameters for local and remote leg.
nfqws: multi-strategy nfqws: multi-strategy
v63:
tpws: multi-strategy

View File

@ -633,6 +633,10 @@ tpws is transparent proxy.
; its worth to make a reserve with 1.5 multiplier. by default maxfiles is (X*connections)*1.5+16 ; 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 --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=<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-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 --hostlist-auto=<filename> ; detect DPI blocks and build hostlist automatically
@ -737,11 +741,17 @@ 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. 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. 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`). 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`).
TLS version filters are not possible. `--mss` is not required for TLS1.3. If TLS1.3 is negotiable then MSS make things only worse.
`--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. 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 ## Ways to get a list of blocked IP
@ -939,6 +949,12 @@ Its possible to change manipulation options used by tpws :
`TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3"` `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: nfqws options for DPI desync attack:
``` ```

View File

@ -1,4 +1,4 @@
zapret v.62 zapret v.63
English English
------- -------
@ -774,6 +774,9 @@ tpws - это transparent proxy.
--hostlist-auto-fail-threshold=<int> ; сколько раз нужно обнаружить ситуацию, похожую на блокировку, чтобы добавить хост в лист (по умолчанию: 3) --hostlist-auto-fail-threshold=<int> ; сколько раз нужно обнаружить ситуацию, похожую на блокировку, чтобы добавить хост в лист (по умолчанию: 3)
--hostlist-auto-fail-time=<int> ; все эти ситуации должны быть в пределах указанного количества секунд (по умолчанию: 60) --hostlist-auto-fail-time=<int> ; все эти ситуации должны быть в пределах указанного количества секунд (по умолчанию: 60)
--hostlist-auto-debug=<logfile> ; лог положительных решений по autohostlist. позволяет разобраться почему там появляются хосты. --hostlist-auto-debug=<logfile> ; лог положительных решений по autohostlist. позволяет разобраться почему там появляются хосты.
--new ; начало новой стратегии
--filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии
--filter-tcp=[~]port1[-port2] ; фильтр портов tcp для текущей стратегии. ~ означает инверсию.
--debug позволяет выводить подробный лог действий на консоль, в syslog или в файл. --debug позволяет выводить подробный лог действий на консоль, в syslog или в файл.
@ -903,13 +906,12 @@ tpws поддерживает эту возможность асинхронно
С фильтром по hostlist совместимо только в режиме socks при включенном удаленном ресолвинге хостов. С фильтром по hostlist совместимо только в режиме socks при включенном удаленном ресолвинге хостов.
(firefox network.proxy.socks_remote_dns). Это единственный вариант, когда tpws может узнать имя хоста (firefox network.proxy.socks_remote_dns). Это единственный вариант, когда tpws может узнать имя хоста
еще на этапе установления соединения. еще на этапе установления соединения.
Невозможен фильтр по версии TLS.
Взамен имеется фильтр по портам --mss-pf. --mss-pf=443 применяет дурение только к https.
Применяя данную опцию к сайтам TLS1.3, если броузер тоже поддерживает TLS1.3, то вы делаете только хуже. Применяя данную опцию к сайтам TLS1.3, если броузер тоже поддерживает TLS1.3, то вы делаете только хуже.
Но нет способа автоматически узнать когда надо применять, когда нет, поскольку MSS идет только в Но нет способа автоматически узнать когда надо применять, когда нет, поскольку MSS идет только в
3-way handshake еще до обмена данными, а версию TLS можно узнать только по ответу сервера, который 3-way handshake еще до обмена данными, а версию TLS можно узнать только по ответу сервера, который
может привести к реакции DPI. может привести к реакции DPI.
Использовать только когда нет ничего лучше или для отдельных ресурсов. Использовать только когда нет ничего лучше или для отдельных ресурсов.
Для http использовать смысла нет, поэтому заводите отдельный desync profile с фильтром по порту 443.
Работает только на linux, не работает на BSD и MacOS. Работает только на linux, не работает на BSD и MacOS.
--skip-nodelay может быть полезен, чтобы привести MTU к MTU системы, на которой работает tpws. --skip-nodelay может быть полезен, чтобы привести MTU к MTU системы, на которой работает tpws.
@ -924,6 +926,20 @@ TCP_USER_TIMEOUT. Под таймаутом подразумевается вр
что данных для передачи нет. Полезно для сокращения время закрытия подвисших соединений. что данных для передачи нет. Полезно для сокращения время закрытия подвисших соединений.
Поддерживается только на Linux и MacOS. Поддерживается только на Linux и MacOS.
МНОЖЕСТВЕННЫЕ СТРАТЕГИИ
Работают аналогично nfqws, кроме некоторых моментов.
Нет параметра --filter-udp, поскольку tpws udp не поддерживает.
Методы нулевой фазы (--mss) могут работать по хостлисту в одном единственном случае :
если используется режим socks и удаленный ресолвинг хостов через прокси.
То есть работоспособность вашей настройки в одном и том же режиме может зависеть от того,
применяет ли клиент удаленный ресолвинг. Это может быть неочевидно.
В одной программе работает, в другой - нет.
Если вы используете профиль с хостлистом , и вам нужен mss, укажите mss в профиле с хостлистом,
создайте еще один профиль без хостлиста, если его еще нет, и в нем еще раз укажите mss.
Тогда при любом раскладе будет выполняться mss.
Используйте `curl --socks5` и `curl --socks5-hostname` для проверки вашей стратегии.
Смотрите вывод --debug, чтобы убедиться в правильности настроек.
Способы получения списка заблокированных IP Способы получения списка заблокированных IP
------------------------------------------- -------------------------------------------
@ -1369,6 +1385,12 @@ MODE_FILTER=none
TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3" TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3"
Дополнительный низкоприоритетный профиль десинхронизации для режимов с MODE_FILTER=hostlist.
После реализации поддержки множественных профилей режимы нулевой фазы десинхронизации больше не применяются с хостлистом !
Для их применения требуется дополнительный профиль без хостлист фильтра.
#TPWS_OPT_SUFFIX="--mss 88"
Опции nfqws для атаки десинхронизации DPI : Опции nfqws для атаки десинхронизации DPI :
DESYNC_MARK=0x40000000 DESYNC_MARK=0x40000000