- Kotlin 55.9%
- Shell 37.4%
- Lua 6.4%
- Python 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks are pending
Background release validation / Shell integration tests (push) Blocked by required conditions
Background release validation / Prepare Version (push) Waiting to run
Background release validation / Build Android APK (push) Blocked by required conditions
Background release validation / Fetch latest upstream zapret2 release (push) Waiting to run
Background release validation / Package Magisk Module (push) Blocked by required conditions
Magisk source guards / guards (push) Waiting to run
|
||
| .codex/skills/build-zapret2-locally | ||
| .forgejo/workflows | ||
| android-app | ||
| docs | ||
| system/bin | ||
| tests | ||
| tools | ||
| upstream | ||
| zapret2 | ||
| .gitattributes | ||
| .gitignore | ||
| action.sh | ||
| build.sh | ||
| customize.sh | ||
| module.prop | ||
| post-fs-data.sh | ||
| service.sh | ||
| uninstall.sh | ||
| update.json | ||
| version.properties | ||
Zapret2 для Android
Root-модуль для Magisk, KernelSU и APatch, предназначенный для обхода некоторых
видов DPI-блокировок и замедления трафика на Android. Внутри используется
nfqws2 с Lua-стратегиями, а приложение
Zapret2 Control позволяет управлять модулем без терминала.
Important
Zapret2 — не VPN. Он не меняет ваш IP-адрес, не скрывает трафик от провайдера и не добавляет шифрование. Модуль изменяет отдельные сетевые пакеты так, чтобы затруднить их распознавание DPI. Результат зависит от сети, провайдера и выбранной стратегии.
Что понадобится
- Android 7.0 или новее;
- устройство с процессором ARM или ARM64;
- Magisk 20.4+, KernelSU или APatch с рабочим root-доступом;
- ядро с поддержкой
iptablesиNFQUEUE; - приложение Zapret2 Control — необязательно, но рекомендуется.
Сборок для x86 и x86_64 нет.
Модуль обрабатывает трафик самого телефона. Устройства, подключённые к его точке доступа, обслуживаются отдельным переключателем Обход для точки доступа (по умолчанию выключен) — см. ниже.
Установка
1. Скачайте файлы
Откройте страницу последнего релиза и скачайте:
zapret2-magisk-v*.zip— универсальный root-модуль (историческое имя файла);zapret2-control-v*.apk— приложение для управления;- файлы
.sha256— если хотите вручную проверить контрольные суммы.
Не распаковывайте ZIP.
2. Установите модуль
- Откройте Magisk, KernelSU Manager или APatch Manager.
- Перейдите в Модули → Установить из хранилища.
- Выберите
zapret2-magisk-v*.zip. - Дождитесь завершения установки и перезагрузите устройство.
Устанавливайте ZIP только из работающей системы через root-менеджер. Прошивка через TWRP или другое recovery не поддерживается ни одним из трёх режимов.
Для KernelSU 3.x заранее установите metamodule, если нужны команды
zapret2-* в /system/bin или системный hosts-оверлей: KernelSU делегирует
монтирование каталога system/ metamodule. Сам сервис, приложение и
iptables/NFQUEUE не зависят от подмены файлов /system.
3. Установите приложение
- Откройте
zapret2-control-v*.apk. - При необходимости разрешите установку из этого источника.
- Запустите Zapret2 Control и предоставьте ему root-доступ через активный root-менеджер.
Приложение необязательно: модуль может работать самостоятельно и запускаться при загрузке Android.
Первый запуск
- Откройте в приложении раздел Управление.
- Убедитесь, что root-доступ и модуль определены, а служба запущена.
- Проверьте нужный сайт или приложение.
- Если обход не работает, выберите другой готовый набор в разделе Наборы.
По умолчанию используется Default v1 (game filter).txt. Универсальной
стратегии для всех провайдеров нет, поэтому иногда нужно попробовать несколько
вариантов.
Для QUIC/HTTP3 может понадобиться отдельная UDP-стратегия. Если сервис работает нестабильно, временное отключение QUIC в нём или браузере также поможет понять, связан ли сбой с UDP.
Обход для точки доступа
По умолчанию модуль обрабатывает только трафик самого телефона: правила стоят на
локальных цепочках OUTPUT и INPUT, а пакеты подключённых к точке доступа
устройств проходят через FORWARD и их не встречают.
Переключатель Управление → Обход для точки доступа добавляет те же
цепочки ещё и в FORWARD, поэтому трафик клиентов точки доступа обрабатывается
теми же правилами и той же стратегией. Новых правил при этом не появляется:
запрос клиента — это то же исходное направление соединения с портом сервера в
получателе, а ответ — то же обратное направление с портом сервера в источнике.
Что нужно учитывать:
- переключение перезапускает службу: топология публикуется при старте, поэтому соединения на несколько секунд прерываются;
- нагрузка растёт — через очередь проходит трафик всех подключённых устройств;
- на Android 11 и новее работает аппаратная и eBPF-разгрузка тетеринга. Она
обходит netfilter для уже установленных потоков, поэтому часть трафика может
не попасть в очередь. Обходу это обычно не мешает, так как
nfqws2работает с первыми пакетами соединения, но при нестабильном результате разгрузку стоит отключить:settings put global tether_offload_disabled 1и повторное включение точки доступа.
Наборы, профили и стратегии
- Набор — полный TXT-файл с конфигурацией запуска.
- Профиль — часть набора для определённого трафика или сервиса.
- Стратегия — последовательность действий
nfqws2, применяемая внутри профиля. --skip— отключает профиль, не удаляя его.
Обычный порядок настройки:
- Выберите готовый вариант в разделе Наборы.
- Если нужна точная настройка, откройте Профили.
- Выберите другую стратегию для нужного профиля или отключите ненужный профиль.
- Сохраните изменения — приложение проверит конфигурацию и применит её через перезапуск службы.
В редакторе набора можно посмотреть итоговые аргументы запуска до сохранения.
Некорректные или неподдерживаемые параметры отклоняются до запуска nfqws2.
Там же можно импортировать собственный UTF-8 .txt: приложение не переписывает
стратегию, не заменяет существующий файл и добавляет её в каталог только после
общей проверки и nfqws2 --dry-run.
Подробный формат описан в
PRESET_PROFILE_STRATEGY_CONTRACT_RU.md.
Возможности приложения
| Раздел | Что в нём находится |
|---|---|
| Управление | Состояние модуля и службы, запуск, остановка, автозапуск, обход для точки доступа, обновления и восстановление |
| Профили | Включение профилей и выбор стратегий |
| Наборы | Выбор, импорт и редактирование полных TXT-конфигураций |
| Списки хостов | Просмотр, импорт и редактирование списков |
| Редактор хостов | Управление системным hosts-оверлеем |
| Управление DNS | Выбор DNS-набора и служб |
| Журналы | Логи и диагностические данные |
| О приложении | Версии, ссылки и сведения о лицензии |
Обновление
Через Zapret2 Control
- Откройте Управление → Проверить обновления.
- Просмотрите версию и состав обновления.
- Нажмите Обновить.
- Подтвердите установку APK в системном установщике, если он откроется.
- Перезагрузите устройство, если обновлялся 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.
Если обход не работает
Проверяйте по порядку:
- В разделе Управление убедитесь, что служба запущена без ошибок.
- Попробуйте другой готовый набор.
- Проверьте, что нужный профиль не отключён через
--skip. - Для QUIC/HTTP3 попробуйте набор с UDP-стратегией.
- Временно отключите AdGuard, NetGuard, AFWall+ и другие программы, которые изменяют firewall или перенаправляют трафик.
- Сравните работу через Wi-Fi и мобильную сеть: у них могут быть разные DPI и подходящие стратегии.
- Откройте Журналы, сохраните диагностику и приложите её к сообщению об ошибке.
Служба не запускается
Чаще всего причина — отсутствие обязательных возможностей ядра или firewall.
Для IPv4 нужны iptables, iptables-restore, NFQUEUE с --queue-bypass, а
также модули multiport и mark. Поддержка connbytes желательна, но не
обязательна. Если IPv6-бэкенд недоступен, IPv6-трафик не перехватывается.
Точный порядок проверки устройства описан в
tests/device/README.md.
Интернет стал медленнее
Отключите ненужные профили через --skip и оставьте только те TCP/UDP-фильтры,
которые действительно нужны. Затем перезапустите службу и проверьте ещё раз.
Команды терминала
Для ручного управления из Termux или adb shell:
# Состояние
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, KernelSU и APatch.
Другие root-менеджеры могут оказаться ZIP-совместимыми, но не заявлены как
поддерживаемые, пока у них нет проверенного installer API и совместимого
контракта modules/modules_update.
Как это работает
iptablesнаправляет подходящие TCP/UDP-пакеты в очередьNFQUEUE.nfqws2получает их в пользовательском пространстве.- Lua-стратегия изменяет порядок, разбиение или содержимое отдельных пакетов.
- Пакеты возвращаются в сетевой стек Android и отправляются напрямую, без стороннего VPN-сервера.
Перехватываются только порты, которые нужны включённым профилям активного набора.
Каждая релизная сборка получает последний стабильный релиз исходного
bol-van/zapret2, проверяет архив и
контрольные суммы, а затем записывает точную версию исходного кода в пакет.
Частые вопросы
Работает ли Zapret2 в любой сети?
Нет гарантии. Результат зависит от провайдера, используемого DPI, протокола и стратегии. Один набор может работать в мобильной сети и не работать через Wi-Fi.
Скрывает ли модуль мой IP-адрес?
Нет. Соединение идёт напрямую к сайту, поэтому ваш обычный публичный IP-адрес не меняется.
Шифрует ли Zapret2 трафик?
Нет. Шифрование определяется самим приложением или протоколом, например HTTPS. Zapret2 не создаёт дополнительный зашифрованный туннель.
Работает ли он вместе с VPN или сетевым фильтром?
Иногда, но совместимость не гарантируется. VPN, блокировщики рекламы и firewall- приложения могут использовать те же сетевые таблицы и конфликтовать с модулем.
Где получить подробную диагностику?
В разделе Журналы приложения или с помощью zapret2-status. Расширенные
эксплуатационные инструкции находятся в
USER_OPERATIONS_RU.md, включая раздел «Модуль не
запускается и не останавливается». Устройство модуля и принципы, по которым он
принимает решения, описаны в ARCHITECTURE_2_2.md.
Благодарности
- bol-van/zapret2 — исходный проект,
nfqws2и Lua-стратегии; - участникам сообщества — за тестирование наборов и устройств.
Лицензия
Материалы, на которые правообладатели проекта вправе выдать лицензию,
распространяются строго на условиях
GNU Affero General Public License v3 (AGPL-3.0-only).
Покрываемые производные нельзя распространять под закрытой или иной
несовместимой лицензией; для них должны выполняться требования AGPL о доступе
к соответствующему исходному коду.
Сторонние компоненты, включая загружаемые материалы bol-van/zapret2, не
перелицензируются этим проектом. Точная область действия лицензии и правила
использования товарных знаков описаны в
политике лицензирования.