mirror of
https://github.com/bol-van/zapret.git
synced 2025-05-09 23:32:57 +03:00
doc works
This commit is contained in:
parent
d2f7a53927
commit
9bcefde37a
129
docs/readme.md
129
docs/readme.md
@ -1,4 +1,4 @@
|
||||
# zapret v70.7
|
||||
# zapret v71
|
||||
|
||||
# ВНИМАНИЕ, остерегайтесь мошенников
|
||||
|
||||
@ -25,7 +25,10 @@ zapret является свободным и open source.
|
||||
- [TCP СЕГМЕНТАЦИЯ](#tcp-сегментация)
|
||||
- [ПЕРЕКРЫТИЕ SEQUENCE NUMBERS](#перекрытие-sequence-numbers)
|
||||
- [СПЕЦИФИЧЕСКИЕ РЕЖИМЫ IPV6](#специфические-режимы-ipv6)
|
||||
- [МОДИФИКАЦИЯ ОРИГИНАЛА](#модификация-оригинала)
|
||||
- [ДУБЛИКАТЫ](#дубликаты)
|
||||
- [КОМБИНИРОВАНИЕ МЕТОДОВ ДЕСИНХРОНИЗАЦИИ](#комбинирование-методов-десинхронизации)
|
||||
- [КЭШ IP](#кэш-ip)
|
||||
- [РЕАКЦИЯ DPI НА ОТВЕТ СЕРВЕРА](#реакция-dpi-на-ответ-сервера)
|
||||
- [РЕЖИМ SYNACK](#режим-synack)
|
||||
- [РЕЖИМ SYNDATA](#режим-syndata)
|
||||
@ -169,10 +172,30 @@ dvtws, собираемый из тех же исходников (см. [док
|
||||
--qnum=N ; номер очереди N
|
||||
--bind-fix4 ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv4 пакетов
|
||||
--bind-fix6 ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv6 пакетов
|
||||
--ctrack-timeouts=S:E:F[:U] ; таймауты внутреннего conntrack в состояниях SYN, ESTABLISHED, FIN, таймаут udp. по умолчанию 60:300:60:60
|
||||
--ctrack-disable=[0|1] ; 1 или остутствие аргумента отключает conntrack
|
||||
--ipcache-lifetime=<int> ; время жизни записей кэша IP в секундах. 0 - без ограничений.
|
||||
--ipcache-hostname=[0|1] ; 1 или отсутствие аргумента включают кэширование имен хостов для применения в стратегиях нулевой фазы
|
||||
--wsize=<winsize>[:<scale_factor>] ; менять tcp window size на указанный размер в SYN,ACK. если не задан scale_factor, то он не меняется (устарело !)
|
||||
--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
|
||||
--ctrack-timeouts=S:E:F[:U] ; таймауты внутреннего conntrack в состояниях SYN, ESTABLISHED, FIN, таймаут udp. по умолчанию 60:300:60:60
|
||||
--orig-ttl=<int> ; модифицировать TTL оригинального пакета
|
||||
--orig-ttl6=<int> ; модифицировать ipv6 hop limit оригинальных пакетов. если не указано, используется значение --orig-ttl
|
||||
--orig-autottl=[<delta>[:<min>[-<max>]]] ; режим auto ttl для ipv4 и ipv6. по умолчанию: +5:3-64. delta=0 отключает функцию
|
||||
--orig-autottl6=[<delta>[:<min>[-<max>]]] ; переопределение предыдущего параметра для ipv6
|
||||
--orig-mod-start=[n|d|s]N ; применять orig-mod только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру больше или равно N
|
||||
--orig-mod-cutoff=[n|d|s]N ; применять orig-mod только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N
|
||||
--dup=<int> ; высылать N дубликатов до оригинала
|
||||
--dup-replace=[0|1] ; 1 или отсутствие аргумента блокирует отправку оригинала. отправляются только дубликаты.
|
||||
--dup-ttl=<int> ; модифицировать TTL дубликатов
|
||||
--dup-ttl6=<int> ; модифицировать ipv6 hop limit дубликатов. если не указано, используется значение --dup-ttl
|
||||
--dup-autottl=[<delta>[:<min>[-<max>]]] ; режим auto ttl для ipv4 и ipv6. по умолчанию: +1:3-64. delta=0 отключает функцию
|
||||
--dup-autottl6=[<delta>[:<min>[-<max>]]] ; переопределение предыдущего параметра для ipv6
|
||||
--dup-fooling=<fooling> ; дополнительные методики как сделать, чтобы дубликат не дошел до сервера. none md5sig badseq badsum datanoack hopbyhop hopbyhop2
|
||||
--dup-badseq-increment=<int|0xHEX> ; инкремент sequence number для badseq. по умолчанию -10000
|
||||
--dup-badack-increment=<int|0xHEX> ; инкремент ack sequence number для badseq. по умолчанию -66000
|
||||
--dup-start=[n|d|s]N ; применять dup только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру больше или равно N
|
||||
--dup-cutoff=[n|d|s]N ; применять dup только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N
|
||||
--hostcase ; менять регистр заголовка "Host:" по умолчанию на "host:".
|
||||
--hostnospace ; убрать пробел после "Host:" и переместить его в конец значения "User-Agent:" для сохранения длины пакета
|
||||
--methodeol ; добавить перевод строки в unix стиле ('\n') перед методом и убрать пробел из Host: : "GET / ... Host: domain.com" => "\nGET / ... Host:domain.com"
|
||||
@ -181,7 +204,7 @@ dvtws, собираемый из тех же исходников (см. [док
|
||||
--dpi-desync=[<mode0>,]<mode>[,<mode2] ; атака по десинхронизации DPI. mode : synack syndata fake fakeknown rst rstack hopbyhop destopt ipfrag1 multisplit multidisorder fakedsplit fakeddisorder ipfrag2 udplen tamper
|
||||
--dpi-desync-fwmark=<int|0xHEX> ; бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. default = 0x40000000
|
||||
--dpi-desync-ttl=<int> ; установить ttl для десинхронизирующих пакетов
|
||||
--dpi-desync-ttl6=<int> ; установить ipv6 hop limit для десинхронизирующих пакетов. если не указано, используется значение ttl
|
||||
--dpi-desync-ttl6=<int> ; установить ipv6 hop limit для десинхронизирующих пакетов. если не указано, используется значение --dpi-desync-ttl
|
||||
--dpi-desync-autottl=[<delta>[:<min>[-<max>]]] ; режим auto ttl для ipv4 и ipv6. по умолчанию: 1:3-20. delta=0 отключает функцию.
|
||||
--dpi-desync-autottl6=[<delta>[:<min>[-<max>]]] ; переопределение предыдущего параметра для ipv6
|
||||
--dpi-desync-fooling=<fooling> ; дополнительные методики как сделать, чтобы фейковый пакет не дошел до сервера. none md5sig badseq badsum datanoack hopbyhop hopbyhop2
|
||||
@ -450,16 +473,68 @@ extension хедерам в поисках транспортного хедер
|
||||
При `hopbyhop,ipfrag2` последовательность хедеров будет : `ipv6,hop-by-hop`,`fragment`,`tcp/udp`.
|
||||
Режим `ipfrag1` может срабатывать не всегда без специальной подготовки. См. раздел `IP фрагментация`.
|
||||
|
||||
### МОДИФИКАЦИЯ ОРИГИНАЛА
|
||||
|
||||
Параметры `--orig-ttl` и `--orig-ttl6` позволяют изменить TTL оригинальных пакетов.
|
||||
Если дальнейшие манипуляции связаны с оригиналом, например, идет TCP сегментация, то исходными
|
||||
данными являются измененные оригинальные пакеты. То есть в данном примере TCP сегменты пойдут с измененным TTL.
|
||||
|
||||
Вариант `--orig-autottl` и `--orig-autottl6` работает аналогично `dpi-desync-autottl`, но по оригинальным пакетам.
|
||||
Дельту стоит указывать положительную с унарным знаком `+`, иначе оригинал не дойдет до сервера, и вы вообще ничего не получите.
|
||||
Пример : `--orig-autottl=+5:3-64`.
|
||||
|
||||
`--orig-mod-start` и `--orig-mod-cutoff` задают ограничитель по началу и концу модификации оригинала.
|
||||
Схема аналогична `--dpi-desync-start` и `--dpi-desync-cutoff`.
|
||||
|
||||
Функция может быть полезна, когда DPI охотится за фейками и блокирует соединение при наличии подозрительных признаков,
|
||||
в частности, измененный TTL.
|
||||
|
||||
### ДУБЛИКАТЫ
|
||||
|
||||
Дубликаты - это копии оригинальных пакетов, высылаемые перед ними. Включаются параметром `--dup=N`, где N - количество дублей,
|
||||
не включающее оригинал. `--dup-replace` отключает отсылку оригинала.
|
||||
|
||||
Отсылка дублей имеет место только в тех случаях, когда высылается и оригинал без реконструкции.
|
||||
Например, если случилась TCP сегментация, то оригинал фактически дропается и заменяется искусственно сконструированными сегментами.
|
||||
Дубли высланы не будут. Это же касается изменения состава хедеров ipv6, режима tamper для DHT и других.
|
||||
|
||||
Возможно применение всех вариантов дурения, как и для desync : `--dup-ttl`. `--dup-ttl6`, `--dup-fooling`. Нужно ли, чтобы эти пакеты доходили до сервера и в каком виде, решаете вы согласно задуманной стратегии.
|
||||
|
||||
Вариант `--dup-autottl` и `--dup-autottl6` работает аналогично `dpi-desync-autottl`, но по оригинальным пакетам.
|
||||
Дельту стоит указывать можно положительную с унарным знаком `+`, а можно и отрицательную. Зависит от вашей задумки.
|
||||
Пример : `--dup-autottl=-2:3-64`.
|
||||
|
||||
`--dup-start` и `--dup-cutoff` задают ограничитель по началу и концу применения стратегии дубликатов.
|
||||
Схема аналогична `--dpi-desync-start` и `--dpi-desync-cutoff`.
|
||||
|
||||
Функция может помочь, когда DPI сечет разницу в характеристиках фейков и оригинала.
|
||||
Дубликатами можно попытаться заставить DPI принять , что весь сеанс идет аномальным.
|
||||
Например, у нас имеется TCP сеанс с MD5 сразу с первого SYN пакета. Значит последующие MD5 будут восприниматься нормально.
|
||||
|
||||
### КОМБИНИРОВАНИЕ МЕТОДОВ ДЕСИНХРОНИЗАЦИИ
|
||||
|
||||
В параметре dpi-desync можно указать до 3 режимов через запятую.
|
||||
|
||||
* 0 фаза - предполагает работу на этапе установления соединения : `synack`, `syndata`, `--wsize`, `--wssize`. На эту фазу не действуют фильтры по [hostlist](#множественные-стратегии).
|
||||
* 0 фаза - предполагает работу на этапе установления соединения : `synack`, `syndata`, `--wsize`, `--wssize`. На эту фазу не действуют фильтры по [hostlist](#множественные-стратегии), кроме случая, описанного [далее](#кэш-ip).
|
||||
* 1 фаза - отсылка чего-либо до оригинального пакета данных : `fake`, `rst`, `rstack`.
|
||||
* 2 фаза - отсылка в модифицированном виде оригинального пакета данных (например, `fakedsplit` или `ipfrag2`).
|
||||
|
||||
Режимы требуют указания в порядке возрастания номеров фаз.
|
||||
|
||||
### КЭШ IP
|
||||
|
||||
ipcache представляет собой структуру в памяти процесса, позволяющую по ключу IP адреса и имени интерфейса запоминать некоторую информацию,
|
||||
которую впоследствии можно извлечь и использовать как недостающие данные. На текущий момент это применяются в следующих ситуациях :
|
||||
|
||||
1. IP,interface => hop count . Кэшируется количество хопов до сервера для последующего применения в autottl прямо с первого пакета, когда еще ответа не было. Пока записи в кэше нет, autottl не будет применен сразу. При повторном запросе до истечения времени жизни записи autottl будет применение сразу.
|
||||
|
||||
2. IP => hostname . Кэшируется имя хоста, вне привязки к интерфейсу, для последующего применения в стратегиях нулевой фазы. Режим отключен по умолчанию и включается через параметры `ipcache-hostname`.
|
||||
Данная техника является экспериментальной. Ее проблема в том, что как такового нет однозначного соответствия между доменом и IP. Множество доменов могут ссылаться на тот же IP адрес.
|
||||
При коллизии происходит замещение имени хоста на последний вариант.
|
||||
Домен может скакать по разным IP на CDN. Сейчас один адрес, через час - другой. Эта проблема решается через время жизни записей кэша : `--ipcache-lifetime`. По умолчанию 2 часа.
|
||||
|
||||
При подаче сигнала SIGUSR2 процесс выводит содержимое ipcache на консоль.
|
||||
|
||||
### РЕАКЦИЯ DPI НА ОТВЕТ СЕРВЕРА
|
||||
|
||||
Есть DPI, которые анализируют ответы от сервера, в частности сертификат из ServerHello, где прописаны домены.
|
||||
@ -1660,13 +1735,16 @@ nfqws начнет получать адреса пакетов из локал
|
||||
Каждая опция предполагает запуск одного инстанса соответствующего демона. Все различия методов дурения
|
||||
для `http`, `https`, `quic` и т.д. должны быть отражены через схему мультистратегий.
|
||||
В этом смысле настройка похожа на вариант `winws` на Windows, а перенос конфигов не должен представлять больших сложностей.
|
||||
|
||||
Основное правило настройки перехвата - перехватывайте только необходимый минимум.
|
||||
Любой перехват лишнего - это бессмысленная нагрузка на вашу систему.
|
||||
Опции демонов `--ipset` использовать запрещено. Это сделано намеренно и искусственно, чтобы не поощрять простой и
|
||||
работающий, но неэффективный метод на *nix системах. Используйте `ipset`-ы режима ядра.
|
||||
При необходимости пишите и задействуйте `custom scripts`.
|
||||
Опции демонов `--ipset` использовать нужно с умом. Не стоит перехватывать весь трафик, чтобы потом по параметру --ipset
|
||||
выделить лишь горстку IP. Это будет работать, но очень неэффективно с точки зрения нагрузки на систему.
|
||||
Используйте `ipset`-ы режима ядра. При необходимости пишите и задействуйте `custom scripts`.
|
||||
Но если у вас и так идет работа по всем IP, и нужно написать небольшую специализацию по IP, то --ipset вполне уместен.
|
||||
|
||||
Настройки демонов можно для удобства писать на нескольких строках, используя двойные или одинарные кавычки.
|
||||
Чтобы задействовать стандартные обновляемые хост-листы из `ipset`, используйте маркер <HOSTLIST>.
|
||||
Чтобы задействовать стандартные обновляемые хост-листы из каталога `ipset`, используйте маркер <HOSTLIST>.
|
||||
Он будет заменен на параметры, соответствующие режиму MODE_FILTER, и будут подставлены реально существующие файлы.
|
||||
Если MODE_FILTER не предполагает стандартного хостлиста, <HOSTLIST> будет заменен на пустую строку.
|
||||
Стандартные хостлисты следует вставлять в финальных стратегиях (стратегиях по умолчанию), закрывающих цепочки по
|
||||
@ -1852,6 +1930,13 @@ OPENWRT_WAN6="wan6 vpn6"
|
||||
Это полезно, если у вас есть система управления фаерволом, в настройки которой и следует прикрутить правила.\
|
||||
На OpenWrt неприменимо при использовании firewall3+iptables.
|
||||
|
||||
`FILTER_TTL_EXPIRED_ICMP=1` включает механизмы блокировки пакетов icmp time exceeded, высылаемые роутерами по пути следования пакета в ответ на исчерпание TTL/HL.
|
||||
В linux соединение обрывается системой, если в ответ на первый пакет (для tcp - SYN) пришел такой icmp. Аналогичная схема имеется и в datagram сокетах.
|
||||
Блокировка icmp идет исключительно за счет средств iptables/nftables.
|
||||
Чтобы не трогать весь трафик, в режиме PRENAT используется connmark для пометки сеансов, над которыми поработал nfqws. В режиме POSTNAT так сделать нельзя,
|
||||
поэтому помечаются все сеансы, заворачиваемые на nfqws.
|
||||
Настройку лучше отключить, если вы не ожидаете проблем от icmp, тк в этом случае будет меньше ненужных вмешательств в трафик.
|
||||
|
||||
***Следующие настройки не актуальны для openwrt:***
|
||||
|
||||
Если ваша система работает как роутер, то нужно вписать названия внутренних и внешних интерфейсов:
|
||||
@ -2334,32 +2419,38 @@ OpenWrt является одной из немногих относительн
|
||||
VPS — это виртуальный сервер. Существует огромное множество датацентров, предлагающих данную услугу.
|
||||
На VPS могут выполняться какие угодно задачи. От простого веб-сайта до навороченной системы собственной разработки.
|
||||
Можно использовать VPS и для поднятия собственного VPN или прокси.
|
||||
Сама широта возможных способов применения и распространенность услуги ограничивают возможности регуляторов
|
||||
по бану сервисов такого типа. Да, если введут белые списки, то решение загнется, но это будет уже другая
|
||||
Сама широта возможных способов применения и распространенность услуги сводят к минимуму возможности
|
||||
регуляторов по бану сервисов такого типа. Да, если введут белые списки, то решение загнется, но это будет уже другая
|
||||
реальность, в которой придется изобретать иные решения.
|
||||
Пока этого не сделали. Однако, уже наблюдаются попытки гасить некоторые протоколы на диапазонах VPS провайдеров.
|
||||
Вплоть до TLS. Как следствие не работают ни средства обхода типа VLESS, ни обычные сайты.
|
||||
Пока это делается еще точечно, не на всех провайдерах. Не стоит сразу оплачивать VPS надолго. Сначала проверьте
|
||||
все ли работает из того, что вам нужно. Или может быть стоит найти другой VPS.
|
||||
|
||||
VPS имеет преимущество над VPN провайдером.
|
||||
Пока этого не сделали, никто не будет банить хостинги просто потому, что они предоставляют хостинг услуги.
|
||||
Вы, как индивидуум, скорее всего, никому не нужны. Подумайте чем вы отличаетесь от известного VPN провайдера.
|
||||
VPN-провайдер предоставляет _простую_ и _доступную_ услугу по обходу блокировок для масс.
|
||||
Все, что просто и доступно, первым делом идет под блок.
|
||||
Этот факт делает его первоочередной целью блокировки. РКН направит уведомление, после отказа сотрудничать
|
||||
заблокирует VPN. Предоплаченная сумма пропадет.
|
||||
У регуляторов нет и никогда не будет ресурсов для тотальной проверки каждого сервера в сети.
|
||||
Возможен китайский расклад, при котором DPI выявляет VPN-протоколы и динамически банит IP серверов,
|
||||
предоставляющих нелицензированный VPN. Но имея знания, голову, вы всегда можете обфусцировать
|
||||
VPN трафик или применить другие типы VPN, более устойчивые к анализу на DPI, или просто менее широкоизвестные,
|
||||
а следовательно с меньшей вероятностью обнаруживаемые регулятором.
|
||||
У вас есть свобода делать на вашем VPS все что вы захотите, адаптируясь к новым условиям.
|
||||
Да, это потребует знаний. Вам выбирать учиться и держать ситуацию под контролем, когда вам ничего запретить
|
||||
не могут, или покориться системе. Порог необходимых знаний и возможностей для самостоятельного входа в обход блокировок будет только возрастать.
|
||||
не могут, или покориться системе.
|
||||
|
||||
VPS можно приобрести в множестве мест. Существуют специализированные на поиске предложений VPS порталы.\
|
||||
Например, [вот этот](https://vps.today). Для персонального VPN сервера обычно достаточно самой минимальной конфигурации, но с безлимитным трафиком или
|
||||
Например, [вот этот](https://vps.today).
|
||||
Для персонального VPN сервера обычно достаточно самой минимальной конфигурации, но с безлимитным трафиком или
|
||||
с большим лимитом по трафику (терабайты). Важен и тип VPS. OpenVZ подойдёт для OpenVPN, но
|
||||
вы не поднимете на нем WireGuard, IPsec, то есть все, что требует kernel mode.
|
||||
Для kernel mode требуется тип виртуализации, предполагающий запуск полноценного экземпляра ОС linux
|
||||
вместе с ядром. Подойдут KVM, Xen, Hyper-V, VMware.
|
||||
|
||||
По цене можно найти предложения, которые будут дешевле готовой VPN услуги, но при этом вы сам хозяин в своей лавке
|
||||
и не рискуете попасть под бан регулятора, разве что «заодно» — под ковровую бомбардировку с баном миллионов IP.
|
||||
Кроме того, если вам совсем все кажется сложным, прочитанное вызывает ступор и вы точно знаете, что ничего
|
||||
из описанного сделать не сможете, то вы сможете хотя бы использовать динамическое перенаправление портов SSH
|
||||
для получения шифрованного SOCKS-прокси и прописать его в браузер. Знания linux не нужны совсем.
|
||||
Это вариант наименее напряжный для чайников, хотя и не самый удобный в использовании.
|
||||
|
||||
## Поддержать разработчика
|
||||
|
||||
USDT `0x3d52Ce15B7Be734c53fc9526ECbAB8267b63d66E`
|
||||
|
Loading…
x
Reference in New Issue
Block a user