Files
Zapret-Manager/readme.md
T
2026-10-04 14:36:27 +05:00

646 lines
52 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div align="center">
# Zapret Manager
**Одна панель для обхода блокировок на роутере OpenWrt — Zapret, Steer, Forkozz, ByeTube, Mixomo, TG WS Proxy, AmneziaWG, DoH и hosts в одном месте.**
[![Stars](https://img.shields.io/github/stars/StressOzz/Zapret-Manager?style=for-the-badge&color=38BDF8)](https://github.com/StressOzz/Zapret-Manager/stargazers)
[![Telegram](https://img.shields.io/badge/Telegram-сообщество-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/stressozz_manager)
[![StressKVN](https://img.shields.io/badge/StressKVN-обход_белых_списков-3C3489?style=for-the-badge)](http://stresskvn.lol/)
[![Views](https://gitviews.com/repo/StressOzz/Zapret-Manager.svg?style=for-the-badge&label=Views&label-color=%23555&color=%2310B981&base=559060)](https://github.com/StressOzz/Zapret-Manager)
</div>
---
### StressKVN — умный VPN для стабильного доступа в любых условиях
- ✅ Работает даже при жёсткой фильтрации и белых списках
- 🌍 Умная маршрутизация: зарубежные ресурсы идут через VPN, российские — напрямую
- 📶 Подходит для роутеров на **OpenWrt**: настраивается один раз и работает для всех устройств в сети
- 🧩 Подключается в **Zapret Manager**
- ▶️ YouTube без рекламы
- ⚡ Высокая скорость и безлимитный трафик
- 🎁 Бесплатный тест на 3 дня
👉 Подробнее: **[StressKVN на GitHub](https://github.com/StressOzz/StressKVN)**
---
### Для Windows - используйте: **https://github.com/StressOzz/ZapretOzz**
---
<table>
<tr>
<td>
<a href="https://github.com/StressOzz#-поддержать-проект">
<img width="280" height="130" src="https://github.com/user-attachments/assets/2999757b-fbf3-4149-bf6c-48bf3e241529">
</a>
</td>
<td>
<a href="https://github.com/StressOzz/StressKVN">
<img width="280" height="130" alt="image" src="https://github.com/user-attachments/assets/519a126e-bd39-4f46-8a09-3f0d6e1dd8af">
</a>
</td>
</tr>
</table>
---
## 📖 Содержание
- [О проекте](#-о-проекте)
- [Установка](#-установка)
- [Два интерфейса: LuCI и Web UI](#️-два-интерфейса-luci-и-web-ui)
- [Разбор разделов](#-разбор-разделов)
- [Дашборд](#-дашборд)
- [Zapret](#️-zapret)
- [Zapret2](#-zapret2)
- [Steer](#️-steer)
- [Forkozz](#-forkozz)
- [ByeTube](#️-byetube)
- [TG WS Proxy](#-tg-ws-proxy)
- [Mixomo](#-mixomo)
- [Hosts](#-hosts)
- [DNS over HTTPS](#-dns-over-https)
- [AmneziaWG](#-amneziawg)
- [Система](#️-система)
- [Совместимость компонентов](#-совместимость-компонентов)
- [Как это устроено](#-как-это-устроено)
- [Частые проблемы](#-частые-проблемы)
- [Удаление](#️-удаление)
- [Благодарности](#-благодарности)
---
## ⚡ О проекте
**Zapret Manager** — это приложение для LuCI и отдельный веб-интерфейс, которые превращают роутер на OpenWrt в «комбайн» обхода блокировок. Вместо десятка разрозненных скриптов, пакетов и конфигов — одна панель, где каждый инструмент ставится, настраивается, проверяется и удаляется в пару кликов.
Панель умеет:
- 🛡️ **обходить DPI локально** — без внешних серверов: Zapret (nfqws), Zapret2, ByeDPI (ByeTube);
- 🔀 **пускать выбранные сервисы через туннель** — бесплатный Cloudflare WARP, свой VPN по подписке или свой сервер (Steer, Forkozz, Mixomo);
- ✈️ **ускорять Telegram** — четыре вида TG WS Proxy;
- 🔐 **шифровать DNS** для всей сети — DNS over HTTPS;
- 🧰 **обслуживать роутер** — системный отчёт, время и часовой пояс, зеркала пакетов, Flow Offloading fix и многое другое.
Всё, что панель скачивает, берётся из официальных источников — GitHub проектов-авторов и репозиториев OpenWrt. Долгие операции идут в фоне на самом роутере: вкладку можно закрыть, а ход работы виден в окне вывода, когда вы вернётесь.
---
## 💻 Установка
Подключитесь к роутеру по SSH и выполните:
```sh
sh <(wget -O - https://raw.githubusercontent.com/StressOzz/Zapret-Manager/refs/heads/main/ZapretManager_LuCI.sh)
```
Установщик:
1. Останавливает прошлую версию панели (если в ней шла операция — попросит дождаться её окончания).
2. Копирует бэкенд, rpcd-плагин, ACL, пункт меню LuCI и страницы.
3. Ставит `curl`, `unzip` и `uhttpd-mod-ubus` (нужен для Web UI), если их нет.
4. Поднимает отдельный экземпляр `uhttpd` на порту **7788** для Web UI.
5. Добавляет сторожа в cron и команду `zms` для консольной версии Zapret Manager.
В конце в консоли будет адрес Web UI, например `http://192.168.1.1:7788`.
> [!NOTE]
> **Обновление.** Панель сама проверяет новую версию и показывает баннер на дашборде. Кнопка «Обновить панель» скачивает установщик, проверяет его целостность (заголовок, номер версии, синтаксис `sh -n`) и только потом ставит. Настройки всех компонентов при обновлении сохраняются.
> [!TIP]
> Консольная версия: команда **`zms`** запускает [Zapret-Manager.sh](https://github.com/StressOzz/Zapret-Manager) прямо в терминале.
> [!NOTE]
> Если Вам нужна версия, только для **SSH** - [**readme_ssh.md**](https://github.com/StressOzz/Zapret-Manager/blob/main/readme_ssh.md)
### Требования
| Что | Зачем |
|---|---|
| OpenWrt с **firewall4 / nftables** | на этом построены все правила обхода |
| **opkg** (24.10 и старше) или **apk** (25.12 и новее) | панель работает с обоими менеджерами |
| ~15 МБ свободного флеша | для Forkozz + sing-box; расширенный sing-box — ~40 МБ |
| **aarch64_cortex-a53** | только для Zapret2 |
| OpenWrt **24.10+** | для Forkozz и ByeTube (`hev-socks5-tunnel` в фидах) |
| `ip-full` | для ByeTube (fwmark с маской) |
---
## 🖥️ Два интерфейса: LuCI и Web UI
### LuCI
Пункт меню **Службы → Zapret Manager**, 12 страниц. Работает как обычное приложение LuCI.
### Web UI на порту 7788
Самостоятельная панель, которая не требует открывать LuCI:
- 🔑 **вход по логину и паролю LuCI** (через `session.login` ubus), с флажком «Запомнить на этом устройстве»;
- 🎨 **8 тем оформления**: Светлая, Лёгкая, Тёмная, Контур, Бенто, Минимал, Ретро 98, Объём 3D. Выбранная тема сохраняется **на роутере** (`/www/zm/theme.txt`) и подхватывается на любом устройстве;
- 📱 адаптивная вёрстка: на телефоне меню выезжает сбоку;
- 🟢 цветные точки у разделов в меню: зелёная — работает, жёлтая — частично, красная — не работает;
- 📊 в боковой панели — модель роутера, версия OpenWrt, температура и нагрузка ЦП, ОЗУ, флеш;
- 🔒 сервер слушает только локальную сеть (`rfc1918_filter`), а при истечении сессии панель сама попросит войти снова.
Страницы LuCI и Web UI — один и тот же код: Web UI загружает те же модули и подменяет только «обвязку» LuCI. Что умеет одна, то умеет и другая.
---
## 🧩 Разбор разделов
### 📊 Дашборд
Сводка всего, что стоит на роутере.
- **Компоненты** — статус каждого инструмента: Zapret, Zapret2, Steer (и через что идут сервисы — WARP, свой WARP или VPN), Forkozz, ByeTube, TG WS Proxy, Mixomo, DoH, AmneziaWG (сколько туннелей работает), домены в hosts.
- **Система** — модель, архитектура, платформа, версия OpenWrt, время работы, наличие интернета с задержкой (пинг `ya.ru` / `vk.ru`), шкалы температуры и нагрузки ЦП, ОЗУ, флеша и `/tmp` — обновляются каждые 5 секунд.
- **Версии** — установленная и последняя версия каждого пакета: Zapret Manager, Zapret, Mihomo, MagiTrickle, hev-socks5-tunnel, TG WS Proxy, sTGWS, ядро steer, Forkozz, sing-box, Zapret2, ByeDPI, AmneziaWG, https-dns-proxy.
- **Подсказки-баннеры**: «Включён Flow Offloading, а FIX не применён», «Роутер работает по IPv6, а в Zapret IPv6 выключен» — с кнопкой «Применить»; «Желательно перезагрузить роутер» — после удаления компонентов.
---
### 🛡️ Zapret
Локальный обход DPI на базе [zapret-openwrt](https://github.com/remittor/zapret-openwrt). Самый большой раздел — 7 вкладок.
<details>
<summary><b>Установка и управление</b></summary>
- **Установить и настроить** — скачивает последний релиз `zapret-openwrt` под архитектуру роутера (до 5 попыток, проверка архива через `unzip -t`), ставит пакеты, загружает список исключений и дополнительные fake-файлы, затем применяет базовую стратегию **v7**, игровую **Gv1** и полезные блоки в hosts.
- **Обновить до …** — появляется, если на GitHub вышла новая версия.
- **Запустить / Остановить / Удалить** — удаление полное: пакеты, `/opt/zapret`, конфиг, init-скрипты, задания cron, таблица nftables.
- Если версия на GitHub не определилась, ставится проверенная фиксированная.
</details>
<details>
<summary><b>Стратегии</b></summary>
- **v1 – v10** — десять встроенных стратегий (split2, multisplit, hostfakesplit, fake с разным fooling и паттернами).
- **Flowseal** — стратегии из [zapret-discord-youtube](https://github.com/Flowseal/zapret-discord-youtube): панель скачивает архив, разбирает `.bat`-файлы и переводит их пути и плейсхолдеры (`%BIN%`, `%LISTS%`, `%GameFilter%`) в формат OpenWrt.
- При смене стратегии **сохраняются** YouTube-, Discord- и игровая части, QUIC для YouTube и дополнения.
- **Дополнения к стратегии:**
- **Обход по спискам РКН** — основной профиль работает только для сайтов из списка [zapret4rocket](https://github.com/IndeecFOX/zapret4rocket) и вашего списка хостов, а не «всё, кроме исключений». Помогает, если стратегия мешает обычным сайтам.
- **Блок `--wssize 1:6`** — отдельный профиль, уменьшающий окно TCP в начале HTTPS-соединения.
- **Редактор текущей стратегии** — ручная правка блока `NFQWS_OPT` с проверкой (без одинарных кавычек, хотя бы один параметр `--…`).
- **«Не изменять стратегию» (`#nochange`)** — панель больше не трогает стратегию: ни выбор стратегий, ни YouTube/Discord/игры, ни тест, ни переустановка Zapret.
</details>
<details>
<summary><b>Тест стратегий и автоподбор</b></summary>
Тест идёт в фоне, после него настройки Zapret возвращаются как были.
| Режим | Что делает |
|---|---|
| **Текущая стратегия** | проверяет то, что стоит сейчас, ничего не меняя: заблокированные сайты и YouTube |
| **По домену** | все стратегии v и Flowseal на ваших сайтах (до 30 доменов) |
| **v1–v10 / Flowseal / v + Flowseal** | перебор стратегий по списку заблокированных сайтов |
| **YouTube** | перебор стратегий Yv на адресах YouTube |
| **Свои стратегии** | ваш список (`/root/custom_test.txt`, совместим с консольной версией) — на сайтах или на YouTube |
- Сначала делается **контрольный замер без Zapret**, затем каждая стратегия.
- Список проверяемых сайтов: госуслуги, налоговая, rutube, торрент-трекеры, Discord, X, Instagram, GitHub и набор из [dpi-checkers](https://github.com/hyperion-cs/dpi-checkers).
- Результаты: сортировка по числу открывшихся сайтов, цветная шкала (зелёный — всё открылось, жёлтый — лучше, чем без Zapret, красный — не лучше), по клику — какие сайты открылись, а какие нет, кнопка **«Применить»** у каждой стратегии.
- **Автоподбор по расписанию** — каждый день в выбранное время (01:00–06:00 или своё) роутер перебирает v / Flowseal / v + Flowseal и сравнивает лучшую с текущей. Новая стратегия ставится **только если открывает больше сайтов**. YouTube, Discord, игры, QUIC и дополнения сохраняются; при `#nochange` автоподбор ничего не меняет. Показывается итог последнего запуска.
</details>
<details>
<summary><b>YouTube</b></summary>
- Стратегии **Yv** (список скачивается из репозитория Zapret Manager), меняется только YouTube-часть.
- **Выключить** — убрать YouTube-часть совсем (например, если YouTube идёт через ByeTube или Steer).
- **QUIC для YouTube** — отдельный блок для UDP 443: браузеры и приложение YouTube часто грузят видео по QUIC.
</details>
<details>
<summary><b>Игры</b></summary>
- Игровые стратегии **Gv1 – Gv4** с нужными диапазонами портов TCP/UDP.
- **Xtreme режим** — обход на портах 80, 88, 443–65535 (для проверки игр, может мешать другим приложениям).
- Выбор **fake-файла** (stun, quic_initial разных сайтов, tls_clienthello).
</details>
<details>
<summary><b>Discord</b></summary>
- Стратегии **Dv1 – Dv17** для `discord.media`, блок голоса `discord,stun`, выбор fake-файла.
- **Скрипты custom.d** из примеров zapret: `50-stun4all` (STUN на всех портах — голос и видео в Discord, Telegram, WhatsApp), `50-quic4all`, `50-discord-media`, `50-discord`.
- **Финские IP для Discord** — 200 записей `finland10000–10199.discord.media` в hosts, если голос не подключается.
</details>
<details>
<summary><b>Редактор списков и исключение устройств</b></summary>
- Три списка: **исключения** (Zapret их не трогает), **пользовательские хосты**, **Google** (для YouTube и QUIC). Каждый — со счётчиком записей, кнопкой «Перечитать файл» и переключателем «Не изменять список» (`#nochange`).
- Список исключений можно **восстановить из репозитория** и **обновлять автоматически** каждые 2 / 4 / 6 / 12 часов.
- **Исключение устройств** — выбранные устройства (по IP из DHCP и ARP или вручную) ходят мимо Zapret.
</details>
---
### ⚡ Zapret2
Установка и управление [Zapret2](https://github.com/bol-van/zapret2) из пакетов Routerich: скачивание, установка, стратегия, список исключений, Discord-скрипт; запуск, остановка, полное удаление.
> [!IMPORTANT]
> Только для архитектуры **aarch64_cortex-a53**. Несовместим с основным Zapret — панель не даст поставить оба (кроме экспертного режима).
---
### 🛣️ Steer
Выбранные сервисы идут через туннель — бесплатный **Cloudflare WARP** или **ваш VPN**. Остальной интернет — напрямую. Маршрутизацию ведёт ядро [steer 2.x](https://github.com/splify2/steer) средствами ядра Linux: nftables, таблицы маршрутизации, домены через fake-IP. Панель пишет для ядра спеку (`/etc/steer/spec.json`), проверяет её (`steer ctl check`) и применяет без обрыва соединений — ядро трогает только изменившееся.
<details>
<summary><b>Вкладка «Сервисы»</b></summary>
- **Сервисы**: YouTube, Discord, Instagram, WhatsApp, X, GitHub, Telegram, TikTok, HDRezka, Google Meet, Gemini, Google Play, Roblox, Cloudflare, CloudFront, DigitalOcean, Hetzner, OVH.
- **Категории**: геоблок, заблокированные сайты, новости, аниме, 18+, хостинги и CDN, «Всё сразу» (Russia inside), сайты РФ из-за рубежа, блокировки Украины.
- **Дополнительные списки** из каталога [splify2-lists](https://github.com/xyzmean/splify2-lists) (itdoginfo/allow-domains, b4geoip и другие), сгруппированные по источнику. Каталог можно обновить, сменить на свой `lists.json` или выключить.
- **Свой список** — домены (поддомены включаются сами) и IP/подсети.
- **«Скачивать списки через VPN»** — если GitHub у провайдера не открывается.
- **Проверка** — туннель каждого WARP (сервер Cloudflare, город, какая страна видна сайтам) + диагностика самого ядра steer.
- **«Куда пойдёт запрос»** — введите домен или IP, и ядро покажет: через WARP, через VPN (и через какой узел) или напрямую, с подменным или настоящим адресом.
</details>
<details>
<summary><b>Вкладка «WARP»</b></summary>
**Автоматический режим** — три туннеля AmneziaWG в **разных колониях** Cloudflare, трафик идёт через самый быстрый живой:
- ключи берутся у Cloudflare (ключ создаётся на роутере), при недоступности — у внешнего генератора, через реле или изнутри уже работающего туннеля;
- **разведка точек входа**: перебор пулов адресов Cloudflare и портов (2408, 500, 1701, 4500, а если они закрыты — ещё 50 запасных);
- отбраковка **российских колоний** (через них блокировки не снимаются) и точек, где **DPI обрывает туннель** (трафик пошёл и оборвался);
- если ничего не подходит — перебор **масок первого пакета I1** (QUIC, DNS, STUN, SIP, iCloud-DNS);
- для каждого туннеля видно: сервер, город, страну для сайтов, точку входа, время последней связи и трафик.
**Свой конфиг** — один туннель по вашему конфигу WireGuard / AmneziaWG (`zmwarp4`). Конфиг хранится отдельно (`/etc/zm-warp-own.conf`) и переживает даже переустановку Steer. Переключаться между режимами можно в один клик — прежние туннели сохраняются.
**Кнопки ремонта:** «Перезапустить туннели», «Сменить точки входа», «Новые ключи», а для одного упавшего туннеля — «Переделать» или «Новые ключи» только для него.
**Автоподбор мёртвых туннелей** — раз в 10 минут проверяет туннели и неработающему (дольше 30 мин / 1 ч / 3 ч) подбирает новую точку входа, с третьей попытки — с новыми ключами, до 4 попыток. Работающие не трогает, без интернета не запускается. История последних подборов видна в карточке.
**Автоперезапуск** — каждые 2 / 6 / 12 часов или ежедневно в заданный час.
</details>
<details>
<summary><b>Вкладка «VPN»</b></summary>
- Ссылка на **подписку** (`https://…`) или **свои серверы**: VLESS, Hysteria2, Trojan, Shadowsocks, VMess, SOCKS, HTTP. Нужные модули ядра (`steer-vless`, `steer-hysteria2`, `steer-proxy`) ставятся сами.
- Шапка подписки: название, трафик и квота, срок действия.
- **Выбор узла** или **«Авто»** (первый рабочий). Если выбранный узел не ответил — панель **сама возвращает прежний выбор**, а не оставляет сервисы без туннеля.
- **Проверка задержки** — TCP-пинг до каждого узла (как «TCP» в Happ), пачками; Hysteria2 проверяется через ядро. Сортировка по пингу.
- **Скрыть узлы** — вручную или по «маркерам» (флаги стран, слова в названии); новые узлы с этим словом тоже скрываются.
- **Свои серверы** — редактор ссылок: изменить, удалить, добавить по одной или пачкой.
- **Автообновление подписки** — каждые 3 / 6 / 12 / 24 часа; если список не изменился и VPN работает — туннель не трогается.
- **Сторож VPN** — если VPN перестал отвечать, Steer перезапускается; закреплённый мёртвый узел сменяется на автовыбор с уведомлением в панели.
- Переключатель **WARP ⇄ VPN** — в карточке Steer, выбор узла сохраняется.
</details>
> [!NOTE]
> Если стоит **splify2**, ядро steer настроено вручную или занято Podkop/Forkop — Steer не перезаписывает чужие правила и покажет, кто занял ядро.
---
### 🍴 Forkozz
Выбранные сервисы идут через ваш сервер, подписку или туннель на базе движка [NetShift](https://github.com/yandexru45/netshift) и [sing-box](https://github.com/SagerNet/sing-box). Всё ставится только с GitHub и из репозитория OpenWrt — без сторонних зеркал (старые зеркала Forkop панель сама убирает из фидов).
<details>
<summary><b>Секции</b></summary>
До **9 секций**, каждая ведёт свои сервисы через своё подключение: например, YouTube — через сервер в Европе, а ChatGPT — через WARP. Секции проверяются по порядку: если сайт попал в две, сработает левая. Один сервис можно включить только в одной секции — панель подскажет, где он уже выбран.
Карточка каждой секции на главной: состояние, текущий сервер и задержка, подписка, что через неё идёт.
</details>
<details>
<summary><b>Подключение</b></summary>
- **Серверы** — ссылки vless, vmess, trojan, ss, socks5, hysteria2; редактор ссылок с распознаванием имени и хоста.
- **Подписка** — одна или до 10 ссылок, серверы собираются в общий список; интервал обновления.
- **Туннель** — интерфейс WireGuard / AmneziaWG (например, WARP из Steer).
- **Дополнительно:** формат подписки (авто / Xray JSON для Happ / sing-box), группы по флагу страны или по началу имени, отбор серверов по словам, User-Agent, отключение проверки сертификата; параметры автовыбора (интервал, допуск, адрес проверки); UDP поверх TCP; свой DNS для туннеля; **локальный прокси HTTP/SOCKS5** для программ в сети; «узнавать настоящий IP сайтов».
- **Серверы** — режим «Авто» или «Вручную», переключение одним кликом, TCP-пинг всех серверов с результатами по мере проверки, сортировка, скрытие серверов, трафик и срок подписки.
- **Сторож** — если закреплённый вручную сервер перестал отвечать, Forkozz переключается на автовыбор и показывает, какой сервер упал.
</details>
<details>
<summary><b>Сервисы, исключения, устройства</b></summary>
- **Сервисы** — тот же каталог, что в Steer, + свои домены, IP-подсети и внешние `.lst`-списки.
- **Исключения** — сайты и адреса, которые всегда идут напрямую, мимо всех секций.
- **Устройства** — «Всё через Forkozz» (ТВ, приставки) и «Мимо Forkozz».
- **Обновить списки сейчас** — с отчётом в окне вывода: какой набор правил скачан, сколько адресов в файрволе, были ли ошибки.
</details>
<details>
<summary><b>Настройки</b></summary>
- **DNS**: протокол DoH / DoT / UDP, до **8 серверов с автопереключением** (раз в пару минут проверяет и уходит на следующий, возвращается, когда первый оживёт), кнопка «Подобрать лучшие» (замер всех серверов с роутера), Bootstrap DNS, «DNS через VPN», «Не пускать приложения в обход DNS роутера» (блок публичных DoH), TTL и EDNS Client Subnet.
- **Сеть**: из каких сетей принимать трафик, через какой интерфейс выходить в интернет, перезапуск при переподключении WAN, IPv6, «не менять DNS роутера».
- **Прочее**: отключение QUIC для выбранных сервисов, торренты и NTP напрямую, интервал обновления списков.
- **sing-box**: облегчённый (`sing-box-tiny`), обычный или **расширенный** ([sing-box-extended](https://github.com/shtorm-7/sing-box-extended)). Расширенный ставится **сам**, когда среди серверов или в подписке есть XHTTP или VMess. Если новый sing-box не заработал — возвращается прежний. Уровень журнала (по умолчанию выключен — меньше нагрузки на флеш).
- **Панель sing-box (YACD)** — соединения и трафик в реальном времени, при желании — доступ из интернета по ключу.
</details>
<details>
<summary><b>Проверка и переход со старого Forkop</b></summary>
- **Проверка** — служба, sing-box, перенаправление DNS, FakeIP, ответ сервера каждой секции, исключения.
- **«Куда пойдёт запрос»** — повторяет правила sing-box для домена или IP и показывает: через какую секцию, напрямую, исключение или блок.
- **Трафик** — скорость, всего, число соединений и память sing-box.
- **Переход с прежнего движка Forkop** — одной кнопкой: подключения, секции, списки, свои домены, исключения, устройства и DNS переносятся автоматически, старый движок удаляется.
</details>
---
### ▶️ ByeTube
Обход блокировки **только доменов YouTube** через [ByeDPI](https://github.com/DPITrickster/ByeDPI-OpenWrt) + `hev-socks5-tunnel`. Остальной трафик идёт напрямую. dnsmasq-full складывает адреса YouTube в наборы nftables, трафик к ним маркируется и уходит в туннель `ytb0`.
- **Статус** — ByeDPI, hev-socks5-tunnel, интерфейс, маркировка, policy routing, DNS, firewall, число IP в наборах.
- **Настройки** — QUIC: блокировать (рекомендуется) или через прокси; IPv6; порт SOCKS5.
- **Стратегия** — 6 готовых стратегий или своя строка параметров `ciadpi`.
- **Тест стратегий** — каждая стратегия проверяется во **временном** экземпляре ByeDPI на отдельном порту: основной сервис и трафик клиентов не затрагиваются. Свои списки стратегий и доменов для теста.
- **Домены** — встроенный список YouTube (вкл/выкл) + свои домены.
- В консоли: `bytetube diag <IP|имя телефона>` — разбор, куда реально уходят DNS-запросы и соединения устройства (поможет найти включённый «Частный DNS»).
---
### ✈️ TG WS Proxy
Четыре прокси для Telegram:
| Вариант | Порт | Источник |
|---|---|---|
| **Go (MTProto)** | 1443 | [spatiumstas/tg-ws-proxy-go](https://github.com/spatiumstas/tg-ws-proxy-go) |
| **SOCKS5** | 2080 | [d0mhate/-tg-ws-proxy-Manager-go](https://github.com/d0mhate/-tg-ws-proxy-Manager-go) |
| **Rust (MTProto)** | 2443 | [valnesfjord/tg-ws-proxy-rs](https://github.com/valnesfjord/tg-ws-proxy-rs) |
| **sTGWS** | — | [xyzmean/brb](https://gitlab.com/xyzmean/brb) |
- Готовая **ссылка `tg://`** для каждого запущенного прокси, кнопка «Скопировать» и **QR-код** для телефона.
- Установка последней версии с GitHub; если под архитектуру нет сборки — ставится проверенная.
- Удаление принудительное — даже если менеджер пакетов отказывается.
- Rust-прокси, поставленный пакетом `luci-app-tg-ws-proxy-rs`, панель распознаёт и только показывает (порт, ключ и FakeTLS — из его настроек).
- sTGWS: перезапуск и **подбор нового домена**.
- **Автоперезапуск** для каждого прокси (1–12 ч) и **сторож** — упавший прокси запускается заново в течение 2 минут.
---
### 🧱 Mixomo
Связка **Mihomo** (прокси-ядро) + **hev-socks5-tunnel** (мост в туннель) + **MagiTrickle** (направляет в туннель только выбранные сайты). На основе [Mixomo от Internet-Helper](https://github.com/Internet-Helper).
- **Mixomo** — установка всех трёх программ под архитектуру роутера, сетевой интерфейс и зона файрвола, запуск/остановка/перезапуск, обновление.
- **Веб-панель Mihomo** — MetaCubeXD (по умолчанию) или Zashboard, порт 9090.
- **Подписка** — обновляет ссылку в существующем провайдере или создаёт готовую конфигурацию с отдельной маршрутизацией YouTube.
- **Исключение серверов из подписки** — вручную или по фразам; панель пишет `exclude-filter` и сохраняет ваш собственный фильтр.
- **Автоперезапуск** — каждые 2 / 6 часов или ежедневно в заданный час.
- **Конфигурация** — редактор `config.yaml`; если Mihomo не запустился с новой конфигурацией, **изменения откатываются**.
- **MagiTrickle** — готовые списки (Internet Helper, ITDog, старый Internet Helper) и встроенное окно управления группами и подписками.
- **WARP** — генерация WARP.conf (с подбором точки входа) и интеграция в Mihomo как прокси-выход.
---
### 📝 Hosts
- **16 готовых блоков** для `/etc/hosts`: nalog.ru, ntc.party, Instagram/Facebook, lib.rus.ec, AI-сервисы (ChatGPT, Claude, Gemini, Grok, DeepL, Copilot, ElevenLabs, Windsurf и др.), Twitch, Telegram Web, Spotify (обычный и расширенный), rutor, rutracker, Supercell, GitHub и GitHub Raw, tapeop.dev, финские IP Discord. Отметьте нужные и нажмите «Сохранить и применить».
- **GeoHide RU / EU / US** — полная замена hosts списком [GeoHideDNS](https://github.com/Internet-Helper/GeoHideDNS).
- **Восстановить hosts** — вернуть чистый файл.
- **Редактор** всего `/etc/hosts` (резервная копия — `/etc/hosts.bak`). Для очень больших файлов (например, GeoHide) редактор отключается, чтобы не перегружать роутер.
---
### 🔐 DNS over HTTPS
Шифрованный DNS для всей сети на базе `https-dns-proxy`.
- **11 провайдеров**: Google, Cloudflare, Quad9, XBOX, Comss, DNS-AI, Яндекс Семейный, Яндекс Безопасный, GeoHide RU / EU / US.
- **Bootstrap DNS** — как у провайдера или свои адреса (до 6).
- **Перехват DNS устройств** — «Авто» (все устройства принудительно получают DNS через DoH, даже с вручную прописанным DNS) или «Не перехватывать». Работает вместе со Steer.
- Удаление полное — пакеты, настройки, правила перехвата; dnsmasq возвращается к прежним серверам.
> [!NOTE]
> Если стоит Forkozz, DoH не нужен — Forkozz сам шифрует DNS.
---
### 🔒 AmneziaWG
WireGuard с маскировкой: провайдеру сложнее заметить и заблокировать туннель.
- **Установка** — пакеты под точную версию и цель OpenWrt из сборок [2Grey/awg-openwrt](https://github.com/2Grey/awg-openwrt) (с запасными зеркалами). Если модуль ядра не загрузился, панель подробно объясняет почему: нет файла, модуль собран для другого ядра, не хватает модулей ядра.
- **Интерфейсы** — список всех туннелей AmneziaWG (в том числе туннелей Steer) с состоянием, адресом, точкой входа, рукопожатием, трафиком и зоной firewall.
- **Проверить** — внешний IP, сервер Cloudflare, страна, потери и задержка, предупреждение об обрывах DPI.
- Перезапустить, включить/выключить, сменить или **подобрать** точку входа, **новые ключи WARP**, показать/изменить конфиг, удалить.
- **WARP.conf** — сгенерировать (стандартная точка, с подбором, своя точка) или **«С проверкой связи»**: роутер получает ключи, перебирает точки входа и маски и записывает связку, через которую трафик реально идёт.
- **Создать интерфейс** — из WARP.conf или своего `.conf`, с зоной firewall («доступ из сети») и опцией «весь трафик в туннель».
---
### ⚙️ Система
- **Блокировка QUIC** (UDP 80/443 из LAN в WAN), **IPv6 в Zapret**, **Fix для Flow Offloading** (правка шаблона firewall4).
- **Системная информация** — отчёт одним кликом: роутер, сеть, провайдер, связь IPv4/IPv6, лимит GitHub API, Flow Offloading, DoH, Forkozz, Zapret (версия, стратегия, порты), домены в hosts, пакеты, поставленные вручную, и доступность ~40 сайтов. Кнопка «Скопировать отчёт» — удобно для вопросов в сообществе.
- **Время на роутере** — живые часы, **автоопределение часового пояса** (пять сервисов геолокации, выбирается пояс большинства) и синхронизация времени по NTP, а если провайдер закрыл NTP — по заголовкам Date крупных сайтов. Нужно для всех расписаний панели.
- **Проверка сети** — IPv4 и IPv6 до google.com.
- **Зеркало OpenWrt** — переключение источника пакетов с проверкой доступности и откатом на default при ошибке.
- **Удалить Zapret Manager** — убирает только панель; всё, что ставилось через неё, остаётся и продолжает работать.
---
## 🔗 Совместимость компонентов
Некоторые инструменты перехватывают один и тот же трафик, поэтому панель не даёт поставить их вместе и показывает понятную причину:
| Компонент | Не ставится вместе с |
|---|---|
| **Zapret** | Zapret2 |
| **Zapret2** | Zapret |
| **Steer** | Forkozz, splify2, чужая настройка ядра steer |
| **Forkozz** | Steer, Mixomo, DoH, Podkop, PassWall, NextDNS |
| **Mixomo** | Forkozz, ByeTube |
| **ByeTube** | Mixomo |
| **DoH** | Forkozz |
Steer и ByeTube могут работать параллельно — панель напомнит пускать YouTube только через что-то одно.
---
## 🔧 Как это устроено
<details>
<summary><b>Файлы на роутере</b></summary>
| Путь | Что это |
|---|---|
| `/opt/zapret-manager-luci/backend.sh` | бэкенд: вся логика панели |
| `/opt/zapret-manager-luci/netshift.uc` | ucode-модуль Forkozz |
| `/opt/zapret-manager-luci/state/` | состояние панели (тема, кэши версий, автоподбор и т.д.) |
| `/usr/libexec/rpcd/zapret-manager` | rpcd-плагин — объект `zapret-manager` в ubus |
| `/usr/share/rpcd/acl.d/luci-app-zapret-manager.json` | права доступа |
| `/usr/share/luci/menu.d/luci-app-zapret-manager.json` | пункт меню LuCI |
| `/www/luci-static/resources/view/zapret-manager/` | страницы LuCI |
| `/www/zm/`, `/www/zm-webui.html` | Web UI |
| `/tmp/zapret-manager-luci/` | журналы и pid фоновых операций |
| `/etc/zm-steer/`, `/etc/zm-awg/` | данные Steer и AmneziaWG |
</details>
<details>
<summary><b>Фоновые операции</b></summary>
Установка, удаление, тесты и другие долгие действия запускаются как фоновые задания с журналом. Панель опрашивает статус и показывает вывод в «терминале» с подсветкой шагов (`✓`, `✗`, `→`). Если операция не отвечает дольше 2 минут, внизу появляется кнопка **«Остановить все операции»** — она завершает всё дерево процессов и откатывает незаконченное (например, возвращает прежнюю версию Forkozz).
Шаги с сетью и менеджером пакетов ограничены по времени, а если DNS роутера не отвечает, на время операции подставляются 1.1.1.1 и 9.9.9.9 — потом прежний DNS возвращается.
</details>
<details>
<summary><b>Сторож (cron, раз в 2 минуты)</b></summary>
`backend.sh zm_watch`:
- поднимает **rpcd**, если он упал или завис (иначе пропадает вход в LuCI), и перезапускает его, если он держит старый список методов панели;
- возвращает DNS роутера, если операция прервалась на полпути;
- перезапускает **Forkozz**, если он включён, но не работает (с нарастающей паузой), чинит мёртвые серверы и переключает DNS;
- проверяет **VPN Steer** и чинит его;
- поднимает упавшие **TG WS Proxy**;
- переводит ядро steer 1.x на 2.x.
</details>
<details>
<summary><b>Принцип «#nochange» и большие тексты</b></summary>
- Строка `#nochange` в стратегии или списке запрещает панели менять их — ни при установке, ни при обновлении, ни в тестах. Переключатели «Не изменять» ставят и снимают её сами.
- uhttpd принимает в `/ubus` не больше 64 КБ за запрос, поэтому большие тексты (hosts, списки, конфиги) отправляются частями и собираются на роутере.
- После обновления панель сама сбрасывает кэш браузера (сверка `build.txt`), чтобы не работать со старыми файлами.
</details>
---
## ❓ Частые проблемы
<details>
<summary><b>Страница пишет «Object not found» / «метод не найден»</b></summary>
rpcd ещё не подхватил плагин. Подождите минуту или выполните:
```sh
/etc/init.d/rpcd restart
```
Сторож делает это сам в течение 2 минут.
</details>
<details>
<summary><b>Web UI не открывается на порту 7788</b></summary>
Нужен пакет `uhttpd-mod-ubus` (установщик ставит его сам). Проверьте:
```sh
uci show uhttpd.zmweb
/etc/init.d/uhttpd restart
```
Web UI доступен только из локальной сети.
</details>
<details>
<summary><b>Через Steer / Forkozz сайт всё равно идёт напрямую</b></summary>
1. Проверьте его в «Куда пойдёт запрос».
2. Отключите на устройстве «Частный DNS» (Android) и «Безопасный DNS» в браузере — они идут мимо роутера.
3. Очистите DNS-кэш или перезапустите браузер — устройство могло запомнить старый адрес.
</details>
<details>
<summary><b>Модуль AmneziaWG не загружается</b></summary>
Готовые модули собраны под официальные прошивки OpenWrt. На сторонних сборках ядро может отличаться — нужна официальная прошивка той же версии. Причину панель пишет в журнале установки.
</details>
---
## 🗑️ Удаление
- **Только панель** — «Система → Удалить Zapret Manager». Компоненты останутся и продолжат работать.
- **Компоненты** — кнопкой «Удалить» на странице каждого из них. Удаление полное: пакеты, настройки, правила файрвола и маршрутизации, задания cron. После удаления панель проверяет интернет и DNS роутера и при необходимости сама перезапускает сеть.
---
## 🤝 Благодарности
Zapret Manager собирает в одном месте работу этих проектов и их авторов:
| Проект | Автор |
|---|---|
| zapret, zapret2 | [bol-van](https://github.com/bol-van) |
| zapret-openwrt | [remittor](https://github.com/remittor/zapret-openwrt) |
| Zapret2 (пакеты) | [routerich](https://github.com/routerich) |
| Стратегии Flowseal | [Flowseal](https://github.com/Flowseal/zapret-discord-youtube) |
| ByeDPI-OpenWrt | [DPITrickster](https://github.com/DPITrickster/ByeDPI-OpenWrt) |
| mihomo, metacubexd, meta-rules-dat | [MetaCubeX](https://github.com/MetaCubeX) |
| zashboard | [Zephyruso](https://github.com/Zephyruso/zashboard) |
| hev-socks5-tunnel | [heiher](https://github.com/heiher/hev-socks5-tunnel) |
| MagiTrickle | [MagiTrickle](https://github.com/MagiTrickle/MagiTrickle) |
| sTGWS, Steer, каталог списков | [xyzmean](https://github.com/xyzmean) |
| tg-ws-proxy-go (MTProto) | [spatiumstas](https://github.com/spatiumstas/tg-ws-proxy-go) |
| tg-ws-proxy-go (SOCKS5) | [d0mhate](https://github.com/d0mhate/-tg-ws-proxy-Manager-go) |
| tg-ws-proxy-rs (Rust) | [valnesfjord](https://github.com/valnesfjord/tg-ws-proxy-rs) |
| Mixomo, GeoHideDNS | [Internet-Helper](https://github.com/Internet-Helper) |
| allow-domains | [itdoginfo](https://github.com/itdoginfo) |
| NetShift (основа Forkozz) | [yandexru45](https://github.com/yandexru45/netshift) |
| sing-box | [SagerNet](https://github.com/SagerNet/sing-box) |
| sing-box-extended | [shtorm-7](https://github.com/shtorm-7/sing-box-extended) |
| ios_rule_script | [blackmatrix7](https://github.com/blackmatrix7/ios_rule_script) |
| b4geoip | [DanielLavrushin](https://github.com/DanielLavrushin/b4geoip) |
| b4geoip-forkop | [Greeg0ry](https://github.com/Greeg0ry/b4geoip-forkop) |
| domain-list-community | [v2fly](https://github.com/v2fly/domain-list-community) |
| dpi-checkers | [hyperion-cs](https://github.com/hyperion-cs/dpi-checkers) |
| awg-openwrt (сборки) | [2Grey](https://github.com/2Grey/awg-openwrt) |
| warpscout (разведка WARP) | [vernette](https://github.com/vernette/warpscout) |
| base-relay (реле регистрации WARP) | [nellimonix](https://github.com/nellimonix/base-relay) |
И **всем пользователям**, кто помогает, тестирует и поддерживает проект ❤️
---
<div align="center">
### 💬 Сообщество
[**Telegram — Zapret Manager**](https://t.me/stressozz_manager) · [**StressKVN — обход белых списков**](http://stresskvn.lol/)
Made with ❤️ by **[StressOzz](https://github.com/StressOzz)** for the OpenWrt community
</div>