mirror of
https://github.com/bol-van/zapret.git
synced 2025-05-24 22:32:58 +03:00
tpws: multi thread resolver
This commit is contained in:
@@ -270,4 +270,7 @@ tpws: incompatible oob parameter change. it doesn't take oob byte anymore. inste
|
||||
blockcheck: quick mode, strategy order optimizations, QUIC protocol support
|
||||
nfqws: syndata desync mode
|
||||
|
||||
<20>
|
||||
v56
|
||||
|
||||
tpws: mss fooling
|
||||
tpws: multi thread resolver. eliminates blocks related to hostname resolve.
|
||||
|
@@ -561,6 +561,7 @@ tpws is transparent proxy.
|
||||
--remote-sndbuf=<bytes> ; SO_SNDBUF for remote legs
|
||||
--skip-nodelay ; do not set TCP_NODELAY for outgoing connections. incompatible with split.
|
||||
--no-resolve ; disable socks5 remote dns
|
||||
--resolver-threads=<int> ; number of resolver worker threads
|
||||
--maxconn=<max_connections> ; max number of local legs
|
||||
--maxfiles=<max_open_files> ; max file descriptors (setrlimit). min requirement is (X*connections+16), where X=6 in tcp proxy mode, X=4 in tampering mode.
|
||||
; its worth to make a reserve with 1.5 multiplier. by default maxfiles is (X*connections)*1.5+16
|
||||
@@ -646,12 +647,10 @@ It's possible to bind to any nonexistent address in transparent mode but in sock
|
||||
In socks proxy mode no additional system privileges are required. Connections to local IPs of the system where tpws runs are prohibited.
|
||||
tpws supports remote dns resolving (curl : `--socks5-hostname` firefox : `socks_remote_dns=true`) , but does it in blocking mode.
|
||||
|
||||
tpws uses async sockets for all activity but resolving can break this model.
|
||||
|
||||
if tpws serves many clients it can cause trouble. also DoS attack is possible against tpws.
|
||||
|
||||
if remote resolving causes trouble configure clients to use local name resolution and use
|
||||
`--no-resolve` option on tpws side.
|
||||
tpws uses async sockets for all activities. Domain names are resolved in multi threaded pool.
|
||||
Resolving does not freeze other connections. But if there're too many requests resolving delays may increase.
|
||||
Number of resolver threads is choosen automatically proportinally to `--maxconn` and can be override using `--resolver-threads`.
|
||||
To disable hostname resolve use `--no-resolve` option.
|
||||
|
||||
`--disorder` is an additional flag to any split option.
|
||||
It tries to simulate `--disorder2` option of `nfqws` using standard socket API without the need of additional privileges.
|
||||
@@ -670,7 +669,8 @@ Use of `--tlsrec` without filters is discouraged.
|
||||
Server replies with it's own MSS in SYN,ACK packet. Usually servers lower their packet sizes but they still don't
|
||||
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 and TLS version filters are not possible.
|
||||
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-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.
|
||||
|
@@ -1,4 +1,4 @@
|
||||
zapret v.55
|
||||
zapret v.56
|
||||
|
||||
English
|
||||
-------
|
||||
@@ -642,6 +642,7 @@ tpws - это transparent proxy.
|
||||
--bind-wait-only ; подождать все бинды и выйти. результат 0 в случае успеха, иначе не 0.
|
||||
--socks ; вместо прозрачного прокси реализовать socks4/5 proxy
|
||||
--no-resolve ; запретить ресолвинг имен через socks5
|
||||
--resolve-threads ; количество потоков ресолвера
|
||||
--port=<port> ; на каком порту слушать
|
||||
--maxconn=<max_connections> ; максимальное количество соединений от клиентов к прокси
|
||||
--maxfiles=<max_open_files> ; макс количество файловых дескрипторов (setrlimit). мин требование (X*connections+16), где X=6 в tcp proxy mode, X=4 в режиме тамперинга.
|
||||
@@ -756,13 +757,13 @@ tpws можно использовать на мобильном устройс
|
||||
Поддерживаются версии socks 4 и 5 без авторизации. Версия протокола распознается автоматически.
|
||||
Подключения к IP того же устройства, на котором работает tpws, включая localhost, запрещены.
|
||||
socks5 позволяет удаленно ресолвить хосты (curl : --socks5-hostname firefox : socks_remote_dns=true).
|
||||
tpws поддерживает эту возможность, однако используется блокирующий ресолвинг. Пока система
|
||||
ресолвит хост (это может занять секунды), вся активность останавливается.
|
||||
tpws полностью работает на асинхронных сокетах, но ресолвинг может попортить эту модель.
|
||||
С ним возможны атаки DoS на tpws. Если tpws обслуживает множество клиентов, то из-за частого
|
||||
ресолвинга качество обслуживания может существенно ухудшиться.
|
||||
Если удаленный ресолвинг создает проблемы, настройте клиенты на локальный ресолвинг, включите опцию
|
||||
--no-resolve на стороне tpws.
|
||||
tpws поддерживает эту возможность асинхронно, не блокируя процессинг других соединений, используя
|
||||
многопоточный пул ресолверов. Количество потоков определяется автоматически в зависимости от "--maxconn",
|
||||
но можно задать и вручную через параметр "--resolver-threads".
|
||||
Запрос к socks выставляется на паузу, пока домен не будет преобразован в ip адрес в одном из потоков
|
||||
ресолвера. Ожидание может быть более длинным, если все потоки заняты.
|
||||
Если задан параметр "--no-resolve", то подключения по именам хостов запрещаются, а пул ресолверов не создается.
|
||||
Тем самым экономятся ресурсы.
|
||||
|
||||
Параметр --hostpad=<bytes> добавляет паддинг-хедеров перед Host: на указанное количество байтов.
|
||||
Если размер <bytes> слишком большой, то идет разбивка на разные хедеры по 2K.
|
||||
@@ -802,8 +803,11 @@ tpws полностью работает на асинхронных сокет
|
||||
все равно не вписываются в низкий MSS, указанный клиентом. Обычно чем больше указал клиент, тем больше
|
||||
шлет сервер. На TLS 1.2 если сервер разбил заброс так, чтобы домен из сертификата не попал в первый пакет,
|
||||
это может обмануть DPI, секущий ответ сервера.
|
||||
Схема может значительно снизить скорость и сработать не на всех сайтах.
|
||||
Несовместимо с фильтром по hostlist. Невозможен фильтр по версии TLS.
|
||||
Схема может значительно снизить скорость и сработать не на всех сайтах.
|
||||
С фильтром по hostlist совместимо только в режиме socks при включенном удаленном ресолвинге хостов.
|
||||
(firefox network.proxy.socks_remote_dns). Это единственный вариант, когда tpws может узнать имя хоста
|
||||
еще на этапе установления соединения.
|
||||
Невозможен фильтр по версии TLS.
|
||||
Взамен имеется фильтр по портам --mss-pf. --mss-pf=443 применяет дурение только к https.
|
||||
Применяя данную опцию к сайтам TLS1.3, если броузер тоже поддерживает TLS1.3, то вы делаете только хуже.
|
||||
Но нет способа автоматически узнать когда надо применять, когда нет, поскольку MSS идет только в
|
||||
|
Reference in New Issue
Block a user