- The syntax gate skipped zapret2/scripts/lifecycle entirely, so a broken purge script would have shipped and surfaced on-device during an irreversible operation. - Two custom Lua files were validated by CI as shipped but were missing from the runtime manifest, so they could never reach a device. - Release qualification runs the policy tests with --rerun-tasks: they read repository files directly rather than through declared task inputs, so a cached run could report green without checking anything. - The committed update.json advertised an asset name no release publishes. - The two MD3E documents describe an app from 2.0.9 whose classes and tests no longer exist; they now say so and point at the current architecture document, which the docs index now links. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
304 lines
19 KiB
Markdown
304 lines
19 KiB
Markdown
# Zapret2 для Android
|
||
|
||
<p align="center">
|
||
<a href="https://github.com/youtubediscord/magisk-zapret2/releases/latest"><img alt="Последний релиз" src="https://img.shields.io/github/v/release/youtubediscord/magisk-zapret2?style=for-the-badge&logo=github&color=0969DA&label=%D0%A0%D0%B5%D0%BB%D0%B8%D0%B7"></a>
|
||
<a href="https://github.com/youtubediscord/magisk-zapret2/releases"><img alt="Всего скачиваний" src="https://img.shields.io/github/downloads/youtubediscord/magisk-zapret2/total?style=for-the-badge&logo=github&color=2EA043&label=%D0%A1%D0%BA%D0%B0%D1%87%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B9"></a>
|
||
<a href="https://github.com/youtubediscord/magisk-zapret2/stargazers"><img alt="Звёзды на GitHub" src="https://img.shields.io/github/stars/youtubediscord/magisk-zapret2?style=for-the-badge&logo=github&color=FFD700&label=%D0%97%D0%B2%D1%91%D0%B7%D0%B4%D1%8B"></a>
|
||
<a href="https://github.com/youtubediscord/magisk-zapret2/commits/main"><img alt="Последний коммит" src="https://img.shields.io/github/last-commit/youtubediscord/magisk-zapret2?style=for-the-badge&logo=github&color=8250DF&label=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BE"></a>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="https://github.com/youtubediscord/magisk-zapret2/actions/workflows/build.yml"><img alt="Сборка" src="https://img.shields.io/github/actions/workflow/status/youtubediscord/magisk-zapret2/build.yml?branch=main&style=for-the-badge&logo=githubactions&logoColor=white&label=%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0"></a>
|
||
<a href="LICENSE.md"><img alt="Лицензия" src="https://img.shields.io/badge/Лицензия-AGPL--3.0--only-BC4C00?style=for-the-badge&logo=gnu&logoColor=white"></a>
|
||
<a href="https://github.com/bol-van/zapret2"><img alt="Upstream" src="https://img.shields.io/badge/Upstream-bol--van%2Fzapret2-24292F?style=for-the-badge&logo=github&logoColor=white"></a>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<img alt="Android 7.0+" src="https://img.shields.io/badge/Android-7.0%2B_(API_24)-3DDC84?style=for-the-badge&logo=android&logoColor=white">
|
||
<img alt="ABI" src="https://img.shields.io/badge/ABI-arm64--v8a_%7C_armeabi--v7a-555555?style=for-the-badge&logo=arm&logoColor=white">
|
||
<img alt="Root-доступ" src="https://img.shields.io/badge/Root-Magisk_%7C_KernelSU_%7C_APatch-8957E5?style=for-the-badge&logo=magisk&logoColor=white">
|
||
</p>
|
||
|
||
Root-модуль для Magisk, KernelSU и APatch, предназначенный для обхода некоторых
|
||
видов DPI-блокировок и замедления трафика на Android. Внутри используется
|
||
[`nfqws2`](https://github.com/bol-van/zapret2) с Lua-стратегиями, а приложение
|
||
**Zapret2 Control** позволяет управлять модулем без терминала.
|
||
|
||
<img width="1916" height="821" alt="Интерфейс Zapret2 Control" src="https://github.com/user-attachments/assets/d0852896-8aca-4d1e-ad1b-8f269003c5c6" />
|
||
|
||
> [!IMPORTANT]
|
||
> Zapret2 — не VPN. Он не меняет ваш IP-адрес, не скрывает трафик от провайдера и
|
||
> не добавляет шифрование. Модуль изменяет отдельные сетевые пакеты так, чтобы
|
||
> затруднить их распознавание DPI. Результат зависит от сети, провайдера и
|
||
> выбранной стратегии.
|
||
|
||
## Что понадобится
|
||
|
||
- Android 7.0 или новее;
|
||
- устройство с процессором ARM или ARM64;
|
||
- Magisk 20.4+, KernelSU или APatch с рабочим root-доступом;
|
||
- ядро с поддержкой `iptables` и `NFQUEUE`;
|
||
- приложение Zapret2 Control — необязательно, но рекомендуется.
|
||
|
||
Сборок для x86 и x86_64 нет.
|
||
|
||
Модуль обрабатывает трафик самого телефона. Обход для устройств, подключённых к
|
||
его точке доступа, не поддерживается.
|
||
|
||
## Установка
|
||
|
||
### 1. Скачайте файлы
|
||
|
||
Откройте страницу
|
||
**[последнего релиза](https://github.com/youtubediscord/magisk-zapret2/releases/latest)**
|
||
и скачайте:
|
||
|
||
- `zapret2-magisk-v*.zip` — универсальный root-модуль (историческое имя файла);
|
||
- `zapret2-control-v*.apk` — приложение для управления;
|
||
- файлы `.sha256` — если хотите вручную проверить контрольные суммы.
|
||
|
||
Не распаковывайте ZIP.
|
||
|
||
### 2. Установите модуль
|
||
|
||
1. Откройте Magisk, KernelSU Manager или APatch Manager.
|
||
2. Перейдите в **Модули** → **Установить из хранилища**.
|
||
3. Выберите `zapret2-magisk-v*.zip`.
|
||
4. Дождитесь завершения установки и перезагрузите устройство.
|
||
|
||
Устанавливайте ZIP только из работающей системы через root-менеджер. Прошивка
|
||
через TWRP или другое recovery не поддерживается ни одним из трёх режимов.
|
||
|
||
Для KernelSU 3.x заранее установите metamodule, если нужны команды
|
||
`zapret2-*` в `/system/bin` или системный hosts-оверлей: KernelSU делегирует
|
||
монтирование каталога `system/` metamodule. Сам сервис, приложение и
|
||
iptables/NFQUEUE не зависят от подмены файлов `/system`.
|
||
|
||
### 3. Установите приложение
|
||
|
||
1. Откройте `zapret2-control-v*.apk`.
|
||
2. При необходимости разрешите установку из этого источника.
|
||
3. Запустите Zapret2 Control и предоставьте ему root-доступ через активный
|
||
root-менеджер.
|
||
|
||
Приложение необязательно: модуль может работать самостоятельно и запускаться при
|
||
загрузке Android.
|
||
|
||
## Первый запуск
|
||
|
||
1. Откройте в приложении раздел **Управление**.
|
||
2. Убедитесь, что root-доступ и модуль определены, а служба запущена.
|
||
3. Проверьте нужный сайт или приложение.
|
||
4. Если обход не работает, выберите другой готовый набор в разделе **Наборы**.
|
||
|
||
По умолчанию используется `Default v1 (game filter).txt`. Универсальной
|
||
стратегии для всех провайдеров нет, поэтому иногда нужно попробовать несколько
|
||
вариантов.
|
||
|
||
Для QUIC/HTTP3 может понадобиться отдельная UDP-стратегия. Если сервис работает
|
||
нестабильно, временное отключение QUIC в нём или браузере также поможет понять,
|
||
связан ли сбой с UDP.
|
||
|
||
## Наборы, профили и стратегии
|
||
|
||
- **Набор** — полный TXT-файл с конфигурацией запуска.
|
||
- **Профиль** — часть набора для определённого трафика или сервиса.
|
||
- **Стратегия** — последовательность действий `nfqws2`, применяемая внутри
|
||
профиля.
|
||
- **`--skip`** — отключает профиль, не удаляя его.
|
||
|
||
Обычный порядок настройки:
|
||
|
||
1. Выберите готовый вариант в разделе **Наборы**.
|
||
2. Если нужна точная настройка, откройте **Профили**.
|
||
3. Выберите другую стратегию для нужного профиля или отключите ненужный профиль.
|
||
4. Сохраните изменения — приложение проверит конфигурацию и применит её через
|
||
перезапуск службы.
|
||
|
||
В редакторе набора можно посмотреть итоговые аргументы запуска до сохранения.
|
||
Некорректные или неподдерживаемые параметры отклоняются до запуска `nfqws2`.
|
||
|
||
Подробный формат описан в
|
||
[`PRESET_PROFILE_STRATEGY_CONTRACT_RU.md`](PRESET_PROFILE_STRATEGY_CONTRACT_RU.md).
|
||
|
||
## Возможности приложения
|
||
|
||
| Раздел | Что в нём находится |
|
||
| --- | --- |
|
||
| **Управление** | Состояние модуля и службы, запуск, остановка, автозапуск, обновления и восстановление |
|
||
| **Профили** | Включение профилей и выбор стратегий |
|
||
| **Наборы** | Выбор и редактирование полных TXT-конфигураций |
|
||
| **Списки хостов** | Просмотр, импорт и редактирование списков |
|
||
| **Редактор хостов** | Управление системным hosts-оверлеем |
|
||
| **Управление DNS** | Выбор DNS-набора и служб |
|
||
| **Журналы** | Логи и диагностические данные |
|
||
| **О приложении** | Версии, ссылки и сведения о лицензии |
|
||
|
||
## Обновление
|
||
|
||
### Через Zapret2 Control
|
||
|
||
1. Откройте **Управление** → **Проверить обновления**.
|
||
2. Просмотрите версию и состав обновления.
|
||
3. Нажмите **Обновить**.
|
||
4. Подтвердите установку APK в системном установщике, если он откроется.
|
||
5. Перезагрузите устройство, если обновлялся root-модуль.
|
||
|
||
Приложение проверяет контрольные суммы, подпись APK и структуру ZIP до установки.
|
||
Для установки оно автоматически выбирает официальный backend активной среды:
|
||
`magisk --install-module`, `ksud module install` или `apd module install`.
|
||
Новая версия сначала помещается в `/data/adb/modules_update/zapret2` и
|
||
становится активной только после перезагрузки.
|
||
|
||
### Вручную
|
||
|
||
Скачайте новый релиз, установите ZIP через свой root-менеджер, APK — поверх
|
||
текущего приложения, затем перезагрузите устройство.
|
||
|
||
> [!WARNING]
|
||
> Обновление модуля устанавливает чистое содержимое нового релиза. Изменённые
|
||
> настройки, пользовательские наборы, списки хостов и Lua-файлы из текущей
|
||
> установки автоматически не переносятся. Сохраните нужные данные заранее.
|
||
|
||
Подробнее об обновлении, восстановлении и удалении:
|
||
[`USER_OPERATIONS_RU.md`](USER_OPERATIONS_RU.md).
|
||
|
||
## Если обход не работает
|
||
|
||
Проверяйте по порядку:
|
||
|
||
1. В разделе **Управление** убедитесь, что служба запущена без ошибок.
|
||
2. Попробуйте другой готовый набор.
|
||
3. Проверьте, что нужный профиль не отключён через `--skip`.
|
||
4. Для QUIC/HTTP3 попробуйте набор с UDP-стратегией.
|
||
5. Временно отключите AdGuard, NetGuard, AFWall+ и другие программы, которые
|
||
изменяют firewall или перенаправляют трафик.
|
||
6. Сравните работу через Wi-Fi и мобильную сеть: у них могут быть разные DPI и
|
||
подходящие стратегии.
|
||
7. Откройте **Журналы**, сохраните диагностику и приложите её к сообщению об
|
||
ошибке.
|
||
|
||
### Служба не запускается
|
||
|
||
Чаще всего причина — отсутствие обязательных возможностей ядра или firewall.
|
||
Для IPv4 нужны `iptables`, `iptables-restore`, `NFQUEUE` с `--queue-bypass`, а
|
||
также модули `multiport` и `mark`. Поддержка `connbytes` желательна, но не
|
||
обязательна. Если IPv6-бэкенд недоступен, IPv6-трафик не перехватывается.
|
||
|
||
Точный порядок проверки устройства описан в
|
||
[`tests/device/README.md`](../tests/device/README.md).
|
||
|
||
### Интернет стал медленнее
|
||
|
||
Отключите ненужные профили через `--skip` и оставьте только те TCP/UDP-фильтры,
|
||
которые действительно нужны. Затем перезапустите службу и проверьте ещё раз.
|
||
|
||
## Команды терминала
|
||
|
||
Для ручного управления из Termux или `adb shell`:
|
||
|
||
```sh
|
||
# Состояние
|
||
su -c zapret2-status
|
||
|
||
# Запуск
|
||
su -c zapret2-start
|
||
|
||
# Остановка
|
||
su -c zapret2-stop
|
||
|
||
# Перезапуск
|
||
su -c zapret2-restart
|
||
|
||
# Журнал Android
|
||
su -c "logcat -s Zapret2"
|
||
```
|
||
|
||
На KernelSU команды `zapret2-*` требуют metamodule, который монтирует
|
||
`system/`. Без него используйте Zapret2 Control или запускайте скрипты из
|
||
каталога модуля.
|
||
|
||
## Совместимость root-менеджеров
|
||
|
||
Архитектура следует общему контракту трёх проектов:
|
||
|
||
- module scripts получают свой корень через `MODDIR=${0%/*}`;
|
||
- installer использует переданный root-менеджером `MODPATH`;
|
||
- активная и ожидающая перезагрузки генерации находятся соответственно в
|
||
`/data/adb/modules/zapret2` и `/data/adb/modules_update/zapret2`;
|
||
- встроенное обновление выбирает installer backend, а не изменяет активное
|
||
дерево самостоятельно.
|
||
|
||
Это соответствует официальным руководствам
|
||
[Magisk](https://topjohnwu.github.io/Magisk/guides.html),
|
||
[KernelSU](https://kernelsu.org/guide/module.html) и
|
||
[APatch](https://apatch.dev/apm-guide.html).
|
||
|
||
Другие root-менеджеры могут оказаться ZIP-совместимыми, но не заявлены как
|
||
поддерживаемые, пока у них нет проверенного installer API и совместимого
|
||
контракта `modules`/`modules_update`.
|
||
|
||
## Как это работает
|
||
|
||
1. `iptables` направляет подходящие TCP/UDP-пакеты в очередь `NFQUEUE`.
|
||
2. `nfqws2` получает их в пользовательском пространстве.
|
||
3. Lua-стратегия изменяет порядок, разбиение или содержимое отдельных пакетов.
|
||
4. Пакеты возвращаются в сетевой стек Android и отправляются напрямую, без
|
||
стороннего VPN-сервера.
|
||
|
||
Перехватываются только порты, которые нужны включённым профилям активного
|
||
набора.
|
||
|
||
Каждая релизная сборка получает последний стабильный релиз исходного
|
||
[`bol-van/zapret2`](https://github.com/bol-van/zapret2), проверяет архив и
|
||
контрольные суммы, а затем записывает точную версию исходного кода в пакет.
|
||
|
||
## Частые вопросы
|
||
|
||
### Работает ли Zapret2 в любой сети?
|
||
|
||
Нет гарантии. Результат зависит от провайдера, используемого DPI, протокола и
|
||
стратегии. Один набор может работать в мобильной сети и не работать через Wi-Fi.
|
||
|
||
### Скрывает ли модуль мой IP-адрес?
|
||
|
||
Нет. Соединение идёт напрямую к сайту, поэтому ваш обычный публичный IP-адрес не
|
||
меняется.
|
||
|
||
### Шифрует ли Zapret2 трафик?
|
||
|
||
Нет. Шифрование определяется самим приложением или протоколом, например HTTPS.
|
||
Zapret2 не создаёт дополнительный зашифрованный туннель.
|
||
|
||
### Работает ли он вместе с VPN или сетевым фильтром?
|
||
|
||
Иногда, но совместимость не гарантируется. VPN, блокировщики рекламы и firewall-
|
||
приложения могут использовать те же сетевые таблицы и конфликтовать с модулем.
|
||
|
||
### Где получить подробную диагностику?
|
||
|
||
В разделе **Журналы** приложения или с помощью `zapret2-status`. Расширенные
|
||
эксплуатационные инструкции находятся в
|
||
[`USER_OPERATIONS_RU.md`](USER_OPERATIONS_RU.md), включая раздел «Модуль не
|
||
запускается и не останавливается». Устройство модуля и принципы, по которым он
|
||
принимает решения, описаны в [`ARCHITECTURE_2_2.md`](ARCHITECTURE_2_2.md).
|
||
|
||
## Благодарности
|
||
|
||
- [bol-van/zapret2](https://github.com/bol-van/zapret2) — исходный проект,
|
||
`nfqws2` и Lua-стратегии;
|
||
- участникам сообщества — за тестирование наборов и устройств.
|
||
|
||
## Лицензия
|
||
|
||
Материалы, на которые правообладатели проекта вправе выдать лицензию,
|
||
распространяются строго на условиях
|
||
[GNU Affero General Public License v3](LICENSE.md) (`AGPL-3.0-only`).
|
||
Покрываемые производные нельзя распространять под закрытой или иной
|
||
несовместимой лицензией; для них должны выполняться требования AGPL о доступе
|
||
к соответствующему исходному коду.
|
||
|
||
Сторонние компоненты, включая загружаемые материалы `bol-van/zapret2`, не
|
||
перелицензируются этим проектом. Точная область действия лицензии и правила
|
||
использования товарных знаков описаны в
|
||
[политике лицензирования](LICENSING.md).
|