Skip to content

Repository files navigation

Русский | English

🚀 nzapret by nikitos4683

DPI-bypass модуль для Android (Magisk / KernelSU)

Android Root Engine UI Version


nzapret — автономный и легковесный модуль для Android-устройств с root-доступом. Модуль работает на базе zapret2, используя локальный движок nfqws2 и правила iptables/ip6tables для обхода DPI, а также встроенный прокси nztg для разблокировки Telegram.

Бинарники nfqws2, пейлоады и списки маршрутизации взяты из оригинального апстрима, прокси-сервер nztg собран на базе собственной Go-реализации, а весь код обвязки написан с нуля под Android — с удобным Web-интерфейсом и без лишнего мусора в системе.


📌 Содержание


✨ Ключевые возможности

  • Встроенный WebUI: Удобный и красивый графический интерфейс прямо в менеджере модулей KernelSU.
  • Мощный CLI: Полное управление модулем через терминал.
  • Умный роутинг: Перехват трафика в цепочках OUTPUT и FORWARD для IPv4 и IPv6.
  • Авто-стек IPv4/IPv6: Модуль сам поднимает перехват для IPv4 и, если работает ip6tables, для IPv6 — без ручного выбора режима.
  • Обход Telegram: Встроенный локальный MTProto-прокси (nztgproxy) с мостом через WebSocket и Cloudflare-фолбэком, управляемый из той же кнопки Старт.
  • Управление Private DNS: Автоматическая инициализация DNS и возможность переключения провайдера из WebUI/CLI.
  • Персональный list-user: Собственный список доменов пользователя, редактируемый напрямую из интерфейса.
  • VPN-совместимость: Поддержка совместной работы с большинством популярных VPN-клиентов.
  • Автономность: Модуль использует локальные данные и не требует сети при загрузке.
⚙️ Подробная логика работы сети, DNS и Telegram (для гиков)
  • Сетевой стек: Модуль всегда поднимает перехват DPI для IPv4, а для IPv6 — когда на устройстве работает ip6tables (таблица mangle). Отдельного выбора режима нет и он не нужен: холостые IPv6-правила ничего не стоят при отсутствии IPv6-трафика и уже готовы защитить IPv6, который поднимается позже (после загрузки или при смене Wi-Fi/сотовой сети). Это исключает старую проблему, когда в «режиме только IPv4» трафик (например, YouTube или Instagram) уходил по IPv6 мимо обхода и попадал под DPI.
  • Private DNS: Инициализируется один раз при первом старте службы. Если в системе уже настроен валидный сторонний DNS-провайдер в режиме "Имя хоста", он сохраняется. В остальных случаях (режимы "Отключено", "Авто" или пусто) принудительно выставляется значение по умолчанию — xbox-dns.ru (необходимо для обхода DNS-блокировок ИИ-сервисов вроде ChatGPT, Gemini и др.). Ручные изменения DNS через CLI или WebUI фиксируются и не сбрасываются при последующих запусках.
  • Telegram-прокси (nztgproxy): Локальный MTProto-прокси, написанный на Go (статический, CGO-free бинарник nztg). Он принимает входящие MTProto-соединения от клиента Telegram, декодирует обфусцированное рукопожатие (handshake) и транслирует (бриджит) трафик до оригинальных датацентров Telegram поверх протокола WSS (WebSocket-over-TLS) для обхода DPI-блокировок по IP-адресам. Поддерживает прямой TCP-откат, а также Cloudflare Worker / CDN fronting (CF-прокси) для маршрутизации трафика через сеть Cloudflare, если прямые адреса WebSocket-серверов Telegram заблокированы провайдером.

🚧 Ограничения и известные проблемы

Note

Telegram: Модуль включает встроенный локальный MTProto-прокси (nztgproxy) для обхода блокировок Telegram. После старта модуля откройте вкладку Telegram в WebUI и нажмите «Открыть в Telegram» (или скопируйте ссылку/введите 127.0.0.1:1443 и Secret вручную). Если IP Telegram заблокированы провайдером, трафик автоматически идёт через Cloudflare-прокси. Если не грузятся медиа — уберите строку 2:149.154.167.220 в настройках датацентров.

Note

Баг WebUI в KernelSU: Из-за особенностей менеджера KernelSU процессы nfqws2 и nztg, запущенные вручную кнопкой Start из WebUI, могут завершаться системой после смахивания KernelSU из недавних приложений. В KernelSU-Next этот баг уже исправлен (см. issue #1180)! Для обычного KernelSU рекомендуется использовать кнопку Action в списке модулей или команду nzapret start в терминале.


🚀 Быстрый старт

1. Установка

  1. Скачайте готовый ZIP-архив со страницы релизов (Releases).
  2. Прошейте стандартным способом через Magisk или KernelSU.
  3. Перезагрузите устройство.
  4. Откройте вкладку модулей в KernelSU для доступа к WebUI. (Пользователям Magisk потребуется приложение KsuWebUI для работы с интерфейсом).

2. Использование из терминала (CLI)

Для управления через CLI требуются root-права (su). Если команда nzapret не найдена в PATH, используйте полный путь: /data/adb/modules/nzapret/system/bin/nzapret.

🔌 Управление службой

Команда Описание
nzapret start Инициализировать правила iptables и запустить nfqws2
nzapret stop Остановить процессы службы и очистить цепочки фаервола
nzapret restart Полный перезапуск с применением измененных настроек

📊 Мониторинг и диагностика

Команда Описание
nzapret status Посмотреть текущее состояние и статус службы
nzapret status --json Вывод статуса в формате JSON (для WebUI)
nzapret log Просмотр системного лога службы
nzapret diagnose Сбор подробной диагностической информации для отладки

🌐 Сеть и Private DNS

Команда Описание
nzapret update Скачать и обновить списки обхода (hostlists)
nzapret network status Показать активный стек фаервола (IPv4 / IPv4 + IPv6)
nzapret dns status Показать текущее состояние Android Private DNS
nzapret dns set default Установить DNS по умолчанию (xbox-dns.ru)
nzapret dns set auto Вернуть системный автоматический режим DNS
nzapret dns set off Полностью отключить системный Private DNS
nzapret dns set hostname <host> Установить собственный хост DNS-провайдера

📝 Управление пользовательским списком (list-user)

Команда Описание
nzapret list-user status Показать статус списка и количество доменов
nzapret list-user show Отобразить текущее содержимое списка
nzapret list-user add <domains...> Добавить один или несколько доменов в список
nzapret list-user remove <domains...> Удалить указанные домены из списка
nzapret list-user replace <domains...> Перезаписать список новыми доменами
nzapret list-user clear Полностью очистить пользовательский список

✈️ Telegram (tg)

Команда Описание
nzapret tg status Показать состояние прокси, secret и ссылку
nzapret tg status --json Состояние в формате JSON (для WebUI)
nzapret tg link Вывести tg://-ссылку для подключения
nzapret tg open Открыть Telegram с настроенным прокси
nzapret tg regen-secret Сгенерировать новый secret
nzapret tg cf-test Проверить доступность Cloudflare-прокси
nzapret tg set host <ip> Задать адрес прослушивания
nzapret tg set port <n> Задать порт
nzapret tg set cf <on|off> Включить/выключить Cloudflare-фолбэк
nzapret tg set cf-domain <domain> Задать свой CF-домен (пусто — сбросить)
nzapret tg set dc <"n:IP.."> Задать правила датацентров (по строке на правило)

Служба Telegram запускается и останавливается вместе с модулем (start/stop/restart). Изменения настроек применяются после перезапуска.


🏗 Архитектура и структура

Файл / Директория Описание
⚙️ service.sh Системный скрипт автозапуска. Настраивает правила фаервола и запускает nfqws2.
🧠 system/bin/nzapret Управляющий CLI-интерфейс. Отвечает за команды старта, стопа, сбор метрик для WebUI.
✈️ bin/nztg Локальный MTProto-прокси для Telegram (Go, статический бинарник). Запускается вместе с nfqws2.
🎨 webroot/ Код WebUI (HTML, CSS, JS) для интеграции в KernelSU.
📁 profiles/ Конфигурационные профили с аргументами для nfqws2.
📁 lists/ Списки доменов для маршрутизации (включая пользовательский list-user.txt).
📁 payloads/ Бинарные фейковые пакеты (TLS/QUIC) для обхода DPI.
🛠 customize.sh Инсталлятор модуля (определение архитектуры устройства, распаковка и настройка прав).

🛠 Сборка модуля

Если вы хотите собрать модуль самостоятельно, у вас в системе (Linux/WSL) должны быть установлены базовые утилиты: bash, zip, sed, mktemp.

Процесс сборки запускается всего одной командой:

bash build.sh

На выходе в корневой директории появится готовый к прошивке архив nzapret-vX.Y.Z.zip. Собирать можно прямо на устройстве (например, в Termux) или на ПК.


📄 Лицензия

Этот проект распространяется под лицензией MIT. Подробную информацию можно найти в файле LICENSE.


🌍 Enjoy open Internet!

About

Android DPI-bypass module for Magisk and KernelSU powered by nfqws2, nztg, iptables, CLI and WebUI.

Topics

Resources

Stars

21 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages