376 lines
57 KiB
Markdown
376 lines
57 KiB
Markdown
# Zapret Manager by StressOzz — подробная инструкция
|
||
|
||
Скрипт-меню для OpenWrt, объединяющий в одной оболочке установку, настройку, тестирование и обслуживание инструментов обхода блокировок (DPI): **Zapret**, **Zapret2**, **splify** (WARP), **Mixomo** (Mihomo + MagiTrickle), **NetShift** (бывший Podkop), **TG WS Proxy** / **sTGWS**, **DNS over HTTPS**, редактор `hosts`, а также системные утилиты роутера.
|
||
|
||
Ниже — построчный разбор **каждого пункта меню**: что он делает и какой результат вы получите после выполнения.
|
||
|
||
> Скрипт написан для OpenWrt (opkg/apk), запускается через SSH командой вида
|
||
> `sh <(wget -q -O - https://raw.githubusercontent.com/StressOzz/Zapret-Manager/main/Zapret-Manager.sh)`
|
||
> либо короткими алиасами `zms` / `zmsA`, которые скрипт сам прописывает в `/usr/bin`.
|
||
|
||
---
|
||
|
||
## Содержание
|
||
|
||
1. [Главное меню](#главное-меню)
|
||
2. [Меню Zapret](#меню-zapret)
|
||
- [Меню стратегий Zapret](#меню-стратегий-zapret)
|
||
- [Меню тестирования стратегий](#меню-тестирования-стратегий)
|
||
- [Меню автоподбора стратегий по расписанию](#меню-автоподбора-стратегий-по-расписанию)
|
||
- [Меню настройки Discord](#меню-настройки-discord)
|
||
3. [Zapret2](#zapret2)
|
||
4. [Меню splify](#меню-splify)
|
||
5. [Меню Mixomo](#меню-mixomo)
|
||
6. [Меню NetShift](#меню-netshift)
|
||
7. [Меню TG WS Proxy](#меню-tg-ws-proxy)
|
||
8. [Меню DNS over HTTPS](#меню-dns-over-https)
|
||
9. [Меню управления доменами в hosts](#меню-управления-доменами-в-hosts)
|
||
10. [Системное меню](#системное-меню)
|
||
11. [Прочие пункты главного меню](#прочие-пункты-главного-меню)
|
||
|
||
---
|
||
|
||
## Главное меню
|
||
|
||
Открывается автоматически при запуске скрипта. Вверху выводится текущее состояние всех компонентов (какая версия Zapret/Zapret2 установлена, запущены ли они, какая стратегия активна, включён ли DNS over HTTPS, работает ли ttyd-доступ из браузера, зеркало OpenWrt и т.д.), а ниже — пункты навигации:
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Меню Zapret | Переход в подменю установки/настройки/тестирования Zapret. |
|
||
| **2** | Установить / Обновить / Удалить Zapret2 | Пункт подписывается динамически (`Z2_ACTION_TEXT`) в зависимости от того, установлен ли Zapret2 и совпадает ли его версия с последней доступной. |
|
||
| **3** | Меню splify | Переход в подменю WARP-клиента splify. |
|
||
| **4** | Меню Mixomo | Переход в подменю Mihomo + MagiTrickle (маршрутизация по доменам/спискам через прокси/WARP). |
|
||
| **5** | Меню NetShift | Переход в подменю NetShift (замена Podkop), ByeDPI, AmneziaWG. |
|
||
| **6** | Меню TG WS Proxy | Переход в подменю прокси для Telegram (MTProto/SOCKS5/Rust/sTGWS). |
|
||
| **7** | Меню DNS over HTTPS | Переход в подменю настройки DoH. |
|
||
| **8** | Меню управления доменами в hosts | Переход в подменю добавления/удаления «зашитых» IP-адресов проблемных сервисов в файл `/etc/hosts`. |
|
||
| **f** | Удалить → установить → настроить Zapret | Полный автоматический цикл: удаляет текущий Zapret, ставит его заново с автовыбранной стратегией (`$STR_VERSION_AUTOINSTALL`), прописывает домены в `/etc/hosts`, настраивает Discord-обход и игровую стратегию — «Zapret под ключ» одним нажатием. |
|
||
| **m** | Системное меню | Переход в служебное меню (бэкапы, зеркала, expert mode, исключения IP и т.д.). |
|
||
| **s / s1 / s2** | Запустить / Остановить Zapret (и/или Zapret2) | Появляется, только если Zapret и/или Zapret2 установлены. Мгновенно останавливает/запускает демон(ы) без переустановки. Если включён Expert mode и установлены оба — показываются раздельные пункты `s1` (Zapret) и `s2` (Zapret2). |
|
||
| **Enter** | Выход | Завершает работу скрипта. |
|
||
|
||
Также в главном меню перед списком пунктов скрипт **предупреждает** о потенциальных проблемах:
|
||
- обнаружен активный IPv6 при выключенном в конфиге Zapret IPv6 → предложит включить IPv6 в системном меню;
|
||
- обнаружены конфликтующие пакеты `byedpi` или `youtubeUnblock`, установленные напрямую (не через это меню) — предупреждение о возможных конфликтах с Zapret;
|
||
- включён `Flow Offloading` без применённого FIX — предупреждение, что Zapret может не работать корректно;
|
||
- если в файле исключений IP (`Exclusions_menu`) есть записи — показывается «Исключённые IP: есть».
|
||
|
||
---
|
||
|
||
## Меню Zapret
|
||
|
||
Главное подменю ядра Zapret (пункт **1** главного меню).
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Установить / Обновить / Удалить Zapret | Если Zapret не установлен — скачивает архив `zapret_v<версия>_<архитектура>.zip` с GitHub (remittor/zapret-openwrt), распаковывает и ставит `.ipk`/`.apk` пакеты (сначала `zapret*`, затем `luci-app-zapret*`), докачивает fake-файлы (`stun.bin`, `quic_initial_*.bin` и т.п.) для стратегий обмана DPI. Если версия совпадает с последней — предлагает удалить; если версия устарела — переустанавливает на актуальную. |
|
||
| **2** | Меню стратегий Zapret | См. раздел [Меню стратегий Zapret](#меню-стратегий-zapret). |
|
||
| **3** | Меню тестирования стратегий | См. раздел [Меню тестирования стратегий](#меню-тестирования-стратегий). |
|
||
| **4** | Меню автоподбора стратегий по расписанию | См. раздел [Меню автоподбора](#меню-автоподбора-стратегий-по-расписанию). |
|
||
| **5** | Меню настройки Discord | См. раздел [Меню настройки Discord](#меню-настройки-discord). |
|
||
|
||
### Меню стратегий Zapret
|
||
|
||
Здесь выбирается конкретная «стратегия» (набор параметров `nfqws`/`--dpi-desync`), которая и обходит блокировку по TCP 443/QUIC.
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Выбрать и установить стратегию v1–v10 | Запрашивает номер (1–10) и применяет одну из встроенных стратегий `strategy_v1`…`strategy_v10` (разные комбинации `multisplit`, `fake`, `hostfakesplit`, `fooling=ts/badseq/badsum` и т.д.). Дополнительно докачивается exclude-список доменов, добавляются Google Play/YouTube-домены в исключения, автоматически подставляется базовая YouTube-стратегия (`ADD_Yv`) и стратегия для discord.media, если их ещё нет. |
|
||
| **2** | Выбрать и установить стратегию от Flowseal | Скачивает актуальный репозиторий `Flowseal/zapret-discord-youtube`, парсит `.bat`-файлы известных стратегий сообщества и показывает список для выбора. После выбора — применяет её в конфиг Zapret, докачивает исключения. |
|
||
| **3** | Выбрать и установить стратегию для YouTube | Скачивает список Yv-стратегий (`StrYoutube`) и позволяет выбрать конкретную только для YouTube-доменов, не трогая остальную стратегию. |
|
||
| **4** | Меню управления стратегией для игр | Открывает подменю [fix_GAME](#подменю-игровой-стратегии). |
|
||
| **5** | Включить/выключить обход по спискам РКН | Переключает режим применения стратегии: либо ко всем доменам (`--hostlist-exclude`), либо только к доменам из списка Роскомнадзора (`--hostlist=…zapret-hosts-user.txt`), автоматически скачивая актуальный список блокировок РКН. |
|
||
| **6** | Обновить список исключений | Перекачивает файл `zapret-hosts-user-exclude.txt` (домены, которые не нужно трогать стратегией) и перезапускает Zapret. |
|
||
| **7** | Добавить/удалить блок `--wssize 1:6` | Добавляет либо убирает в стратегию правило изменения размера окна TCP (Window Size) для 443 порта — иногда помогает против отдельных видов DPI. |
|
||
| **8** | Добавить/удалить блок `--methodeol` | Добавляет либо убирает правило `--methodeol` для портов 80,443 (модификация HTTP-метода в начале соединения). |
|
||
| **9** | Добавить/удалить блок `--filter-udp=443` | Добавляет либо убирает отдельное правило для QUIC (UDP/443) с fake-quic пакетом для Google-доменов. |
|
||
| **0** | Собрать собственную стратегию | Запускает конструктор [build_custom_strategy](#конструктор-собственной-стратегии) — пошаговая сборка своей комбинации из v-стратегии, YouTube-стратегии, игровой стратегии и discord.media-стратегии. |
|
||
|
||
В верхней части меню всегда отображается **текущая применённая стратегия**, статус списка РКН, fake-файл для Gv (игровой стратегии) и предупреждение, если пользовательский hostlist РКН стал слишком большим.
|
||
|
||
#### Подменю игровой стратегии
|
||
|
||
Вызывается из «Меню стратегий» → пункт 4, либо напрямую из главного меню Zapret.
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1–4** | Установить/удалить игровую стратегию Gv1–Gv4 | Добавляет в конфиг отдельный блок `--filter-udp=<игровые порты>` с fake-пакетом (stun.bin по умолчанию) и параметром `--dpi-desync-cutoff`, а также общий TCP-блок для игровых портов. Повторный выбор уже установленного номера — удаляет стратегию и возвращает исходные порты NFQWS. |
|
||
| **5** | Включить/отключить Xtreme режим | «Экстремальный» режим — расширяет диапазон игровых портов до `80,88,444-65535` (TCP) и `80,88,443-65535` (UDP), фактически обрабатывая почти весь трафик. Предупреждение: может ломать другие приложения, использовать только для диагностики игр. |
|
||
| **6** | Выбрать fake для игровой стратегии | Список из 9 fake-бинарников (`stun.bin`, `stun2.bin`, `quic_initial_*.bin`, `tls_clienthello_sochi_park.bin` и др.) для подмены в `--dpi-desync-fake-unknown-udp`. |
|
||
|
||
### Меню тестирования стратегий
|
||
|
||
Пункт 3 меню Zapret. Позволяет автоматически прогнать список стратегий по набору сайтов и увидеть, какая работает лучше.
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Тестирование стратегий v / Flowseal | Подменю выбора: **1** — только v1…vN, **2** — только Flowseal, **3** — обе группы. Скрипт поочерёдно подставляет каждую стратегию в конфиг, перезапускает Zapret, обращается ко всем тестовым URL (Госуслуги, RuTracker, Instagram, Discord, PornHub, OpenWrt и др. + динамический DPI-чек-лист), считает `OK/FAIL`, сортирует результаты по убыванию количества успешных доменов. |
|
||
| **2** | Тестировать текущую стратегию | Не меняя конфиг, проверяет доступность контрольного списка доменов + отдельно доменов YouTube на **уже применённой** стратегии, выводит счётчик `X/Y`. |
|
||
| **3** | Тестировать стратегии по домену | Позволяет ввести один или несколько своих доменов (например `x.com vk.com`) и прогоняет по ним весь набор v + Flowseal стратегий, показывая детальный `[ OK ]/[FAIL]` лог по каждому домену для каждой стратегии. |
|
||
| **4** | Тестировать стратегии для YouTube | Открывает [YOUTUBE_TEST_MENU](#подменю-тестирования-youtube). |
|
||
| **5** | Тестировать стратегии из `/root/custom_test.txt` | Даёт протестировать собственный набор стратегий, который пользователь заранее прописал в файле `/root/custom_test.txt` в формате `#Имя` + строки параметров `nfqws`. |
|
||
| **7** | Результаты тестирования по домену | Показывает сохранённые результаты последнего теста по конкретным доменам (пункт 3). |
|
||
| **8** | Результаты тестирования стратегий | Показывает объединённый (Flowseal + v) отсортированный список результатов последнего массового теста. |
|
||
| **9** | Результаты тестирования YouTube | Показывает сохранённые результаты теста YouTube-стратегий. |
|
||
| **0** | Результаты тестирования Custom-стратегий | Показывает результаты теста файла `/root/custom_test.txt`. |
|
||
| **10** | Удалить результаты тестирования | Стирает все файлы с результатами (`/opt/zapret/tmp/results*`). |
|
||
|
||
Перед каждым массовым тестом скрипт **обязательно выполняет контрольный тест «Zapret выключен»** — чтобы понимать базовый уровень доступности доменов без обхода блокировки, и не засчитывать сайты, которые в принципе недоступны (например, не в РФ или лежат по другой причине).
|
||
|
||
#### Подменю тестирования YouTube
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Тестировать каждую стратегию отдельно | Интерактивный режим: показывает стратегию, проверяет доступность доменов YouTube, просит подтвердить работу вживую (открыть видео на устройстве) и по нажатию Enter/S/N применяет, останавливает или продолжает перебор дальше. |
|
||
| **2** | Тестировать все стратегии сразу | Прогоняет автоматически (без интерактивного подтверждения) весь список Yv-стратегий или файл `custom_test.txt`, сохраняет результаты. |
|
||
| **3** | Тестировать стратегии из `/root/custom_test.txt` | То же самое, но источник стратегий — пользовательский файл. |
|
||
|
||
### Меню автоподбора стратегий по расписанию
|
||
|
||
Пункт 4 меню Zapret. Автоматизирует регулярный подбор лучшей рабочей стратегии без участия пользователя (например, ночью по крону).
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** (динамический) | Включить/изменить время автоподбора по расписанию | Запрашивает час (0–23) и добавляет задание в crontab: `0 <час> * * * /usr/bin/zmsA --auto-best`. |
|
||
| **2** (появляется, если расписание задано) | Отключить автоподбор по расписанию | Удаляет cron-задание. |
|
||
| **3** | Запустить/остановить автоподбор в фоне | Запускает (или прерывает) фоновый прогон `auto_apply_best_strategy` немедленно, не дожидаясь расписания. При остановке — восстанавливает исходный конфиг из бэкапа. |
|
||
| **4** (если есть результаты) | Показать результаты последнего теста | Выводит отсортированный список `Стратегия → OK/TOTAL` последнего автоподбора. |
|
||
| **5** (если есть лог) | Показать полный лог последнего теста | Выводит полный технический лог выполнения (`/opt/zapret/tmp/auto_best.log`). |
|
||
| **6** | Настроить время на роутере | Открывает [TIME_MENU](#меню-времени). |
|
||
| **7** | Выбрать стратегии для автоподбора | Подменю: **1** — только v-стратегии, **2** — только Flowseal, **3** — обе группы (по умолчанию). |
|
||
| **8** (если есть результаты/лог) | Удалить результаты теста и лог | Стирает файлы результатов, бэкапа и лога автоподбора. |
|
||
|
||
Логика самого автоподбора (`auto_apply_best_strategy`): скрипт делает бэкап текущего конфига, собирает выбранные группы стратегий, тестирует каждую по списку доменов + динамическому DPI-чек-листу, выбирает стратегию с максимальным числом успешных доменов, применяет её и **восстанавливает** ранее выбранные пользователем стратегии для YouTube (Yv), Discord (Dv) и игр (Gv), если они были заданы — то есть автоподбор не сбрасывает точечные настройки.
|
||
|
||
#### Меню времени
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Синхронизировать время через NTP | Запускает `ntpd`/`sysntpd`, синхронизирует системные часы и (если доступно) записывает их в аппаратные часы (`hwclock -w`). |
|
||
| **2** | Установить часовой пояс | Список из 12 российских/UTC часовых поясов (Калининград … Камчатка, UTC) — выбор применяет `uci set system.@system[0].timezone/zonename` и перезагружает системную службу времени. |
|
||
|
||
### Меню настройки Discord
|
||
|
||
Пункт 5 меню Zapret (или напрямую из главного меню Zapret) — отдельная тонкая настройка обхода блокировки Discord/discord.media.
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Установить скрипт `50-stun4all` | Скачивает и подключает готовый custom.d-скрипт Zapret для обхода STUN (голосовые звонки Discord). |
|
||
| **2** | Установить скрипт `50-quic4all` | Аналогично, но для QUIC-трафика. |
|
||
| **3** | Установить скрипт `50-discord-media` | Готовый скрипт под медиа-серверы discord.media. |
|
||
| **4** | Установить скрипт `50-discord` | Готовый скрипт под подсети Discord целиком (более старая версия из zapret v70.5). |
|
||
| **5** | Удалить скрипт | Убирает установленный `custom.d`-скрипт и возвращает флаг `DISABLE_CUSTOM` в конфиге. |
|
||
| **6** | Добавить/удалить Финские IP в hosts | Добавляет диапазон `finland10000…10199.discord.media → 104.25.158.178` в `/etc/hosts` (обходной приём для войс-серверов Discord) либо убирает его. |
|
||
| **7** | Выбрать и установить стратегию для discord.media | Запрашивает номер стратегии (список `Dv1`…`Dv17`, каждая — своя комбинация `multisplit/fake/fakedsplit/hostfakesplit` и fooling-параметров для портов 2053,2083,2087,2096,8443) и подставляет её в конфиг. |
|
||
| **8** | Меню выбора fake для discord,stun | Список из 9 fake-файлов для блока `--filter-l7=discord,stun` (используется для голосовых пакетов Discord через STUN), плюс пункт «0 — Удалить fake». |
|
||
|
||
---
|
||
|
||
## Zapret2
|
||
|
||
Отдельная, более новая реализация Zapret (пакет от Routerich, доступна **только** для архитектуры `aarch64_cortex-a53`). Доступна из главного меню, взаимоисключающе с обычным Zapret (нельзя иметь установленными оба одновременно, кроме случая включённого Expert mode).
|
||
|
||
- **Установка**: проверяет архитектуру устройства, скачивает индекс пакетов с `packages.routerich.ru`, находит актуальные файлы `zapret2` и `luci-app-zapret2`, устанавливает их, докачивает exclude-список, устанавливает файлы стратегии по умолчанию для медиа Discord, запускает и включает автозапуск службы `zapret2`.
|
||
- **Удаление**: останавливает и отключает `zapret2`, удаляет пакеты `zapret2`/`luci-app-zapret2`, стирает конфигурацию и папку `/opt/zapret2`.
|
||
|
||
Для Zapret2 в отдельном меню недоступны стратегии/тестирование Zapret1 — большая часть тонкой настройки (меню стратегий, тестирование, Discord) работает **только** с Zapret1 (кроме Expert mode).
|
||
|
||
---
|
||
|
||
## Меню splify
|
||
|
||
Пункт 3 главного меню — управление клиентом WARP-туннеля `splify` (на базе AmneziaWG).
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Установить / Обновить splify | Устанавливает пакет `splify` + `luci-app-splify` + русскую локализацию, ставит `amneziawg-tools`/`luci-proto-amneziawg`/`kmod-amneziawg`, регистрирует новый WARP-ключ (через официальный API Cloudflare, с резервным способом через `wg`/`awg` + собственный сервер регистрации), создаёт интерфейс `warp0` с параметрами AmneziaWG-обфускации (Jc/Jmin/Jmax/H1-H4/S1/S2/I1), сохраняет `/root/WARP.conf`, регистрирует endpoint в splify, настраивает зону firewall и перезапускает службы. При обновлении — просто обновляет пакет и перезапускает. |
|
||
| **2** | Удалить splify | Полностью деинсталлирует: останавливает службы, удаляет интерфейс `warp0`, зоны/форвардинги firewall, правила маршрутизации, nftables-правила, cron-задачи, файлы `/etc/splify*`, пакеты splify и (если не используется NetShift) — пакеты AmneziaWG. |
|
||
| **3** | Установить splify2 | Запускает **официальный** установщик splify2 (`gitlab.com/xyzmean/splify2/install.sh`) — более новая версия с движком steer. При выборе движка в официальном установщике рекомендуется выбирать «1». |
|
||
| **4** | Удалить splify2 | Останавливает/отключает службу `steer`, удаляет пакеты `steer`, `steer-extended`, `luci-app-splify2` и связанные конфиги/файлы. |
|
||
| **5** | Сгенерировать и применить WARP для splify | Перегенерирует WARP-ключ, позволяет выбрать endpoint (см. ниже), пересоздаёт интерфейс, обновляет `/root/WARP.conf` и перезапускает splify. |
|
||
| **6** | Перезапустить splify | Полный цикл: `splify-disable` → включение служб `splify`/`splify-agent` → отключение телеметрии → `restart` для обеих служб → `splify-apply`. |
|
||
|
||
**Выбор endpoint** (используется в пунктах 1 и 5): либо стандартный `engage.cloudflareclient.com:4500`, либо автоматический подбор — скрипт пингует ~100 случайных IP из известных подсетей Cloudflare WARP, определяет географию через `trace.cloudflare.com`, выбирает адрес с минимальным пингом (исключая колокацию DME).
|
||
|
||
В меню также отображается статус: версия splify, наличие splify2, установлен ли AmneziaWG, создан ли интерфейс, настроен ли firewall.
|
||
|
||
---
|
||
|
||
## Меню Mixomo
|
||
|
||
Пункт 4 главного меню — управление связкой **Mihomo** (клиент прокси/подписок, бывший Clash Meta) + **MagiTrickle** (маршрутизация по доменам через веб-интерфейс) + **HevSocks5Tunnel**.
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Установить Mixomo | Скачивает и запускает официальный установочный скрипт из репозитория проекта (устанавливает Mihomo, MagiTrickle, HevSocks5Tunnel и связанные пакеты). |
|
||
| **2** | Удалить Mixomo | Запускает официальный деинсталлятор, дополнительно чистит cron-задание автоперезапуска Mihomo; рекомендуется перезагрузить роутер после удаления. |
|
||
| **3** | Сменить список MagiTrickle | Выбор одного из трёх готовых списков доменов/сервисов для маршрутизации через MagiTrickle: **ITDog**, **Internet Helper #1**, **Internet Helper #2** — скачивает выбранный YAML в `/etc/magitrickle/state/config.yaml`, перезапускает службу. |
|
||
| **4** | Интегрировать/сменить VPN подписку в Mihomo | Запрашивает ссылку на подписку (http/https), либо обновляет `url:` в уже существующем `proxy-providers` блоке конфига Mihomo, либо (если подписки ещё нет) генерирует полноценный `config.yaml` «с нуля» с готовыми группами прокси («Сервер для YouTube» / «Сервер для остального трафика»), sniffer-настройками и правилом маршрутизации YouTube через отдельный rule-provider. |
|
||
| **5** | Сгенерировать WARP | То же самое, что и в меню splify (регистрация ключа + выбор endpoint), но результат сохраняется только в `/root/WARP.conf`, без создания системного интерфейса. |
|
||
| **6** | Интегрировать `/root/WARP.conf` в Mihomo | Запускает скрипт, который добавляет ранее сгенерированный WARP-конфиг как proxy-провайдера/outbound в конфигурацию Mihomo. |
|
||
| **7** | Выбрать и установить панель для Mihomo | Подменю **1** Zashboard / **2** MetaCubeXD — скачивает и распаковывает выбранный веб-интерфейс в `/etc/mihomo/ui`, доступен по адресу `http://<IP роутера>:9090/ui`. |
|
||
| **8** | Включить/выключить автоперезапуск Mihomo | Подменю: **1** — каждые N часов (2,4,…,22), **2** — ежедневно в конкретный час; создаёт cron-задание `/etc/init.d/mihomo restart`. Повторный вызов при уже включённом расписании — отключает его. |
|
||
| **9** (появляется, если доступно обновление) | Обновить MagiTrickle | Скачивает и устанавливает новый пакет MagiTrickle под архитектуру устройства. |
|
||
|
||
В шапке меню отображается статус служб `mihomo`, `magitrickle`, `hev-socks5-tunnel`, используемый список MagiTrickle, наличие `/root/WARP.conf`, расписание автоперезапуска и адреса веб-интерфейсов (`:9090/ui` для Mihomo, `:8080` для MagiTrickle).
|
||
|
||
---
|
||
|
||
## Меню NetShift
|
||
|
||
Пункт 5 главного меню (проект — преемник Podkop) — маршрутизация трафика через VPN/прокси по спискам сообщества (geoblock, youtube, discord, tiktok и т.д.), а также локальный DPI-обход через ByeDPI и AmneziaWG.
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Установить / Обновить / Удалить NetShift | Проверяет свободное место (минимум ~20 МБ на overlay), проверяет отсутствие конфликтующего `https-dns-proxy`, скачивает и устанавливает `netshift` + `luci-app-netshift` + русскую локализацию. При недостатке места при обновлении — предлагает удалить старую версию перед установкой новой. |
|
||
| **2** | Установить / Удалить ByeDPI | Скачивает и ставит пакет `byedpi` под архитектуру устройства, включает автозапуск службы. |
|
||
| **3** | Установить / Удалить AmneziaWG | Скачивает `kmod-amneziawg`, `amneziawg-tools`, `luci-proto-amneziawg` и русскую локализацию под версию OpenWrt/архитектуру. Удаление блокируется, если AmneziaWG используется splify. |
|
||
| **4** | Установить / Удалить интерфейс AWG | Создаёт (или удаляет) отдельный сетевой интерфейс `AWG` типа `amneziawg` в LuCI — далее пользователю нужно вручную загрузить `.conf`-файл конфигурации через `Network → Interfaces → AWG → Edit → Load configuration`. |
|
||
| **5** | Интегрировать / сменить VPN подписку в NetShift | Запрашивает ссылку на подписку и полностью формирует конфиг `/etc/config/netshift` в режиме `proxy` (тип `subscription`) с преднастроенным набором community-списков и фильтрами исключения (LTE, мобильные тарифы и т.п.), затем запускает и перезапускает службу. |
|
||
| **6** | Интегрировать AWG в NetShift | Формирует конфиг `/etc/config/netshift` в режиме `vpn` через интерфейс `AWG`, с полным набором community-списков (geoblock, порно, новости, аниме, YouTube, Discord, соцсети, HDrezka, TikTok, Telegram, Cloudflare, облачные провайдеры и т.д.). |
|
||
| **7** | Интегрировать ByeDPI в NetShift | Отключает локальный DNS роутера, перенастраивает стратегию ByeDPI на конкретный набор параметров split/desync, формирует конфиг NetShift с outbound-типом socks (127.0.0.1:1080) и списком YouTube, требует перезагрузку роутера для полноценной работы. |
|
||
| **8** (появляется, если ByeDPI установлен) | Изменить стратегию ByeDPI | Показывает текущую строку параметров `cmd_opts` ByeDPI и позволяет ввести новую вручную. |
|
||
|
||
В шапке меню — версия/статус NetShift, статус ByeDPI (и его текущая стратегия), статус AmneziaWG и интерфейса AWG.
|
||
|
||
---
|
||
|
||
## Меню TG WS Proxy
|
||
|
||
Пункт 6 главного меню — набор из четырёх независимых реализаций WebSocket-прокси для обхода блокировки Telegram.
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Меню sTGWS | Открывает [подменю sTGWS](#подменю-stgws) — самобалансирующийся прокси с автоподбором домена. |
|
||
| **2** | Установить / Обновить / Удалить TG WS Proxy SOCKS5 | Скачивает бинарник `tg-ws-proxy-go` под архитектуру, создаёт `init.d`-сервис (порт 2080, флаги `--cf-proxy --cf-proxy-first --cf-balance`), запускает. |
|
||
| **3** | Установить / Обновить / Удалить TG WS Proxy Rust | Скачивает и распаковывает архив `tg-ws-proxy-rs` под архитектуру, создаёт `init.d`-сервис (порт 2443, генерируется случайный `secret`, флаги `--default-domains --cf-balance --cf-priority`), запускает. |
|
||
| **4** | Установить / Обновить / Удалить TG WS Proxy MTProto | Устанавливает через `opkg`/`apk` официальный пакет `tg-ws-proxy` (spatiumstas), генерирует и сохраняет `SECRET` в `/etc/tg-ws-proxy/secret.conf`, включает и запускает службу. |
|
||
| **5** | Удалить все TG WS Proxy | Останавливает/отключает все четыре реализации разом и полностью зачищает их файлы, конфиги и пакеты. |
|
||
| **6** | Перезапустить все TG WS Proxy | Перезапускает все установленные `init.d`-службы TG-прокси разом и показывает итоговый статус (какие именно запущены). |
|
||
|
||
После установки любой из реализаций скрипт выводит готовую строку подключения для Telegram (`tg://proxy?server=...` / `tg://socks?server=...`) с реальным IP роутера, портом и секретом/ключом.
|
||
|
||
#### Подменю sTGWS
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Установить / Обновить / Переустановить | Запускает официальный установщик sTGWS (`gitlab.com/xyzmean/brb`), затем до 60 секунд ожидает подбора рабочего домена и сообщает выбранный домен. |
|
||
| **2** | Удалить | Останавливает и отключает службу `tgws`, удаляет пакет и конфигурацию. |
|
||
| **3** | Перезапустить | Перезапускает службу `tgws` и выводит текущий подобранный домен. |
|
||
| **4** | Перенастроить домен | Запускает `tgws pick` — принудительный подбор нового рабочего домена, перезапускает службу. |
|
||
|
||
---
|
||
|
||
## Меню DNS over HTTPS
|
||
|
||
Пункт 7 главного меню — управление пакетом `https-dns-proxy` и готовыми пресетами DoH-серверов (полезно как дополнение к обходу блокировок и для сокрытия DNS-запросов от DPI/провайдера).
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Установить / Удалить DNS over HTTPS | Ставит (или полностью удаляет, включая связанные записи в `dhcp`-конфиге) пакеты `https-dns-proxy` + `luci-app-https-dns-proxy`. Установка блокируется, если обнаружен конфликтующий NetShift. |
|
||
| **2** | Настроить Xbox | Резолвер `xbox-dns.ru`. |
|
||
| **3** | Настроить Comss | Резолвер `dns.comss.one` со своими bootstrap-адресами. |
|
||
| **4** | Настроить Google | Резолвер `dns.google` (8.8.8.8/8.8.4.4). |
|
||
| **5** | Настроить Quad 9 | Резолвер `dns.quad9.net` (9.9.9.9). |
|
||
| **6** | Настроить XyZ DNS | Резолвер `dns.yo1nk.app`. |
|
||
| **7** | Настроить GeoHide | Подменю выбора региона сервера: **RU** / **EU** / **US**. |
|
||
| **8** | Настроить Cloudflare | Резолвер `cloudflare-dns.com` (1.1.1.1/1.0.0.1). |
|
||
| **9** | Настроить dns.dns-ai.ru | Российский DoH-резолвер. |
|
||
| **10** | Настроить dns.malw.link | Альтернативный резолвер. |
|
||
| **11** | Настроить dns.astracat.ru | Альтернативный резолвер. |
|
||
| **12** | Настроить dns.mafioznik.xyz | Альтернативный резолвер. |
|
||
| **13** | Настроить dns.malw.link (CloudFlare) | Тот же malw.link, но через Cloudflare Gateway. |
|
||
| **14** | Настроить dns.nullsproxy.com | Резолвер Supercell-совместимого прокси. |
|
||
| **15** | Вернуть настройки по умолчанию | Возвращает стандартную конфигурацию с двумя резолверами: Cloudflare (порт 5053) + Google (порт 5054). |
|
||
|
||
Каждая настройка полностью перезаписывает файл `/etc/config/https-dns-proxy`, применяя единый набор базовых опций (форс DNS через порты 53/853, канареечные DNS-запросы Apple/Mozilla, слушающий адрес 127.0.0.1) плюс выбранный резолвер, после чего перезапускает `https-dns-proxy` и `dnsmasq`.
|
||
|
||
---
|
||
|
||
## Меню управления доменами в hosts
|
||
|
||
Пункт 8 главного меню — точечное «прошивание» IP-адресов проблемных сервисов напрямую в `/etc/hosts`, в обход DNS-блокировок/резолва.
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **0** | nalog.ru | Добавляет/удаляет IP личного кабинета налоговой (`lkfl2.nalog.ru`, `lknpd.nalog.ru`). |
|
||
| **1** | rutor.info | Добавляет/удаляет IP торрент-трекера RuTor. |
|
||
| **2** | ntc.party | Добавляет/удаляет IP форума ntc.party. |
|
||
| **3** | Instagram & Facebook | Добавляет/удаляет большой блок IP основных доменов Meta*. |
|
||
| **4** | lib.rus.ec | Добавляет/удаляет IP библиотеки Флибуста-подобного сервиса. |
|
||
| **5** | AI сервисы | Добавляет/удаляет крупный блок IP для ChatGPT, Gemini, Grok, Claude, Copilot, DeepL, ElevenLabs, Windsurf, Manus, Notion, AI Studio и др. (через общий IP `45.155.204.190`). |
|
||
| **6** | Twitch | Добавляет/удаляет IP `usher.ttvnw.net`/`gql.twitch.tv`. |
|
||
| **7** | Telegram Web | Добавляет/удаляет большой блок IP веб-версии Telegram. |
|
||
| **8** | Spotify | Добавляет/удаляет базовый блок IP Spotify. |
|
||
| **9** | Spotify extended | Расширенный блок IP Spotify (больше доменов CDN/аналитики). |
|
||
| **10** | Supercell | IP для игр Clash of Clans/Royale, Brawl Stars, Squad Busters и др. |
|
||
| **11** | githubusercontent.com | IP для `raw.githubusercontent.com`, `objects.githubusercontent.com`, `avatars*.githubusercontent.com` и т.д. |
|
||
| **12** | github.com | IP для основного домена и статики GitHub. |
|
||
| **13** | Ubisoft | IP игровых/лаунчер-серверов Ubisoft. |
|
||
| **14** | tapeop.dev | IP небольшого нишевого сайта. |
|
||
| **15** | картинки Roblox | IP CDN картинок Roblox (`tr.rbxcdn.com`). |
|
||
| **16** | updates.discord.com | IP серверов обновлений Discord. |
|
||
| **17** | Добавить/удалить **все** домены | Массовое включение/выключение сразу нескольких основных блоков (`AI`, Instagram, ntc.party, lib.rus.ec, TelegramWeb, Twitch, Supercell, Spotify). |
|
||
| **18** | Заменить hosts на GeoHide hosts | Подменю выбора региона: **RU** / **EU** / **US** — полностью заменяет `/etc/hosts` готовым списком проекта GeoHideDNS под выбранный регион. |
|
||
| **19** | Заменить hosts на Mafioznik hosts | Полная замена `/etc/hosts` готовым списком проекта Mafioznik. |
|
||
| **20** | Заменить hosts на Malw.link hosts | Полная замена `/etc/hosts` готовым списком проекта Malw.link. |
|
||
| **21** | Восстановить hosts | Полностью очищает `/etc/hosts` и возвращает минимальный стандартный файл (localhost, ip6-loopback и т.д.). |
|
||
|
||
Каждый переключаемый пункт помечается зелёным (●) — если добавлен, автоматически определяется через сверку строк файла. После любого изменения перезапускается `dnsmasq`, чтобы правки вступили в силу.
|
||
|
||
---
|
||
|
||
## Системное меню
|
||
|
||
Пункт **m** главного меню — вспомогательные и диагностические функции роутера, напрямую не относящиеся к DPI-обходу.
|
||
|
||
| Пункт | Действие | Результат |
|
||
|---|---|---|
|
||
| **1** | Системная информация | Выводит подробный отчёт: модель роутера, архитектура, версия OpenWrt, свободное место в `/tmp` и `/root`, список пользовательских пакетов (сгруппированных по базовому имени), состояние Flow Offloading (SW/HW/FIX), настроенные DoH-резолверы (или проверку доступности GitHub API, если DoH не установлен), проверку доступности провайдера/IPv4/IPv6 (пинг google.com), текущую применённую стратегию Zapret, содержимое NFQWS-портов, список доменов в `hosts`, и итоговую проверку доступности ~35 контрольных доменов (двумя колонками). |
|
||
| **2** | Активировать / Удалить доступ к скрипту из браузера | Устанавливает (или удаляет) пакет `ttyd` + `luci-app-ttyd`, перенастраивает его команду запуска на автоматический вход в это же меню (`sh /usr/bin/zms`), после чего меню доступно по адресу `http://<IP роутера>:7681` прямо из браузера, без SSH. |
|
||
| **3** | Включить / Отключить блокировку QUIC | Добавляет (или удаляет) firewall-правила `Block_UDP_80`/`Block_UDP_443`, полностью блокирующие исходящий UDP-трафик на порты 80/443 — форсирует браузеры откатываться на TCP (обход некоторых видов DPI, которые лучше блокируют QUIC). |
|
||
| **4** | Меню выбора зеркала OpenWrt | Список из 9 региональных зеркал репозитория пакетов (Infra OpenWrt, Бразилия, Китай, Франция, Италия, Марокко, США, Германия, зеркало по умолчанию) — проверяет доступность выбранного зеркала, подменяет адрес в `distfeeds.conf`/`repositories.d`, тестово обновляет список пакетов; при ошибке — автоматически откатывает изменение. |
|
||
| **5** | Запустить blockcheck | Останавливает Zapret и запускает встроенный диагностический скрипт `blockcheck.sh` из комплекта Zapret — интерактивный подбор рабочих параметров DPI-обхода «с нуля» на основе живого сетевого теста; по завершении Zapret снова запускается. |
|
||
| **6** | Удалить Zapret & Zapret2 | Полная деинсталляция **обоих** движков сразу: останавливает и убивает все связанные процессы (в т.ч. `nfqws`), удаляет пакеты, конфиги, временные файлы, логи, резервные копии, cron-записи и таблицы nftables `zapret`/`zapret2`. |
|
||
| **7** | Сделать / Удалить резервную копию настроек Zapret | Архивирует папку `/opt/zapret` и файл конфигурации в `/opt/zapret_backup/zapret.tar.gz`, сохраняет дату и размер бэкапа. Если бэкап уже существует — пункт превращается в «Удалить резервную копию». |
|
||
| **8** (появляется, если есть бэкап) | Восстановить настройки Zapret из резервной копии | Останавливает Zapret, полностью пересобирает `/opt/zapret` и конфиг из сохранённого архива, перезапускает службу. |
|
||
| **9** (условный) | Включить / Выключить IPv6 в Zapret | Если IPv6 сейчас включён в конфиге — выключает его. Если выключен — сначала проверяет реальную доступность IPv6 (`ping -6 google.com`); включает опцию только при успешной проверке, иначе отговаривает пользователя (пункт не появится в меню, если IPv6 недоступен). |
|
||
| **0** (условный, появляется при включённом Flow Offloading) | Применить / Отключить FIX для Flow Offloading | Модифицирует шаблон правил firewall4 (`ruleset.uc`), добавляя условие `ct original packets ge 30` перед аппаратной разгрузкой соединений — без этого исправления быстрая аппаратная разгрузка «обходит» Zapret и блокировка возвращается после нескольких пакетов. |
|
||
| **i** | Меню исключений IP из Zapret | Открывает [Exclusions_menu](#меню-исключений-ip) — точечное отключение обработки Zapret для конкретных устройств локальной сети. |
|
||
| **e** | Включить / Выключить expert mode | Снимает ограничение «нельзя иметь Zapret и Zapret2 одновременно», открывает доступ к раздельному запуску/остановке (`s1`/`s2` в главном меню) обоих движков сразу. |
|
||
| **y** | Установить пакеты из `/root/` | Открывает [PAKET_INSTALL](#установка-пакетов-из-root) — ручную установку локально размещённых `.ipk`/`.apk`-файлов в заданном пользователем порядке. |
|
||
|
||
### Меню исключений IP
|
||
|
||
Позволяет **исключить** конкретные устройства сети из обработки Zapret (например, IP-камеры, консоли, IoT-устройства, которые ломаются от DPI-обхода).
|
||
|
||
- Автоматически сканирует таблицу DHCP-аренд (`/tmp/dhcp.leases`) и ARP-таблицу (`/proc/net/arp`) для интерфейса LAN, показывает список найденных устройств с их IP и (по возможности) сетевым именем.
|
||
- Устройства, уже добавленные в исключения, помечаются красным индикатором, остальные — зелёным.
|
||
- **Ввод номера(ов)** через пробел — переключает статус исключения для выбранных устройств.
|
||
- **a** — добавить IP вручную (для устройств, которых нет в текущей DHCP/ARP таблице).
|
||
- **c** — очистить все исключения разом.
|
||
- **r** — принудительно пересканировать сеть (ping-сканирование всей подсети `/24`) и обновить список обнаруженных устройств.
|
||
|
||
Технически список исключённых IP записывается в собственный `custom.d`-скрипт Zapret (`20-script.sh`), который добавляет `nft`-правило, помечающее пакеты от указанных адресов специальной меткой, — Zapret не обрабатывает такие пакеты.
|
||
|
||
### Установка пакетов из /root/
|
||
|
||
- Сканирует `/root` на файлы `*.ipk` (или `*.apk` — в зависимости от системы пакетов роутера) и выводит их пронумерованный список.
|
||
- Пользователь вводит порядок установки числами через пробел (например `2 1 3`) — пакеты ставятся именно в указанной последовательности (важно для зависимостей).
|
||
- Пункт **0** переключает подробный вывод процесса установки (`ВКЛ`/`ВЫКЛ`) — по умолчанию установка идёт «тихо».
|
||
|
||
---
|
||
|
||
## Прочие пункты главного меню
|
||
|
||
- **f — Удалить → установить → настроить Zapret**: комплексная функция «под ключ» (`zapret_key`). Выполняет: 1) удаление текущей установки Zapret, 2) чистую установку последней версии, 3) применение автовыбранной актуальной стратегии (`STR_VERSION_AUTOINSTALL`), 4) массовое добавление проблемных доменов в `/etc/hosts` (все блоки из `ALL_BLOCKS`), 5) автоматическую настройку Discord-обхода со скриптом `50-stun4all`, 6) настройку игровой стратегии — всё без единого дополнительного вопроса.
|
||
- **m — Системное меню**: см. раздел [Системное меню](#системное-меню).
|
||
- **s / s1 / s2 — Запуск/остановка**: мгновенный toggle службы (служб) без переустановки — полезно, если нужно временно вернуть «чистый» интернет без DPI-обхода (например, для диагностики).
|
||
- **Enter — Выход**: завершает выполнение скрипта, ничего не меняя.
|
||
|
||
---
|
||
|
||
## Дисклеймер
|
||
|
||
Скрипт предназначен для образовательных и диагностических целей на устройствах, находящихся в собственности или под управлением пользователя. Все действия (изменение сетевых правил, DNS, firewall, установка сторонних пакетов) выполняются **на свой страх и риск** — перед серьёзными изменениями рекомендуется сделать резервную копию конфигурации роутера (Системное меню → пункт 7, а также штатный бэкап OpenWrt).
|