mirror of
https://github.com/bol-van/zapret.git
synced 2025-05-01 03:12:57 +03:00
118 lines
13 KiB
Markdown
118 lines
13 KiB
Markdown
- [Вступление](#вступление)
|
||
- [Самое простое решение](#самое-простое-решение)
|
||
- [Решение "как положено"](#решение-как-положено)
|
||
|
||
# Вступление
|
||
|
||
Специально для тех, кто хочет побыстрее начать, но не хочет слишком углубляться в простыню `readme.md`.
|
||
|
||
Как обычно, компьютерная грамотность ложится полностью на вас.
|
||
Вы должны уметь работать с консолью Windows и иметь минимальные навыки обращения с командными файлами `.bat`, `.cmd`.
|
||
Если грамотность отсутствует и возникает куча "как" на базовых вещах - проходите мимо или ищите помощь в другом месте.
|
||
|
||
Обход DPI является хакерской методикой.
|
||
Под этим словом понимается метод, которому сопротивляется окружающая среда, которому автоматически не гарантирована работоспособность в любых условиях и на любых ресурсах, требуется настройка под специфические условия у вашего провайдера.
|
||
Условия могут меняться со временем, и методика может начинать или переставать работать, может потребоваться повторный анализ ситуации.
|
||
Могут обнаруживаться отдельные ресурсы, которые заблокированы иначе, и которые не работают или перестали работать.
|
||
Могут и сломаться отдельные незаблокированные ресурсы.
|
||
Поэтому очень желательно иметь знания в области сетей, чтобы иметь возможность проанализировать техническую ситуацию.
|
||
Не будет лишним иметь обходные каналы проксирования трафика на случай, если обход DPI не помогает.
|
||
|
||
Будем считать, что у вас есть Windows 7 или выше. Задача - обойти блокировки с самой системы.
|
||
|
||
Есть решение самое простое, а есть "как положено".
|
||
|
||
# Самое простое решение
|
||
|
||
Совсем ничего не могу, все очень сложно, дайте мне таблетку.
|
||
|
||
Скачайте и распакуйте [архив](https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip).
|
||
Запустите `zapret-winws/preset_russia.cmd` от имени администратора.
|
||
Возможно, заведется сразу. Этот вариант похож на `2_any_country.cmd` из [GoodbyeDPI](https://github.com/ValdikSS/GoodbyeDPI).
|
||
|
||
То же самое с ограничителем по автоматически создаваемому хост-листу `preset_russia_autohostlist.cmd`.
|
||
Что такое `autohostlist` - читайте `readme.md`. Проще говоря, мы обходим только то, что долго и упорно не хочет открываться.
|
||
Сначала не будет, но надо пытаться много раз, и тогда сработает, а дальше будет всегда срабатывать.
|
||
Остальное не будет ломаться. Использовать только, если первый вариант тоже работает.
|
||
|
||
Не помогла таблетка? Это вовсе не значит, что ничего не получится. Но придется делать по-нормальному.
|
||
|
||
# Решение "как положено"
|
||
|
||
1) Если у вас Windows 7, обновляйте систему. Годами не обновляемая 7-ка может не запускать драйвер `windivert`.
|
||
Поддержка 32-битных x86 Windows возможна, но в готовом виде отсутствует.
|
||
На Windows 11 ARM64 выполните `arm64/install_arm64.cmd` от имени администратора и перезагрузите компьютер.
|
||
Читайте `docs/windows.md`.
|
||
|
||
Имейте в виду, что антивирусы могут плохо реагировать на `windivert`.
|
||
`cygwin` имеет внушительный список несовместимостей с антивирусами. Многие антивирусы его ломают.
|
||
Читайте [FAQ](https://www.cygwin.com/faq.html#faq.using.bloda).
|
||
Если это имеет место, используйте исключения. Если это не помогает - отключайте антивирус совсем.
|
||
|
||
2) Убедитесь, что у вас отключены все средства обхода блокировок, в том числе и сам `zapret`.
|
||
|
||
3) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. NAT не подходит.
|
||
|
||
4) Скачайте и распакуйте [архив](https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip).
|
||
|
||
5) Запустите `blockcheck\blockcheck.cmd`.
|
||
|
||
`blockcheck` в начале проверяет DNS. Если выводятся сообщения о подмене адресов, то первым делом нужно решить эту проблему, иначе ничего не будет работать. Решение проблемы DNS выходит за рамки проекта.
|
||
Обычно она решается либо заменой DNS серверов от провайдера на публичные (1.1.1.1, 8.8.8.8), либо в случае перехвата провайдером обращений к сторонним серверам - через специальные средства шифрования DNS запросов, такие как DNSCrypt, DoT, DoH.
|
||
В современных броузерах чаще всего DoH включен по умолчанию, но `curl` будет использовать обычный системный DNS.
|
||
Новые билды Windows 10 и Windows 11 поддерживают системные DoH из коробки. Они не настроены по умолчанию.
|
||
|
||
[Тут](https://hackware.ru/?p=13707) все разжевано как и где это включается.
|
||
|
||
6) `blockcheck` позволяет выявить рабочую стратегию обхода блокировок.
|
||
Лог скрипта будет сохранен в `blockcheck\blockcheck.log`.
|
||
Запомните найденные стратегии.
|
||
|
||
Следует понимать, что `blockcheck` проверяет доступность только конкретного домена, который вы вводите в начале.
|
||
Вероятно, все остальные домены блокированы подобным образом, но не факт.
|
||
В большинстве случаев можно объединить несколько стратегий в одну универсальную, но для этого необходимо понимать "что там за буковки".
|
||
Если вы в сетях слабо разбираетесь, это не для вас. В противном случае читайте `readme.md`.
|
||
`zapret` не может пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их через пробел.
|
||
|
||
Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас может быть несколько маршрутов с различной длиной по ХОПам, с DPI на разных хопах.
|
||
Приходится преодолевать целый зоопарк DPI, которые еще и включаются в работу хаотичным образом или образом, зависящим от направления (IP сервера).
|
||
`blockcheck` не всегда может выдать вам в итогах оптимальную стратегию, которую надо просто переписать в настройки.
|
||
В некоторых случаях надо реально думать что происходит, анализируя результат на разных стратегиях.
|
||
Если вы применяете большой TTL, чтобы достать до магистрала, то не лишним будет добавить дополнительный ограничитель
|
||
`--dpi-desync-fooling`, чтобы не сломать сайты на более коротких дистанциях.
|
||
`md5sig` наиболее совместим, но работает только на Linux серверах.
|
||
`badseq` может работать только на HTTPS и не работать на HTTP.
|
||
Чтобы выяснить какие дополнительные ограничители работают, смотрите результат теста аналогичных стратегий без TTL
|
||
с каждым из этих ограничителей.
|
||
|
||
При использовании `autottl` следует протестировать как можно больше разных доменов.
|
||
Эта техника может на одних провайдерах работать стабильно, на других потребуется выяснить при каких параметрах она стабильна, на третьих полный хаос, и проще отказаться.
|
||
|
||
7) Протестируйте найденные стратегии на `winws`. `winws` следует брать из `zapret-winws`.
|
||
Для этого откройте командную строку Windows от имени администратора в директории `zapret-winws`.
|
||
Проще всего это сделать через `_CMD_ADMIN.cmd`. Он сам поднимет права и зайдет в нужную директорию.
|
||
|
||
8) Обеспечьте удобную загрузку обхода блокировок.
|
||
|
||
Есть 2 варианта. Ручной запуск через ярлык или автоматический при старте системы, вне контекста текущего пользователя.
|
||
Последний вариант разделяется на запуск через планировщик задач и через службы Windows.
|
||
|
||
Если хотите ручной запуск, скопируйте `preset_russia.cmd` в `preset_my.cmd` и адаптируйте его под ваши параметра запуска.
|
||
Потом можно создать ярлык на рабочем столе на `preset_my.cmd`. Не забудьте, что требуется запускать от имени администратора.
|
||
|
||
Но лучше будет сделать неинтерактивный автоматический запуск вместе с системой.
|
||
В `zapret-winws` есть командные файлы `task_*`, предназначенные для управления задачами планировщика.
|
||
Там следует поменять содержимое переменной `WINWS1` на свою стратегию.
|
||
Если вы не можете объединить несколько стратегий для разных протоколов в одну, дублируйте код в каждом из `.cmd` для поддержки нескольких задач: `winws1`, `winws2`, `winws3`.
|
||
После создания задач запустите их. Проверьте, что обход встает после перезагрузки Windows.
|
||
|
||
Аналогично настраиваются и службы Windows. Смотрите `service_*.cmd`.
|
||
|
||
9) Если ломаются отдельные незаблокированные ресурсы, используйте хост-листы.
|
||
Где они будут находиться - решайте сами.
|
||
Параметры управления хост-листами точно такие же, как в *nix.
|
||
|
||
Это минимальная инструкция, чтобы сориентироваться с чего начать. Однако, это - не панацея.
|
||
В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
|
||
Подробности и полное техническое описание расписаны в `readme.md`.
|