mirror of
https://github.com/bol-van/zapret.git
synced 2025-04-30 19:02:59 +03:00
135 lines
14 KiB
Markdown
135 lines
14 KiB
Markdown
Специально для тех, кто хочет побыстрее начать, но не хочет слишком углубляться в простыню `readme.md`.
|
||
|
||
Предупреждение: не пишите в Issue вопросы типа: "как скопировать файл", "как скачать", "как запустить", ...
|
||
То есть все, что касается базовых навыков обращения с ОС Linux. Эти вопросы буду закрывать сразу.
|
||
Если у вас подобные вопросы возникают, рекомендую не использовать данный софт или искать помощь где-то в другом месте.
|
||
То же самое могу сказать тем, кто хочет нажать 1 кнопку, чтобы все заработало, и совсем не хочет читать и изучать.
|
||
Увы, такое не подвезли и не подвезут. Ищите другие более простые методы обхода. Этот метод не для рядового пользователя.
|
||
|
||
Обход DPI является хакерской методикой.
|
||
Под этим словом понимается метод, которому сопротивляется окружающая среда, которому автоматически не гарантирована работоспособность в любых условиях и на любых ресурсах, требуется настройка под специфические условия у вашего провайдера.
|
||
Условия могут меняться со временем, и методика может начинать или переставать работать, может потребоваться повторный анализ ситуации.
|
||
Могут обнаруживаться отдельные ресурсы, которые заблокированы иначе, и которые не работают или перестали работать.
|
||
Могут и сломаться отдельные незаблокированные ресурсы.
|
||
Поэтому очень желательно иметь знания в области сетей, чтобы иметь возможность проанализировать техническую ситуацию.
|
||
Не будет лишним иметь обходные каналы проксирования трафика на случай, если обход DPI не помогает.
|
||
|
||
Будем считать, что у вас есть система на базе традиционного Linux или OpenWrt.
|
||
Если у вас традиционный Linux - задача обойти блокировки только на этой системе, если OpenWrt - обойти блокировки для подключенных устройств.
|
||
Это наиболее распространенный случай.
|
||
|
||
1) Чтобы процедура установки сработала в штатном режиме на OpenWrt, нужно рассчитывать на свободное место около 1-2 Mb
|
||
для установки самого `zapret` и необходимых дополнительных пакетов.
|
||
Если места мало и нет возможности его увеличить за счет extroot, возможно, придется отказаться от варианта простой установки и прикручивать в ручном режиме без имеющихся скриптов запуска,
|
||
либо попробовать засунуть требуемые `zapret` дополнительные пакеты в сжатый образ squashfs с помощью image builder и перешить этим вариантом роутер.
|
||
См. `docs/manual_setup.md`, `docs/readme.md`.
|
||
|
||
2) Скачайте `.zip` архив проекта с GitHub в `/tmp`, распакуйте его там, либо клонируйте проект: `git clone --depth 1 https://github.com/bol-van/zapret`.
|
||
|
||
3) Убедитесь, что у вас отключены все средства обхода блокировок, в том числе и сам `zapret`.
|
||
Гарантированно уберет `zapret` скрипт `uninstall_easy.sh`.
|
||
|
||
4) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. NAT не подходит.
|
||
|
||
5) Выполните однократные действия по установке требуемых пакетов в ОС и настройке бинарников правильной архитектуры
|
||
|
||
```sh
|
||
install_bin.sh
|
||
install_prereq.sh
|
||
```
|
||
|
||
Вас могут спросить о типе фаервола (`iptables`/`nftables`) и использовании IPv6. Это нужно для установки
|
||
правильных пакетов в ОС, чтобы не устанавливать лишнее.
|
||
|
||
6) Запустите `blockcheck.sh`.
|
||
|
||
`blockcheck.sh` в начале проверяет DNS. Если выводятся сообщения о подмене адресов, то первым делом нужно решить эту проблему, иначе ничего не будет работать. Решение проблемы DNS выходит за рамки проекта.
|
||
Обычно она решается либо заменой DNS серверов от провайдера на публичные (1.1.1.1, 8.8.8.8), либо в случае перехвата провайдером обращений к сторонним серверам - через специальные средства шифрования DNS запросов, такие как DNSCrypt, DoT, DoH.
|
||
|
||
Еще один эффективный вариант - использовать ресолвер от Yandex 77.88.8.88 на нестандартном порту 1253.
|
||
Многие провайдеры не анализируют обращения к DNS на нестандартных портах.
|
||
|
||
Проверить работает ли этот вариант можно так :
|
||
|
||
```sh
|
||
dig -p 53 @77.88.8.88 rutracker.org
|
||
dig -p 1253 @77.88.8.88 rutracker.org
|
||
```
|
||
|
||
Если DNS действительно подменяется, и ответ на эти 2 команды разный, значит метод вероятно работает.
|
||
|
||
В OpenWrt DNS на нестандартном порту можно прописать в `/etc/config/dhcp` таким способом:
|
||
|
||
```
|
||
config dnsmasq
|
||
.............
|
||
list server '77.88.8.88#1253'
|
||
```
|
||
|
||
Если настройки IP и DNS получаются автоматически от провайдера, в `/etc/config/network`
|
||
найдите секцию интерфейса `wan` и сделайте так:
|
||
|
||
```
|
||
config interface 'wan'
|
||
.............
|
||
option peerdns '0'
|
||
```
|
||
|
||
```sh
|
||
/etc/init.d/network restart
|
||
/etc/init.d/dnsmasq restart
|
||
```
|
||
|
||
Если это не подходит, можно перенаправлять обращения на UDP и TCP порты 53 вашего DNS сервера на 77.88.8.88:1253 средствами `iptables`/`nftables`. В `/etc/resolv.conf` нельзя прописать DNS на нестандартном порту.
|
||
|
||
7) `blockcheck` позволяет выявить рабочую стратегию обхода блокировок
|
||
По результатам `blockcheck` нужно понять какой вариант будете использовать: `nfqws` или `tpws`.
|
||
И запомнить найденные стратегии.
|
||
|
||
Следует понимать, что `blockcheck` проверяет доступность только конкретного домена, который вы вводите в начале.
|
||
Вероятно, все остальные домены блокированы подобным образом, но не факт.
|
||
В большинстве случаев можно объединить несколько стратегий в одну универсальную, но для этого необходимо понимать
|
||
"что там за буковки". Если вы в сетях слабо разбираетесь, это не для вас. В противном случае читайте `readme.md`.
|
||
`zapret` не может пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их через пробел.
|
||
|
||
Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас может быть несколько маршрутов с различной длиной по ХОПам, с DPI на разных хопах.
|
||
Приходится преодолевать целый зоопарк DPI, которые еще и включаются в работу хаотичным образом или образом, зависящим от направления (IP сервера).
|
||
`blockcheck` не всегда может выдать вам в итогах оптимальную стратегию, которую надо просто переписать в настройки.
|
||
В некоторых случаях надо реально думать что происходит, анализируя результат на разных стратегиях.
|
||
Если вы применяете большой TTL, чтобы достать до магистрала, то не лишним будет добавить дополнительный ограничитель
|
||
`--dpi-desync-fooling`, чтобы не сломать сайты на более коротких дистанциях.
|
||
`md5sig` наиболее совместим, но работает только на Linux серверах.
|
||
`badseq` может работать только на HTTPS и не работать на HTTP.
|
||
`badsum` и вовсе перестал работать на многих провайдерах с некоторых пор, видимо включили проверку чексумм на DPI.
|
||
Чтобы выяснить какие дополнительные ограничители работают, смотрите результат теста аналогичных стратегий без TTL с каждым из этих ограничителей.
|
||
|
||
При использовании `autottl` следует протестировать как можно больше разных доменов.
|
||
Эта техника может на одних провайдерах работать стабильно, на других потребуется выяснить при каких параметрах она стабильна, на третьих полный хаос, и проще отказаться.
|
||
|
||
8) Запустите `install_easy.sh`.
|
||
|
||
Выберите `nfqws` или `tpws`, затем согласитесь на редактирование параметров.
|
||
Откроется редактор, куда впишите найденные стратегии.
|
||
Для `nfqws` отдельно настраиваются стратегии на HTTP и HTTPS для IPv4 и IPv6.
|
||
То есть по максимуму 4 разных варианта.
|
||
`NFQWS_OPT_DESYNC` - это общая установка, которая применяется, если какой-либо уточняющий параметр не задан
|
||
`NFQWS_OPT_DESYNC_HTTP` и `NFQWS_OPT_DESYNC_HTTPS` заменяют стратегию для HTTP и HTTPS.
|
||
Если у вас включен IPv6, то они так же будут применены и к IPv6. Если для IPv6 нужна другая стратегия, то можно задать уточняющие параметры `NFQWS_OPT_DESYNC_HTTP6` и `NFQWS_OPT_DESYNC_HTTPS6`.
|
||
Если стратегии для IPv4 и IPv6 отличаются лишь TTL, то в целях экономии ресурсов роутера (меньше процессов `nfqws`) следует отказаться от использования специфических для IPv6 установок. Вместо них использовать параметры
|
||
`--dpi-desync-ttl` и `--dpi-desync-ttl6` в общих установках. Таким способом можно заставить один процесс `nfqws` обрабатывать трафик на IPv4 и на IPv6 с разным TTL.
|
||
|
||
Важным вопросом является вопрос о поддержке HTTP keep alive.
|
||
Отвечайте `N`. Если вдруг на HTTP сайтах будут хаотические сбои типа то загружается, то заглушка или сброс, попробуйте включить поддержку keep alive.
|
||
Но просто "на всякий случай" не включайте - это увеличит нагрузку на роутер.
|
||
|
||
Если это не помогает, или хаотичное поведение наблюдается и на HTTPS, то еще раз прогоните `blockcheck` с установленным числом попыток проверки не менее 5.
|
||
Возможно, ваш провайдер использует балансировку нагрузки, где на разных путях установлен разный DPI.
|
||
|
||
9) На все остальные вопросы `install_easy.sh` отвечайте согласно выводимой аннотации.
|
||
|
||
10) Если ломаются отдельные незаблокированные ресурсы, следует вносить их в исключения, либо пользоваться ограничивающим ipset или хост листом. Читайте основной талмуд `readme.md` ради подробностей.
|
||
|
||
Это минимальная инструкция, чтобы сориентироваться с чего начать. Однако, это - не панацея.
|
||
В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
|
||
Подробности и полное техническое описание расписаны в `readme.md`.
|