mirror of
https://github.com/bol-van/zapret.git
synced 2024-11-26 12:10:53 +03:00
Compare commits
11 Commits
f2ea38cf93
...
bbeee9d640
Author | SHA1 | Date | |
---|---|---|---|
|
bbeee9d640 | ||
|
466a142ebe | ||
|
8aa8bb5941 | ||
|
ffa701e497 | ||
|
e0063eecd5 | ||
|
2d530d5f63 | ||
|
95b3830afd | ||
|
0ea3215187 | ||
|
27745a3747 | ||
|
c68b75d4ac | ||
|
f4d31cdcb6 |
@ -1308,3 +1308,10 @@ Dont ask me how to do it. Its different for all firmwares and requires studying.
|
|||||||
Find manual or reverse engineer yourself.
|
Find manual or reverse engineer yourself.
|
||||||
Check for race conditions. Firmware can clear or modify iptables after your startup script.
|
Check for race conditions. Firmware can clear or modify iptables after your startup script.
|
||||||
If this is the case then run another script in background and add some delay there.
|
If this is the case then run another script in background and add some delay there.
|
||||||
|
|
||||||
|
## Donations
|
||||||
|
|
||||||
|
Are welcome here :
|
||||||
|
|
||||||
|
<img src=https://cdn-icons-png.flaticon.com/16/14446/14446252.png alt="USDT" style="vertical-align: middle;"/> USDT 0x3d52Ce15B7Be734c53fc9526ECbAB8267b63d66E
|
||||||
|
<img src=https://cdn-icons-png.flaticon.com/16/5968/5968260.png alt="USDT" style="vertical-align: middle;"/> BTC bc1qhqew3mrvp47uk2vevt5sctp7p2x9m7m5kkchve
|
||||||
|
368
docs/readme.md
368
docs/readme.md
@ -2,8 +2,53 @@
|
|||||||
|
|
||||||
# Multilanguage README
|
# Multilanguage README
|
||||||
|
|
||||||
[![en](https://img.shields.io/badge/lang-en-red.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.en.md)
|
[![en](https://img.shields.io/badge/lang-en-red.svg)](./readme.en.md)
|
||||||
[![ru](https://img.shields.io/badge/lang-ru-green.svg)](https://github.com/bol-van/zapret/tree/master/docs/readme.md)
|
[![ru](https://img.shields.io/badge/lang-ru-green.svg)](./readme.md)
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
- [Зачем это нужно](#зачем-это-нужно)
|
||||||
|
- [Быстрый старт](#быстрый-старт)
|
||||||
|
- [Как это работает](#как-это-работает)
|
||||||
|
- [Что сейчас происходит в России](#что-сейчас-происходит-в-россии)
|
||||||
|
- [Как это реализовать на практике в системе linux](#как-это-реализовать-на-практике-в-системе-linux)
|
||||||
|
- [Особенности применения ip6tables](#особенности-применения-ip6tables)
|
||||||
|
- [Особенности применения nftables](#особенности-применения-nftables)
|
||||||
|
- [Когда это работать не будет](#когда-это-работать-не-будет)
|
||||||
|
- [nfqws](#nfqws)
|
||||||
|
- [АТАКА ДЕСИНХРОНИЗАЦИИ DPI](#атака-десинхронизации-dpi)
|
||||||
|
- [КОМБИНИРОВАНИЕ МЕТОДОВ ДЕСИНХРОНИЗАЦИИ](#комбинирование-методов-десинхронизации)
|
||||||
|
- [РЕЖИМ SYNACK](#режим-synack)
|
||||||
|
- [РЕЖИМ SYNDATA](#режим-syndata)
|
||||||
|
- [ВИРТУАЛЬНЫЕ МАШИНЫ](#виртуальные-машины)
|
||||||
|
- [CONNTRACK](#conntrack)
|
||||||
|
- [РЕАССЕМБЛИНГ](#реассемблинг)
|
||||||
|
- [ПОДДЕРЖКА UDP](#поддержка-udp)
|
||||||
|
- [IP ФРАГМЕНТАЦИЯ](#ip-фрагментация)
|
||||||
|
- [МНОЖЕСТВЕННЫЕ СТРАТЕГИИ](#множественные-стратегии)
|
||||||
|
- [tpws](#tpws)
|
||||||
|
- [МНОЖЕСТВЕННЫЕ СТРАТЕГИИ](#множественные-стратегии-1)
|
||||||
|
- [Способы получения списка заблокированных IP](#способы-получения-списка-заблокированных-ip)
|
||||||
|
- [ip2net](#ip2net)
|
||||||
|
- [mdig](#mdig)
|
||||||
|
- [Фильтрация по именам доменов](#фильтрация-по-именам-доменов)
|
||||||
|
- [Режим фильтрации autohostlist](#режим-фильтрации-autohostlist)
|
||||||
|
- [Проверка провайдера](#проверка-провайдера)
|
||||||
|
- [Выбор параметров](#выбор-параметров)
|
||||||
|
- [Прикручивание к системе управления фаерволом или своей системе запуска](#прикручивание-к-системе-управления-фаерволом-или-своей-системе-запуска)
|
||||||
|
- [Вариант custom](#вариант-custom)
|
||||||
|
- [Простая установка](#простая-установка)
|
||||||
|
- [Простая установка на openwrt](#простая-установка-на-openwrt)
|
||||||
|
- [Установка на openwrt в режиме острой нехватки места на диске](#установка-на-openwrt-в-режиме-острой-нехватки-места-на-диске)
|
||||||
|
- [Android](#android)
|
||||||
|
- [Мобильные модемы и роутеры huawei](#мобильные-модемы-и-роутеры-huawei)
|
||||||
|
- [FreeBSD, OpenBSD, MacOS](#freebsd-openbsd-macos)
|
||||||
|
- [Windows](#windows)
|
||||||
|
- [Другие прошивки](#другие-прошивки)
|
||||||
|
- [Обход блокировки через сторонний хост](#обход-блокировки-через-сторонний-хост)
|
||||||
|
- [Почему стоит вложиться в покупку VPS](#почему-стоит-вложиться-в-покупку-vps)
|
||||||
|
- [Поддержать разработчика](#поддержать-разработчика)
|
||||||
|
***
|
||||||
|
|
||||||
## Зачем это нужно
|
## Зачем это нужно
|
||||||
|
|
||||||
@ -19,9 +64,9 @@ VPN.
|
|||||||
|
|
||||||
## Быстрый старт
|
## Быстрый старт
|
||||||
|
|
||||||
> *Linux/openwrt:* docs/quick_start.txt
|
> *Linux/openwrt:* [docs/quick_start.txt](./quick_start.txt)
|
||||||
>
|
>
|
||||||
>*Windows:* docs/quick_start_windows.txt
|
>*Windows:* [docs/quick_start_windows.txt](./quick_start_windows.txt)
|
||||||
|
|
||||||
## Как это работает
|
## Как это работает
|
||||||
|
|
||||||
@ -49,8 +94,8 @@ VPN.
|
|||||||
|
|
||||||
Существует и более продвинутая магия, направленная на преодоление DPI на пакетном уровне.
|
Существует и более продвинутая магия, направленная на преодоление DPI на пакетном уровне.
|
||||||
|
|
||||||
Подробнее про DPI:
|
Подробнее про DPI:\
|
||||||
https://habr.com/ru/post/335436
|
https://habr.com/ru/post/335436 или https://web.archive.org/web/20230331233644/https://habr.com/ru/post/335436/ \
|
||||||
https://geneva.cs.umd.edu/papers/geneva_ccs19.pdf
|
https://geneva.cs.umd.edu/papers/geneva_ccs19.pdf
|
||||||
|
|
||||||
## Что сейчас происходит в России
|
## Что сейчас происходит в России
|
||||||
@ -164,7 +209,7 @@ NFQUEUE работает без изменений.
|
|||||||
|
|
||||||
## Особенности применения nftables
|
## Особенности применения nftables
|
||||||
|
|
||||||
Более подробно преимущества и недостатки nftables применительно к данной системе описаны в docs/nftables_notes.txt Если
|
Более подробно преимущества и недостатки nftables применительно к данной системе описаны в [docs/nftables_notes.txt](./nftables_notes.txt) Если
|
||||||
коротко, то в nftables невозможно работать с большими ip листами на системах с малым количеством RAM. Остальные
|
коротко, то в nftables невозможно работать с большими ip листами на системах с малым количеством RAM. Остальные
|
||||||
рассматриваемые здесь функции могут быть перенесены на nftables.
|
рассматриваемые здесь функции могут быть перенесены на nftables.
|
||||||
|
|
||||||
@ -195,7 +240,7 @@ NFQUEUE работает без изменений.
|
|||||||
## nfqws
|
## nfqws
|
||||||
|
|
||||||
Эта программа - модификатор пакетов и обработчик очереди NFQUEUE. Для BSD систем существует адаптированный вариант -
|
Эта программа - модификатор пакетов и обработчик очереди NFQUEUE. Для BSD систем существует адаптированный вариант -
|
||||||
dvtws, собираемый из тех же исходников (см. bsd.txt).
|
dvtws, собираемый из тех же исходников (см. [bsd.txt](./bsd.txt)).
|
||||||
|
|
||||||
```
|
```
|
||||||
@<config_file>|$<config_file> ; читать конфигурацию из файла. опция должна быть первой. остальные опции игнорируются.
|
@<config_file>|$<config_file> ; читать конфигурацию из файла. опция должна быть первой. остальные опции игнорируются.
|
||||||
@ -204,72 +249,73 @@ dvtws, собираемый из тех же исходников (см. bsd.txt
|
|||||||
--daemon ; демонизировать прогу
|
--daemon ; демонизировать прогу
|
||||||
--pidfile=<file> ; сохранить PID в файл
|
--pidfile=<file> ; сохранить PID в файл
|
||||||
--user=<username> ; менять uid процесса
|
--user=<username> ; менять uid процесса
|
||||||
--uid=uid[:gid] ; менять uid процесса
|
--uid=uid[:gid] ; менять uid процесса
|
||||||
--qnum=N ; номер очереди N
|
--qnum=N ; номер очереди N
|
||||||
--bind-fix4 ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv4 пакетов
|
--bind-fix4 ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv4 пакетов
|
||||||
--bind-fix6 ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv6 пакетов
|
--bind-fix6 ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv6 пакетов
|
||||||
--wsize=<winsize>[:<scale_factor>] ; менять tcp window size на указанный размер в SYN,ACK. если не задан scale_factor, то он не меняется (устарело !)
|
--wsize=<winsize>[:<scale_factor>] ; менять tcp window size на указанный размер в SYN,ACK. если не задан scale_factor, то он не меняется (устарело !)
|
||||||
--wssize=<winsize>[:<scale_factor>] ; менять tcp window size на указанный размер в исходящих пакетах. scale_factor по умолчанию 0. (см. conntrack !)
|
--wssize=<winsize>[:<scale_factor>] ; менять tcp window size на указанный размер в исходящих пакетах. scale_factor по умолчанию 0. (см. conntrack !)
|
||||||
--wssize-cutoff=[n|d|s]N ; изменять server window size в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N
|
--wssize-cutoff=[n|d|s]N ; изменять server window size в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N
|
||||||
--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:".
|
--hostcase ; менять регистр заголовка "Host:" по умолчанию на "host:".
|
||||||
--hostnospace ; убрать пробел после "Host:" и переместить его в конец значения "User-Agent:" для сохранения длины пакета
|
--hostnospace ; убрать пробел после "Host:" и переместить его в конец значения "User-Agent:" для сохранения длины пакета
|
||||||
--hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase
|
--hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase
|
||||||
--domcase ; домен после Host: сделать таким : TeSt.cOm
|
--domcase ; домен после Host: сделать таким : TeSt.cOm
|
||||||
--dpi-desync=[<mode0>,]<mode>[,<mode2] ; атака по десинхронизации DPI. mode : synack syndata fake fakeknown rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2 udplen tamper
|
--dpi-desync=[<mode0>,]<mode>[,<mode2] ; атака по десинхронизации DPI. mode : synack syndata fake fakeknown rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2 udplen tamper
|
||||||
--dpi-desync-fwmark=<int|0xHEX> ; бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. default = 0x40000000
|
--dpi-desync-fwmark=<int|0xHEX> ; бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. default = 0x40000000
|
||||||
--dpi-desync-ttl=<int> ; установить ttl для десинхронизирующих пакетов
|
--dpi-desync-ttl=<int> ; установить ttl для десинхронизирующих пакетов
|
||||||
--dpi-desync-ttl6=<int> ; установить ipv6 hop limit для десинхронизирующих пакетов. если не указано, используется значение ttl
|
--dpi-desync-ttl6=<int> ; установить ipv6 hop limit для десинхронизирующих пакетов. если не указано, используется значение ttl
|
||||||
--dpi-desync-autottl=[<delta>[:<min>[-<max>]]] ; режим auto ttl для ipv4 и ipv6. по умолчанию: 1:3-20. delta=0 отключает функцию.
|
--dpi-desync-autottl=[<delta>[:<min>[-<max>]]] ; режим auto ttl для ipv4 и ipv6. по умолчанию: 1:3-20. delta=0 отключает функцию.
|
||||||
--dpi-desync-autottl6=[<delta>[:<min>[-<max>]]] ; переопределение предыдущего параметра для ipv6
|
--dpi-desync-autottl6=[<delta>[:<min>[-<max>]]] ; переопределение предыдущего параметра для ipv6
|
||||||
--dpi-desync-fooling=<fooling> ; дополнительные методики как сделать, чтобы фейковый пакет не дошел до сервера. none md5sig badseq badsum datanoack hopbyhop hopbyhop2
|
--dpi-desync-fooling=<fooling> ; дополнительные методики как сделать, чтобы фейковый пакет не дошел до сервера. none md5sig badseq badsum datanoack hopbyhop hopbyhop2
|
||||||
--dpi-desync-repeats=<N> ; посылать каждый генерируемый в nfqws пакет N раз (не влияет на остальные пакеты)
|
--dpi-desync-repeats=<N> ; посылать каждый генерируемый в nfqws пакет N раз (не влияет на остальные пакеты)
|
||||||
--dpi-desync-skip-nosni=0| 1 ; 1(default)=не применять dpi desync для запросов без hostname в SNI, в частности для ESNI
|
--dpi-desync-skip-nosni=0|1 ; 1(default)=не применять dpi desync для запросов без hostname в SNI, в частности для ESNI
|
||||||
--dpi-desync-split-pos=<1..1500> ; (только для split*, disorder*) разбивать пакет на указанной позиции
|
--dpi-desync-split-pos=<1..1500> ; (только для split*, disorder*) разбивать пакет на указанной позиции
|
||||||
--dpi-desync-split-http-req=method|host ; разбивка http request на указанном логическом месте
|
--dpi-desync-split-http-req=method|host ; разбивка http request на указанном логическом месте
|
||||||
--dpi-desync-split-tls=sni|sniext ; разбивка tls client hello на указанном логическом месте
|
--dpi-desync-split-tls=sni|sniext ; разбивка tls client hello на указанном логическом месте
|
||||||
--dpi-desync-split-seqovl=<int> ; использовать sequence overlap перед первым отсылаемым оригинальным tcp сегментом
|
--dpi-desync-split-seqovl=<int> ; использовать sequence overlap перед первым отсылаемым оригинальным tcp сегментом
|
||||||
--dpi-desync-split-seqovl-pattern=<filename>|0xHEX ; чем заполнять фейковую часть overlap
|
--dpi-desync-split-seqovl-pattern=<filename>|0xHEX ; чем заполнять фейковую часть overlap
|
||||||
--dpi-desync-badseq-increment=<int|0xHEX> ; инкремент sequence number для badseq. по умолчанию -10000
|
--dpi-desync-badseq-increment=<int|0xHEX> ; инкремент sequence number для badseq. по умолчанию -10000
|
||||||
--dpi-desync-badack-increment=<int|0xHEX> ; инкремент ack sequence number для badseq. по умолчанию -66000
|
--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-any-protocol=0|1 ; 0(default)=работать только по http request и tls clienthello 1=по всем непустым пакетам данных
|
||||||
--dpi-desync-fake-http=<filename>|0xHEX ; файл, содержащий фейковый http запрос для dpi-desync=fake, на замену стандартному www.iana.org
|
--dpi-desync-fake-http=<filename>|0xHEX ; файл, содержащий фейковый http запрос для dpi-desync=fake, на замену стандартному www.iana.org
|
||||||
--dpi-desync-fake-tls=<filename>|0xHEX ; файл, содержащий фейковый tls clienthello для dpi-desync=fake, на замену стандартному
|
--dpi-desync-fake-tls=<filename>|0xHEX ; файл, содержащий фейковый tls clienthello для dpi-desync=fake, на замену стандартному
|
||||||
--dpi-desync-fake-unknown=<filename>|0xHEX ; файл, содержащий фейковый пейлоад неизвестного протокола для dpi-desync=fake, на замену стандартным нулям 256 байт
|
--dpi-desync-fake-unknown=<filename>|0xHEX ; файл, содержащий фейковый пейлоад неизвестного протокола для dpi-desync=fake, на замену стандартным нулям 256 байт
|
||||||
--dpi-desync-fake-syndata=<filename>|0xHEX ; файл, содержащий фейковый пейлоад пакета SYN для режима десинхронизации syndata
|
--dpi-desync-fake-syndata=<filename>|0xHEX ; файл, содержащий фейковый пейлоад пакета SYN для режима десинхронизации syndata
|
||||||
--dpi-desync-fake-quic=<filename>|0xHEX ; файл, содержащий фейковый QUIC Initial
|
--dpi-desync-fake-quic=<filename>|0xHEX ; файл, содержащий фейковый QUIC Initial
|
||||||
--dpi-desync-fake-dht=<filename>|0xHEX ; файл, содержащий фейковый пейлоад DHT протокола для dpi-desync=fake, на замену стандартным нулям 64 байт
|
--dpi-desync-fake-dht=<filename>|0xHEX ; файл, содержащий фейковый пейлоад DHT протокола для dpi-desync=fake, на замену стандартным нулям 64 байт
|
||||||
--dpi-desync-fake-unknown-udp=<filename>|0xHEX ; файл, содержащий фейковый пейлоад неизвестного udp протокола для dpi-desync=fake, на замену стандартным нулям 64 байт
|
--dpi-desync-fake-unknown-udp=<filename>|0xHEX ; файл, содержащий фейковый пейлоад неизвестного udp протокола для dpi-desync=fake, на замену стандартным нулям 64 байт
|
||||||
--dpi-desync-udplen-increment=<int> ; насколько увеличивать длину udp пейлоада в режиме udplen
|
--dpi-desync-udplen-increment=<int> ; насколько увеличивать длину udp пейлоада в режиме udplen
|
||||||
--dpi-desync-udplen-pattern=<filename>|0xHEX ; чем добивать udp пакет в режиме udplen. по умолчанию - нули
|
--dpi-desync-udplen-pattern=<filename>|0xHEX ; чем добивать udp пакет в режиме udplen. по умолчанию - нули
|
||||||
--dpi-desync-start=[n|d|s]N ; применять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру больше или равно N
|
--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
|
--dpi-desync-cutoff=[n|d|s]N ; применять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N
|
||||||
--hostlist=<filename> ; действовать только над доменами, входящими в список из filename. поддомены автоматически учитываются.
|
--hostlist=<filename> ; действовать только над доменами, входящими в список из filename. поддомены автоматически учитываются.
|
||||||
; в файле должен быть хост на каждой строке.
|
; в файле должен быть хост на каждой строке.
|
||||||
; список читается при старте и хранится в памяти в виде иерархической структуры для быстрого поиска.
|
; список читается при старте и хранится в памяти в виде иерархической структуры для быстрого поиска.
|
||||||
; при изменении времени модификации файла он перечитывается автоматически по необходимости
|
; при изменении времени модификации файла он перечитывается автоматически по необходимости
|
||||||
; список может быть запакован в gzip. формат автоматически распознается и разжимается
|
; список может быть запакован в gzip. формат автоматически распознается и разжимается
|
||||||
; списков может быть множество. пустой общий лист = его отсутствие
|
; списков может быть множество. пустой общий лист = его отсутствие
|
||||||
; хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello.
|
; хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello.
|
||||||
--hostlist-exclude=<filename> ; не применять дурение к доменам из листа. может быть множество листов. схема аналогична include листам.
|
--hostlist-exclude=<filename> ; не применять дурение к доменам из листа. может быть множество листов. схема аналогична include листам.
|
||||||
--hostlist-auto=<filename> ; обнаруживать автоматически блокировки и заполнять автоматический hostlist (требует перенаправления входящего трафика)
|
--hostlist-auto=<filename> ; обнаруживать автоматически блокировки и заполнять автоматический hostlist (требует перенаправления входящего трафика)
|
||||||
--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-retrans-threshold=<int> ; сколько ретрансмиссий запроса считать блокировкой (по умолчанию: 3)
|
--hostlist-auto-retrans-threshold=<int> ; сколько ретрансмиссий запроса считать блокировкой (по умолчанию: 3)
|
||||||
--hostlist-auto-debug=<logfile> ; лог положительных решений по autohostlist. позволяет разобраться почему там появляются хосты.
|
--hostlist-auto-debug=<logfile> ; лог положительных решений по autohostlist. позволяет разобраться почему там появляются хосты.
|
||||||
--new ; начало новой стратегии
|
--new ; начало новой стратегии (новый профиль)
|
||||||
--filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии
|
--filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии
|
||||||
--filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. установка фильтра tcp и неустановка фильтра udp запрещает udp. поддерживается список через запятую.
|
--filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. установка фильтра tcp и неустановка фильтра udp запрещает udp. поддерживается список через запятую.
|
||||||
--filter-udp=[~]port1[-port2]|* ; фильтр портов udp для текущей стратегии. ~ означает инверсию. установка фильтра udp и неустановка фильтра tcp запрещает udp. поддерживается список через запятую.
|
--filter-udp=[~]port1[-port2]|* ; фильтр портов udp для текущей стратегии. ~ означает инверсию. установка фильтра udp и неустановка фильтра tcp запрещает udp. поддерживается список через запятую.
|
||||||
--filter-l7=[http|tls|quic|wireguard|dht|unknown] ; фильтр протокола L6-L7. поддерживается несколько значений через запятую.
|
--filter-l7=[http|tls|quic|wireguard|dht|unknown] ; фильтр протокола L6-L7. поддерживается несколько значений через запятую.
|
||||||
--ipset=<filename> ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
--ipset=<filename> ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
||||||
--ipset-exclude=<filename> ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
--ipset-exclude=<filename> ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
||||||
```
|
```
|
||||||
|
|
||||||
Параметры манипуляции могут сочетаться в любых комбинациях.
|
Параметры манипуляции могут сочетаться в любых комбинациях.
|
||||||
|
|
||||||
**ЗАМЕЧАНИЕ.** Параметр `--wsize` считается устаревшим и более не поддерживается в скриптах. Функции сплита выполняются в
|
> [!TIP]
|
||||||
рамках атаки десинхронизации. Это быстрее и избавляет от целого ряда недостатков wsize.
|
> **ЗАМЕЧАНИЕ.** Параметр `--wsize` считается устаревшим и более не поддерживается в скриптах. Функции сплита выполняются в
|
||||||
|
> рамках атаки десинхронизации. Это быстрее и избавляет от целого ряда недостатков wsize.
|
||||||
|
|
||||||
`--debug` позволяет выводить подробный лог действий на консоль, в syslog или в файл. Может быть важен порядок следования
|
`--debug` позволяет выводить подробный лог действий на консоль, в syslog или в файл. Может быть важен порядок следования
|
||||||
опций. `--debug` лучше всего указывать в самом начале. Опции анализируются последовательно. Если ошибка будет при
|
опций. `--debug` лучше всего указывать в самом начале. Опции анализируются последовательно. Если ошибка будет при
|
||||||
@ -292,8 +338,8 @@ dvtws, собираемый из тех же исходников (см. bsd.txt
|
|||||||
посылать пакет с инвалидной чексуммой, добавлять tcp option **MD5 signature**, испортить sequence numbers. Все они не
|
посылать пакет с инвалидной чексуммой, добавлять tcp option **MD5 signature**, испортить sequence numbers. Все они не
|
||||||
лишены недостатков.
|
лишены недостатков.
|
||||||
|
|
||||||
* md5sig работает не на всех серверах. Пакеты с md5 обычно отбрасывают только linux.
|
* `md5sig` работает не на всех серверах. Пакеты с md5 обычно отбрасывают только linux.
|
||||||
* badsum не сработает, если ваше устройство за NAT, который не пропускает пакеты с инвалидной суммой. Наиболее
|
* `badsum` не сработает, если ваше устройство за NAT, который не пропускает пакеты с инвалидной суммой. Наиболее
|
||||||
распространенная настройка NAT роутера в Linux их не пропускает. На Linux построено большинство домашних роутеров.
|
распространенная настройка NAT роутера в Linux их не пропускает. На Linux построено большинство домашних роутеров.
|
||||||
Непропускание обеспечивается так : настройка ядра sysctl по умолчанию
|
Непропускание обеспечивается так : настройка ядра sysctl по умолчанию
|
||||||
`net.netfilter.nf_conntrack_checksum=1` заставляет conntrack проверять tcp и udp чексуммы входящих пакетов и
|
`net.netfilter.nf_conntrack_checksum=1` заставляет conntrack проверять tcp и udp чексуммы входящих пакетов и
|
||||||
@ -309,14 +355,14 @@ dvtws, собираемый из тех же исходников (см. bsd.txt
|
|||||||
себя ведут некоторые роутеры на базе mediatek. badsum пакеты уходят с клиентской ОС, но роутером не видятся в br-lan
|
себя ведут некоторые роутеры на базе mediatek. badsum пакеты уходят с клиентской ОС, но роутером не видятся в br-lan
|
||||||
через tcpdump. При этом если nfqws выполняется на самом роутере, обход может работать. badsum нормально уходят с
|
через tcpdump. При этом если nfqws выполняется на самом роутере, обход может работать. badsum нормально уходят с
|
||||||
внешнего интерфейса.
|
внешнего интерфейса.
|
||||||
* Пакеты с badseq будут наверняка отброшены принимающим узлом, но так же и DPI, если он ориентируется на sequence
|
* Пакеты с `badseq` будут наверняка отброшены принимающим узлом, но так же и DPI, если он ориентируется на sequence
|
||||||
numbers. По умолчанию смещение seq выбирается -10000. Практика показала, что некоторые DPI не пропускают seq вне
|
numbers. По умолчанию смещение seq выбирается -10000. Практика показала, что некоторые DPI не пропускают seq вне
|
||||||
определенного окна. Однако, такое небольшое смещение может вызвать проблемы при существенной потоковой передаче и
|
определенного окна. Однако, такое небольшое смещение может вызвать проблемы при существенной потоковой передаче и
|
||||||
потере пакетов. Если вы используете `--dpi-desync-any-protocol`, может понадобится установить badseq increment
|
потере пакетов. Если вы используете `--dpi-desync-any-protocol`, может понадобится установить badseq increment
|
||||||
0x80000000. Это обеспечит надежную гарантию, что поддельный пакет не вклинится в tcp window на сервере. Так же было
|
0x80000000. Это обеспечит надежную гарантию, что поддельный пакет не вклинится в tcp window на сервере. Так же было
|
||||||
замечено, что badseq ломает логику некоторых DPI при анализе http, вызывая зависание соединения. Причем на тех же DPI
|
замечено, что badseq ломает логику некоторых DPI при анализе http, вызывая зависание соединения. Причем на тех же DPI
|
||||||
TLS с badseq работает нормально.
|
TLS с badseq работает нормально.
|
||||||
* TTL казалось бы - лучший вариант, но он требует индивидуальной настройки под каждого провайдера. Если DPI находится
|
* `TTL` казалось бы - лучший вариант, но он требует индивидуальной настройки под каждого провайдера. Если DPI находится
|
||||||
дальше локальных сайтов провайдера, то вы можете отрезать себе доступ к ним. Ситуация усугубляется наличием ТСПУ на
|
дальше локальных сайтов провайдера, то вы можете отрезать себе доступ к ним. Ситуация усугубляется наличием ТСПУ на
|
||||||
магистралах, что вынуждает делать TTL достаточно высоким, увеличивая риск пробоя фейка до сервера. Необходим ip
|
магистралах, что вынуждает делать TTL достаточно высоким, увеличивая риск пробоя фейка до сервера. Необходим ip
|
||||||
exclude list, заполняемый вручную. Вместе с ttl можно применять md5sig. Это ничего не испортит, зато дает неплохой
|
exclude list, заполняемый вручную. Вместе с ttl можно применять md5sig. Это ничего не испортит, зато дает неплохой
|
||||||
@ -676,14 +722,16 @@ L7 протокол становится известен обычно посл
|
|||||||
Нумерация профилей идет с 1 до N. Последним в цепочке создается пустой профиль с номером 0.
|
Нумерация профилей идет с 1 до N. Последним в цепочке создается пустой профиль с номером 0.
|
||||||
Он используется, когда никакие условия фильтров не совпали.
|
Он используется, когда никакие условия фильтров не совпали.
|
||||||
|
|
||||||
**ВАЖНО:** множественные стратегии создавались только для случаев, когда невозможно обьединить
|
> [!IMPORTANT]
|
||||||
имеющиеся стратегии для разных ресурсов. Копирование стратегий из blockcheck для разных сайтов
|
> Множественные стратегии создавались только для случаев, когда невозможно обьединить
|
||||||
во множество профилей без понимания как они работают приведет к нагромождению параметров, которые все равно
|
> имеющиеся стратегии для разных ресурсов. Копирование стратегий из blockcheck для разных сайтов
|
||||||
не покроют все возможные заблокированные ресурсы. Вы только увязните в этой каше.
|
> во множество профилей без понимания как они работают приведет к нагромождению параметров, которые все равно
|
||||||
|
> не покроют все возможные заблокированные ресурсы. Вы только увязните в этой каше.
|
||||||
|
|
||||||
**ВАЖНО:** user-mode реализация ipset создавалась не как удобная замена *nix версии, реализованной в ядре.
|
> [!IMPORTANT]
|
||||||
Вариант в ядре работает гораздо эффективнее. Это создавалось для систем без подержки ipset в ядре.
|
> user-mode реализация ipset создавалась не как удобная замена *nix версии, реализованной в ядре.
|
||||||
Конкретно - Windows и ядра Linux, собранные без nftables и ipset модулей ядра. Например, в android нет ipset.
|
> Вариант в ядре работает гораздо эффективнее. Это создавалось для систем без подержки ipset в ядре.
|
||||||
|
> Конкретно - Windows и ядра Linux, собранные без nftables и ipset модулей ядра. Например, в android нет ipset.
|
||||||
|
|
||||||
## tpws
|
## tpws
|
||||||
|
|
||||||
@ -691,95 +739,95 @@ tpws - это transparent proxy.
|
|||||||
```
|
```
|
||||||
@<config_file>|$<config_file> ; читать конфигурацию из файла. опция должна быть первой. остальные опции игнорируются.
|
@<config_file>|$<config_file> ; читать конфигурацию из файла. опция должна быть первой. остальные опции игнорируются.
|
||||||
|
|
||||||
--debug=0|1|2|syslog|@<filename> ; 0,1,2 = логирование на косоль : 0=тихо, 1(default)=подробно, 2=отладка.
|
--debug=0|1|2|syslog|@<filename> ; 0,1,2 = логирование на косоль : 0=тихо, 1(default)=подробно, 2=отладка.
|
||||||
--debug-level=0|1|2 ; указать уровень логирования для syslog и @<filename>
|
--debug-level=0|1|2 ; указать уровень логирования для syslog и @<filename>
|
||||||
--daemon ; демонизировать прогу
|
--daemon ; демонизировать прогу
|
||||||
--pidfile=<file> ; сохранить PID в файл
|
--pidfile=<file> ; сохранить PID в файл
|
||||||
--user=<username> ; менять uid процесса
|
--user=<username> ; менять uid процесса
|
||||||
--uid=uid[:gid] ; менять uid процесса
|
--uid=uid[:gid] ; менять uid процесса
|
||||||
--bind-addr ; на каком адресе слушать. может быть ipv4 или ipv6 адрес
|
--bind-addr ; на каком адресе слушать. может быть ipv4 или ipv6 адрес
|
||||||
; если указан ipv6 link local, то требуется указать с какого он интерфейса : fe80::1%br-lan
|
; если указан ipv6 link local, то требуется указать с какого он интерфейса : fe80::1%br-lan
|
||||||
--bind-linklocal=no|unwanted|prefer|force
|
--bind-linklocal=no|unwanted|prefer|force
|
||||||
; no : биндаться только на global ipv6
|
; no : биндаться только на global ipv6
|
||||||
; unwanted (default) : предпочтительно global, если нет - LL
|
; unwanted (default) : предпочтительно global, если нет - LL
|
||||||
; prefer : предпочтительно LL, если нет - global
|
; prefer : предпочтительно LL, если нет - global
|
||||||
; force : биндаться только на LL
|
; force : биндаться только на LL
|
||||||
--bind-iface4=<iface> ; слушать на первом ipv4 интерфейса iface
|
--bind-iface4=<iface> ; слушать на первом ipv4 интерфейса iface
|
||||||
--bind-iface6=<iface> ; слушать на первом ipv6 интерфейса iface
|
--bind-iface6=<iface> ; слушать на первом ipv6 интерфейса iface
|
||||||
--bind-wait-ifup=<sec> ; ждать до N секунд появления и поднятия интерфейса
|
--bind-wait-ifup=<sec ; ждать до N секунд появления и поднятия интерфейса
|
||||||
--bind-wait-ip=<sec> ; ждать до N секунд получения IP адреса (если задан --bind-wait-ifup - время идет после поднятия интерфейса)
|
--bind-wait-ip=<sec> ; ждать до N секунд получения IP адреса (если задан --bind-wait-ifup - время идет после поднятия интерфейса)
|
||||||
--bind-wait-ip-linklocal=<sec>
|
--bind-wait-ip-linklocal=<sec>
|
||||||
; имеет смысл только при задании --bind-wait-ip
|
; имеет смысл только при задании --bind-wait-ip
|
||||||
; --bind-linklocal=unwanted : согласиться на LL после N секунд
|
; --bind-linklocal=unwanted : согласиться на LL после N секунд
|
||||||
; --bind-linklocal=prefer : согласиться на global address после N секунд
|
; --bind-linklocal=prefer : согласиться на global address после N секунд
|
||||||
--bind-wait-only ; подождать все бинды и выйти. результат 0 в случае успеха, иначе не 0.
|
--bind-wait-only ; подождать все бинды и выйти. результат 0 в случае успеха, иначе не 0.
|
||||||
--connect-bind-addr ; с какого адреса подключаться во внешнюю сеть. может быть ipv4 или ipv6 адрес
|
--connect-bind-addr ; с какого адреса подключаться во внешнюю сеть. может быть ipv4 или ipv6 адрес
|
||||||
; если указан ipv6 link local, то требуется указать с какого он интерфейса : fe80::1%br-lan
|
; если указан ipv6 link local, то требуется указать с какого он интерфейса : fe80::1%br-lan
|
||||||
; опция может повторяться для v4 и v6 адресов
|
; опция может повторяться для v4 и v6 адресов
|
||||||
; опция не отменяет правил маршрутизации ! выбор интерфейса определяется лишь правилами маршрутизации, кроме случая v6 link local.
|
; опция не отменяет правил маршрутизации ! выбор интерфейса определяется лишь правилами маршрутизации, кроме случая v6 link local.
|
||||||
--socks ; вместо прозрачного прокси реализовать socks4/5 proxy
|
--socks ; вместо прозрачного прокси реализовать socks4/5 proxy
|
||||||
--no-resolve ; запретить ресолвинг имен через socks5
|
--no-resolve ; запретить ресолвинг имен через socks5
|
||||||
--resolve-threads ; количество потоков ресолвера
|
--resolve-threads ; количество потоков ресолвера
|
||||||
--port=<port> ; на каком порту слушать
|
--port=<port> ; на каком порту слушать
|
||||||
--maxconn=<max_connections> ; максимальное количество соединений от клиентов к прокси
|
--maxconn=<max_connections> ; максимальное количество соединений от клиентов к прокси
|
||||||
--maxfiles=<max_open_files> ; макс количество файловых дескрипторов (setrlimit). мин требование (X*connections+16), где X=6 в tcp proxy mode, X=4 в режиме тамперинга.
|
--maxfiles=<max_open_files> ; макс количество файловых дескрипторов (setrlimit). мин требование (X*connections+16), где X=6 в tcp proxy mode, X=4 в режиме тамперинга.
|
||||||
; стоит сделать запас с коэффициентом как минимум 1.5. по умолчанию maxfiles (X*connections)*1.5+16
|
; стоит сделать запас с коэффициентом как минимум 1.5. по умолчанию maxfiles (X*connections)*1.5+16
|
||||||
--max-orphan-time=<sec>; если вы запускаете через tpws торрент-клиент с множеством раздач, он пытается установить очень много исходящих соединений,
|
--max-orphan-time=<sec> ; если вы запускаете через tpws торрент-клиент с множеством раздач, он пытается установить очень много исходящих соединений,
|
||||||
; большая часть из которых отваливается по таймауту (юзера сидят за NAT, firewall, ...)
|
; большая часть из которых отваливается по таймауту (юзера сидят за NAT, firewall, ...)
|
||||||
; установление соединения в linux может длиться очень долго. локальный конец отвалился, перед этим послав блок данных,
|
; установление соединения в linux может длиться очень долго. локальный конец отвалился, перед этим послав блок данных,
|
||||||
; tpws ждет подключения удаленного конца, чтобы отослать ему этот блок, и зависает надолго.
|
; tpws ждет подключения удаленного конца, чтобы отослать ему этот блок, и зависает надолго.
|
||||||
; настройка позволяет сбрасывать такие подключения через N секунд, теряя блок данных. по умолчанию 5 сек. 0 означает отключить функцию
|
; настройка позволяет сбрасывать такие подключения через N секунд, теряя блок данных. по умолчанию 5 сек. 0 означает отключить функцию
|
||||||
; эта функция не действует на успешно подключенные ранее соединения
|
; эта функция не действует на успешно подключенные ранее соединения
|
||||||
|
|
||||||
--local-rcvbuf=<bytes> ; SO_RCVBUF для соединений client-proxy
|
--local-rcvbuf=<bytes> ; SO_RCVBUF для соединений client-proxy
|
||||||
--local-sndbuf=<bytes> ; SO_SNDBUF для соединений client-proxy
|
--local-sndbuf=<bytes> ; SO_SNDBUF для соединений client-proxy
|
||||||
--remote-rcvbuf=<bytes> ; SO_RCVBUF для соединений proxy-target
|
--remote-rcvbuf=<bytes> ; SO_RCVBUF для соединений proxy-target
|
||||||
--remote-sndbuf=<bytes> ; SO_SNDBUF для соединений proxy-target
|
--remote-sndbuf=<bytes> ; SO_SNDBUF для соединений proxy-target
|
||||||
--nosplice ; не использовать splice на linux системах
|
--nosplice ; не использовать splice на linux системах
|
||||||
--skip-nodelay ; не устанавливать в исходящих соединения TCP_NODELAY. несовместимо со split.
|
--skip-nodelay ; не устанавливать в исходящих соединения TCP_NODELAY. несовместимо со split.
|
||||||
--local-tcp-user-timeout=<seconds> ; таймаут соединений client-proxy (по умолчанию : 10 сек, 0 = оставить системное значение)
|
--local-tcp-user-timeout=<seconds> ; таймаут соединений client-proxy (по умолчанию : 10 сек, 0 = оставить системное значение)
|
||||||
--remote-tcp-user-timeout=<seconds> ; таймаут соединений proxy-target (по умолчанию : 20 сек, 0 = оставить системное значение)
|
--remote-tcp-user-timeout=<seconds> ; таймаут соединений proxy-target (по умолчанию : 20 сек, 0 = оставить системное значение)
|
||||||
|
|
||||||
--split-http-req=method|host ; способ разделения http запросов на сегменты : около метода (GET,POST) или около заголовка Host
|
--split-http-req=method|host ; способ разделения http запросов на сегменты : около метода (GET,POST) или около заголовка Host
|
||||||
--split-pos=<offset> ; делить все посылы на сегменты в указанной позиции. единственная опция, работающая на не-http. при указании split-http-req он имеет преимущество на http.
|
--split-pos=<offset> ; делить все посылы на сегменты в указанной позиции. единственная опция, работающая на не-http. при указании split-http-req он имеет преимущество на http.
|
||||||
--split-any-protocol ; применять split-pos к любым пакетам. по умолчанию - только к http и TLS ClientHello
|
--split-any-protocol ; применять split-pos к любым пакетам. по умолчанию - только к http и TLS ClientHello
|
||||||
--disorder[=http|tls] ; путем манипуляций с сокетом вынуждает отправлять первым второй сегмент разделенного запроса
|
--disorder[=http|tls] ; путем манипуляций с сокетом вынуждает отправлять первым второй сегмент разделенного запроса
|
||||||
--oob[=http|tls] ; отправить байт out-of-band data (OOB) в конце первой части сплита
|
--oob[=http|tls] ; отправить байт out-of-band data (OOB) в конце первой части сплита
|
||||||
--oob-data=<char>|0xHEX ; переопределить байт OOB. по умолчанию 0x00.
|
--oob-data=<char>|0xHEX ; переопределить байт OOB. по умолчанию 0x00.
|
||||||
--hostcase ; менять регистр заголовка "Host:". по умолчанию на "host:".
|
--hostcase ; менять регистр заголовка "Host:". по умолчанию на "host:".
|
||||||
--hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase
|
--hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase
|
||||||
--hostdot ; добавление точки после имени хоста : "Host: kinozal.tv."
|
--hostdot ; добавление точки после имени хоста : "Host: kinozal.tv."
|
||||||
--hosttab ; добавление табуляции после имени хоста : "Host: kinozal.tv\t"
|
--hosttab ; добавление табуляции после имени хоста : "Host: kinozal.tv\t"
|
||||||
--hostnospace ; убрать пробел после "Host:"
|
--hostnospace ; убрать пробел после "Host:"
|
||||||
--hostpad=<bytes> ; добавить паддинг-хедеров общей длиной <bytes> перед Host:
|
--hostpad=<bytes> ; добавить паддинг-хедеров общей длиной <bytes> перед Host:
|
||||||
--domcase ; домен после Host: сделать таким : TeSt.cOm
|
--domcase ; домен после Host: сделать таким : TeSt.cOm
|
||||||
--methodspace ; добавить пробел после метода : "GET /" => "GET /"
|
--methodspace ; добавить пробел после метода : "GET /" => "GET /"
|
||||||
--methodeol ; добавить перевод строки перед методом : "GET /" => "\r\nGET /"
|
--methodeol ; добавить перевод строки перед методом : "GET /" => "\r\nGET /"
|
||||||
--unixeol ; конвертировать 0D0A в 0A и использовать везде 0A
|
--unixeol ; конвертировать 0D0A в 0A и использовать везде 0A
|
||||||
--tlsrec=sni|sniext ; разбивка TLS ClientHello на 2 TLS records. режем между 1 и 2 символами hostname в SNI или между байтами длины SNI extension. Если SNI нет - отмена.
|
--tlsrec=sni|sniext ; разбивка TLS ClientHello на 2 TLS records. режем между 1 и 2 символами hostname в SNI или между байтами длины SNI extension. Если SNI нет - отмена.
|
||||||
--tlsrec-pos=<pos> ; разбивка TLS ClientHello на 2 TLS records. режем на указанной позиции, если длина слишком мелкая - на позиции 1.
|
--tlsrec-pos=<pos> ; разбивка TLS ClientHello на 2 TLS records. режем на указанной позиции, если длина слишком мелкая - на позиции 1.
|
||||||
--mss=<int> ; установить MSS для клиента. может заставить сервер разбивать ответы, но существенно снижает скорость
|
--mss=<int> ; установить MSS для клиента. может заставить сервер разбивать ответы, но существенно снижает скорость
|
||||||
--mss-pf=[~]port1[-port2] ; применять MSS только к портам назначения, подпадающим под фильтр. ~ означает инверсию
|
--mss-pf=[~]port1[-port2] ; применять MSS только к портам назначения, подпадающим под фильтр. ~ означает инверсию
|
||||||
--tamper-start=[n]<pos> ; начинать дурение только с указанной байтовой позиции или номера блока исходяшего потока (считается позиция начала принятого блока)
|
--tamper-start=[n]<pos> ; начинать дурение только с указанной байтовой позиции или номера блока исходяшего потока (считается позиция начала принятого блока)
|
||||||
--tamper-cutoff=[n]<pos> ; закончить дурение на указанной байтовой позиции или номере блока исходящего потока (считается позиция начала принятого блока)
|
--tamper-cutoff=[n]<pos> ; закончить дурение на указанной байтовой позиции или номере блока исходящего потока (считается позиция начала принятого блока)
|
||||||
--hostlist=<filename> ; действовать только над доменами, входящими в список из filename. поддомены автоматически учитываются.
|
--hostlist=<filename> ; действовать только над доменами, входящими в список из filename. поддомены автоматически учитываются.
|
||||||
; в файле должен быть хост на каждой строке.
|
; в файле должен быть хост на каждой строке.
|
||||||
; список читается при старте и хранится в памяти в виде иерархической структуры для быстрого поиска.
|
; список читается при старте и хранится в памяти в виде иерархической структуры для быстрого поиска.
|
||||||
; при изменении времени модификации файла он перечитывается автоматически по необходимости
|
; при изменении времени модификации файла он перечитывается автоматически по необходимости
|
||||||
; список может быть запакован в gzip. формат автоматически распознается и разжимается
|
; список может быть запакован в gzip. формат автоматически распознается и разжимается
|
||||||
; списков может быть множество. пустой общий лист = его отсутствие
|
; списков может быть множество. пустой общий лист = его отсутствие
|
||||||
; хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello.
|
; хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello.
|
||||||
--hostlist-exclude=<filename> ; не применять дурение к доменам из листа. может быть множество листов. схема аналогична include листам.
|
--hostlist-exclude=<filename> ; не применять дурение к доменам из листа. может быть множество листов. схема аналогична include листам.
|
||||||
--hostlist-auto=<filename> ; обнаруживать автоматически блокировки и заполнять автоматический hostlist (требует перенаправления входящего трафика)
|
--hostlist-auto=<filename> ; обнаруживать автоматически блокировки и заполнять автоматический hostlist (требует перенаправления входящего трафика)
|
||||||
--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 ; начало новой стратегии
|
--new ; начало новой стратегии (новый профиль)
|
||||||
--filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии
|
--filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии
|
||||||
--filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. поддерживается список через запятую.
|
--filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. поддерживается список через запятую.
|
||||||
--filter-l7=[http|tls|quic|wireguard|dht|unknown] ; фильтр протокола L6-L7. поддерживается несколько значений через запятую.
|
--filter-l7=[http|tls|quic|wireguard|dht|unknown] ; фильтр протокола L6-L7. поддерживается несколько значений через запятую.
|
||||||
--ipset=<filename> ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
--ipset=<filename> ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
||||||
--ipset-exclude=<filename> ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
--ipset-exclude=<filename> ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
|
||||||
```
|
```
|
||||||
|
|
||||||
`--debug` позволяет выводить подробный лог действий на консоль, в syslog или в файл.
|
`--debug` позволяет выводить подробный лог действий на консоль, в syslog или в файл.
|
||||||
@ -1151,7 +1199,7 @@ ipset/get_antizapret_domains.sh
|
|||||||
ipset/get_reestr_resolvable_domains.sh
|
ipset/get_reestr_resolvable_domains.sh
|
||||||
ipset/get_refilter_domains.sh
|
ipset/get_refilter_domains.sh
|
||||||
```
|
```
|
||||||
Он кладется в ipset/zapret-hosts.txt.gz.
|
Он кладется в `ipset/zapret-hosts.txt.gz`.
|
||||||
|
|
||||||
При изменении времени модификации файлов списки перечитываются автоматически.
|
При изменении времени модификации файлов списки перечитываются автоматически.
|
||||||
|
|
||||||
@ -1625,9 +1673,10 @@ IFACE_WAN6="henet ipsec0"
|
|||||||
Несколько интерфейсов могут быть вписаны через пробел.
|
Несколько интерфейсов могут быть вписаны через пробел.
|
||||||
Если IFACE_WAN6 не задан, то берется значение IFACE_WAN.
|
Если IFACE_WAN6 не задан, то берется значение IFACE_WAN.
|
||||||
|
|
||||||
**ВАЖНО**: настройка маршрутизации, маскарада и т.д. не входит в задачу zapret.
|
> [!IMPORTANT]
|
||||||
Включаются только режимы, обеспечивающие перехват транзитного трафика.
|
> Настройка маршрутизации, маскарада и т.д. не входит в задачу zapret.
|
||||||
Возможно определить несколько интерфейсов следующим образом:
|
> Включаются только режимы, обеспечивающие перехват транзитного трафика.
|
||||||
|
> Возможно определить несколько интерфейсов следующим образом:
|
||||||
|
|
||||||
`IFACE_LAN="eth0 eth1 eth2"`
|
`IFACE_LAN="eth0 eth1 eth2"`
|
||||||
|
|
||||||
@ -1757,7 +1806,7 @@ zapret_custom_firewall_nft поднимает правила nftables.
|
|||||||
|
|
||||||
## Простая установка
|
## Простая установка
|
||||||
|
|
||||||
`install_easy.sh` автоматизирует ручные варианты процедур установки (см manual_setup.txt).
|
`install_easy.sh` автоматизирует ручные варианты процедур установки (см [manual_setup.txt](./manual_setup.txt)).
|
||||||
Он поддерживает OpenWRT, linux системы на базе systemd или openrc и MacOS.
|
Он поддерживает OpenWRT, linux системы на базе systemd или openrc и MacOS.
|
||||||
|
|
||||||
Для более гибкой настройки перед запуском инсталлятора следует выполнить раздел "Выбор параметров".
|
Для более гибкой настройки перед запуском инсталлятора следует выполнить раздел "Выбор параметров".
|
||||||
@ -1975,9 +2024,9 @@ connbytes придется опускать, поскольку модуля в
|
|||||||
запускайте из конца autorun.sh через "&". Скрипт должен в начале делать sleep 5, чтобы дождаться
|
запускайте из конца autorun.sh через "&". Скрипт должен в начале делать sleep 5, чтобы дождаться
|
||||||
поднятия сети и iptables от huawei.
|
поднятия сети и iptables от huawei.
|
||||||
|
|
||||||
**ПРЕДУПРЕЖДЕНИЕ.**\
|
> [!WARNING]
|
||||||
На этом модеме происходят хаотические сбросы соединений tcp по непонятным причинам.
|
> На этом модеме происходят хаотические сбросы соединений tcp по непонятным причинам.
|
||||||
Выглядит это так, если запускать curl с самого модема:
|
> Выглядит это так, если запускать curl с самого модема:
|
||||||
```
|
```
|
||||||
curl www.ru
|
curl www.ru
|
||||||
curl: (7) Failed to connect to www.ru port 80: Host is unreachable
|
curl: (7) Failed to connect to www.ru port 80: Host is unreachable
|
||||||
@ -1999,17 +2048,17 @@ curl: (7) Failed to connect to www.ru port 80: Host is unreachable
|
|||||||
Поддержка ipset отсутствует. Значит, все, что можно сделать - создать индивидуальные правила
|
Поддержка ipset отсутствует. Значит, все, что можно сделать - создать индивидуальные правила
|
||||||
на небольшое количество хостов.
|
на небольшое количество хостов.
|
||||||
|
|
||||||
Некоторые наброски скриптов присутствуют в files/huawei. _Не готовое решение!_ Смотрите, изучайте, приспосабливайте.\
|
Некоторые наброски скриптов присутствуют в [files/huawei](./../files/huawei/). _Не готовое решение!_ Смотрите, изучайте, приспосабливайте.\
|
||||||
Здесь можно скачать готовые полезные статические бинарники для arm, включая curl : https://github.com/bol-van/bins
|
Здесь можно скачать готовые полезные статические бинарники для arm, включая curl : https://github.com/bol-van/bins
|
||||||
|
|
||||||
|
|
||||||
## FreeBSD, OpenBSD, MacOS
|
## FreeBSD, OpenBSD, MacOS
|
||||||
|
|
||||||
Описано в docs/bsd.txt
|
Описано в [docs/bsd.txt](./bsd.txt)
|
||||||
|
|
||||||
## Windows
|
## Windows
|
||||||
|
|
||||||
Описано в docs/windows.txt
|
Описано в [docs/windows.txt](./windows.txt)
|
||||||
|
|
||||||
|
|
||||||
## Другие прошивки
|
## Другие прошивки
|
||||||
@ -2078,8 +2127,8 @@ Openwrt является одной из немногих относительн
|
|||||||
|
|
||||||
Если не работает автономный обход, приходится перенаправлять трафик через сторонний хост.
|
Если не работает автономный обход, приходится перенаправлять трафик через сторонний хост.
|
||||||
Предлагается использовать прозрачный редирект через socks5 посредством `iptables+redsocks`, либо `iptables+iproute+vpn`.
|
Предлагается использовать прозрачный редирект через socks5 посредством `iptables+redsocks`, либо `iptables+iproute+vpn`.
|
||||||
Настройка варианта с redsocks на openwrt описана в redsocks.txt.
|
Настройка варианта с redsocks на openwrt описана в [redsocks.txt](./redsocks.txt).
|
||||||
Настройка варианта с `iproute+wireguard` - в `wireguard_iproute_openwrt.txt`.
|
Настройка варианта с `iproute+wireguard` - в [wireguard_iproute_openwrt.txt](./wireguard/wireguard_iproute_openwrt.txt).
|
||||||
|
|
||||||
|
|
||||||
## Почему стоит вложиться в покупку VPS
|
## Почему стоит вложиться в покупку VPS
|
||||||
@ -2118,3 +2167,10 @@ VPS можно прибрести в множестве мест. Существ
|
|||||||
из описанного сделать не сможете, то вы сможете хотя бы использовать динамическое перенаправление портов ssh
|
из описанного сделать не сможете, то вы сможете хотя бы использовать динамическое перенаправление портов ssh
|
||||||
для получения шифрованного socks proxy и прописать его в броузер. Знания linux не нужны совсем.
|
для получения шифрованного socks proxy и прописать его в броузер. Знания linux не нужны совсем.
|
||||||
Это вариант наименее напряжный для чайников, хотя и не самый удобный в использовании.
|
Это вариант наименее напряжный для чайников, хотя и не самый удобный в использовании.
|
||||||
|
|
||||||
|
## Поддержать разработчика
|
||||||
|
|
||||||
|
[Реквизиты](https://github.com/bol-van/zapret/issues/590):
|
||||||
|
|
||||||
|
<img src=https://cdn-icons-png.flaticon.com/16/14446/14446252.png alt="USDT" style="vertical-align: middle;"/> USDT 0x3d52Ce15B7Be734c53fc9526ECbAB8267b63d66E
|
||||||
|
<img src=https://cdn-icons-png.flaticon.com/16/5968/5968260.png alt="USDT" style="vertical-align: middle;"/> BTC bc1qhqew3mrvp47uk2vevt5sctp7p2x9m7m5kkchve
|
||||||
|
Loading…
Reference in New Issue
Block a user