docs: update README for alpha and Keenetic/Entware install

This commit is contained in:
necronicle 2026-01-30 00:07:19 +03:00
parent 00889a9d67
commit 396f512bbe

414
README.md
View file

@ -1,402 +1,110 @@
# z2k v2.0 - Zapret2 для Keenetic (PRE-ALPHA)
# z2k v2.0 - Zapret2 для Keenetic (ALPHA TEST)
> ## ⚠️ ВНИМАНИЕ: ПРОЕКТ В АКТИВНОЙ РАЗРАБОТКЕ
>
> **Это пре-альфа версия! НЕ ИСПОЛЬЗУЙТЕ в production!**
>
> - ❌ **НЕ УСТАНАВЛИВАЙТЕ** на основной роутер
> - ❌ **НЕ ИСПОЛЬЗУЙТЕ** для критичных сервисов
> - ⚠️ Код нестабилен и может содержать баги
> - ⚠️ API и структура могут кардинально измениться
> - ⚠️ Нет гарантий работоспособности
> - 🚧 Активная разработка и рефакторинг
>
> **Это сырая наработка для тестирования концепции!**
>
> Если хотите стабильное решение - используйте [zapret4rocket](https://github.com/IndeecFOX/zapret4rocket)
Проект в активной разработке. Статус: alpha test. Возможны баги и изменения без обратной совместимости.
Если нужно максимально простое и проверенное решение, посмотрите также: https://github.com/IndeecFOX/zapret4rocket
---
**Модульный установщик zapret2 для роутеров Keenetic с Entware (PRE-ALPHA)**
## Что это
Экспериментальная реализация zapret2 специально для роутеров Keenetic с модульной архитектурой, автотестами по категориям (Z4R метод) и поддержкой множественных стратегий.
z2k - модульный установщик zapret2 для роутеров Keenetic с Entware.
Цель проекта: максимально упростить установку zapret2 на Keenetic и дать рабочий набор стратегий с автоподбором (autocircular) и поддержкой IPv6 там, где это возможно.
---
## 🎯 Особенности
## Особенности (актуально)
- **🔧 Модульная архитектура** - 6 независимых модулей (utils, install, strategies, config, menu, discord)
- **⚡ Pre-built бинарники** - быстрая установка без компиляции (как в zapret4rocket)
- **📊 458 стратегий** - готовые стратегии из реального blockcheck2 тестирования
- **🤖 Гибридный режим** - автотест TOP-20 + ручной выбор из меню
- **🎮 Discord voice/video** - точная копия подхода zapret4rocket с расширенными UDP портами
- **📋 Списки доменов** - автоматическая загрузка из zapret4rocket (z4r branch)
- **🔄 Автообновление** - скрипт всегда скачивает последние версии модулей
- **💾 Backup/Restore** - резервное копирование конфигурации
- **🎨 Интерактивное меню** - 9 опций для полного управления
- Установка zapret2 (openwrt-embedded релиз) без компиляции, с проверкой работоспособности `nfqws2`
- Генерация и применение стратегий под категории:
- RKN (TCP/TLS)
- YouTube TCP (TLS)
- Googlevideo (TCP/TLS)
- YouTube QUIC (UDP/443) по доменному списку
- Discord (TCP/UDP) отдельными профилями
- Hostlist и autohostlist:
- hostlist для выборочного применения (не "на весь интернет")
- поддержка `--hostlist-auto` для TCP-профилей
- IPv6:
- автоопределение доступности IPv6 на роутере и включение правил (iptables/ip6tables), если возможно
- если IPv6 не поддерживается/не настроен - IPv6 правила не включаются
- Списки доменов устанавливаются автоматически (источник: zapret4rocket)
---
## 📦 Установка
## Установка
> ⚠️ **ПОВТОРЯЕМ: Это PRE-ALPHA!** Устанавливайте только для тестирования и разработки. Не используйте на production роутере!
### 1) Требования к прошивке Keenetic (обязательно)
### Быстрая установка (одной командой)
Перед установкой zapret2 в веб-интерфейсе Keenetic нужно установить компоненты:
1) "Протокол IPv6"
2) "Модули ядра подсистемы Netfilter" (появляется только после выбора компонента "Протокол IPv6")
### 2) Подготовка USB и установка Entware (обязательно)
Подготовьте USB-накопитель и установите Entware по официальной инструкции Keenetic:
https://help.keenetic.com/hc/ru/articles/360021214160-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F-Entware-%D0%BD%D0%B0-USB-%D0%BD%D0%B0%D0%BA%D0%BE%D0%BF%D0%B8%D1%82%D0%B5%D0%BB%D1%8C
После установки Entware выполните обновление индекса пакетов и установите зависимости:
```bash
opkg update
opkg install coreutils-sort curl grep gzip ipset iptables kmod_ndms xtables-addons_legacy
```
### 3) Установка z2k (Zapret2 для Keenetic)
```bash
# НЕ РЕКОМЕНДУЕТСЯ! Только для тестирования!
curl -fsSL https://raw.githubusercontent.com/necronicle/z2k/test/z2k.sh | sh
```
### Что происходит при установке:
---
1. **Проверка окружения** - Entware, архитектура, свободное место
2. **Загрузка модулей** - скачивание lib/*.sh с GitHub
3. **Парсинг стратегий** - генерация strategies.conf из strats_new2.txt (458 стратегий)
4. **9-шаговая установка zapret2**:
- Обновление пакетов
- Установка зависимостей (runtime библиотеки)
- Загрузка модулей ядра
- **Установка zapret2** с pre-built бинарниками
- Проверка установки
- **Загрузка списков доменов** из zapret4rocket
- Отключение Hardware NAT
- **Создание init скрипта** с маркерами
- Финализация
5. **Автотест TOP-20** - тестирование лучших стратегий
6. **Применение стратегии** - автоматический выбор лучшей
## Что делает установщик (в общих чертах)
**Время установки:** ~3-5 минут (благодаря pre-built бинарникам)
- Проверяет окружение (Entware, зависимости, архитектуру).
- Устанавливает zapret2 в `/opt/zapret2` и ставит init-скрипт `/opt/etc/init.d/S99zapret2`.
- Скачивает/обновляет доменные списки.
- Генерирует и применяет дефолтные стратегии с автоподбором (autocircular) для ключевых категорий.
- Включает IPv6 правила, если IPv6 реально доступен и доступен backend (ip6tables/nft).
---
## 🚀 Использование
## Использование
### Команды z2k.sh
### Повторный запуск установщика
```bash
# Установка
sh z2k.sh install
# Интерактивное меню
sh z2k.sh menu
# Статус системы
sh z2k.sh status
# Обновление z2k
sh z2k.sh update
# Удаление
sh z2k.sh uninstall
# Справка
sh z2k.sh help
curl -fsSL https://raw.githubusercontent.com/necronicle/z2k/test/z2k.sh | sh
```
### Интерактивное меню
```
╔═══════════════════════════════════════════════════╗
║ z2k - Zapret2 для Keenetic (PRE-ALPHA) ║
╚═══════════════════════════════════════════════════╝
[1] Установить/Переустановить zapret2
[2] Выбрать стратегию по номеру (1-458)
[3] Автотест стратегий
[4] Управление сервисом
[5] Просмотр текущей стратегии
[6] Обновить списки доменов
[7] Настроить Discord (голос)
[8] Резервная копия/Восстановление
[9] Удалить zapret2
[0] Выход
```
---
## 📚 Документация
### Структура проекта
```
z2k/
├── z2k.sh # Bootstrap скрипт (300 строк)
├── strats_new2.txt # 458 стратегий из blockcheck2
├── lib/
│ ├── utils.sh # Утилиты, проверки (370 строк)
│ ├── install.sh # 9-шаговая установка (720 строк)
│ ├── strategies.sh # Управление стратегиями (450 строк)
│ ├── config.sh # Управление конфигом (400 строк)
│ ├── menu.sh # Интерактивное меню (420 строк)
│ └── discord.sh # Discord voice/video (300 строк)
└── README.md # Документация
```
**Всего:** ~3000 строк кода
### Архитектура
#### 1. Bootstrap (z2k.sh)
Легковесный entry point с автозагрузкой модулей:
- Проверка окружения (Entware, curl, архитектура)
- Скачивание модулей в `/tmp/z2k/lib/`
- Source всех модулей
- Обработка аргументов командной строки
#### 2. Стратегии (lib/strategies.sh)
Формат хранения - `strategies.conf`:
```
# NUMBER|TYPE|PARAMETERS
1|http|--payload=http_req --lua-desync=http_methodeol
2|http|--lua-desync=syndata --payload=http_req --lua-desync=multisplit
341|https|--lua-desync=syndata --payload=tls_client_hello --lua-desync=multisplit
```
**Функции:**
- Парсинг strats_new2.txt → strategies.conf
- Получение стратегии по номеру/типу
- Генерация multi-profile (TCP + UDP)
- Тестирование с оценкой 0-5
- Автотест TOP-20
- Безопасное применение с откатом
#### 3. Init скрипт (/opt/etc/init.d/S99zapret2)
**Маркеры для инжекции:**
```bash
# STRATEGY_MARKER_START
# Основная стратегия инжектируется сюда
# STRATEGY_MARKER_END
# DISCORD_MARKER_START
# Discord конфигурация (если включена)
# DISCORD_MARKER_END
```
**Multi-profile пример:**
```bash
# TCP Profile
--filter-tcp=443
--filter-l7=tls
--payload=tls_client_hello
--lua-desync=fake:blob=fake_default_tls:repeats=6
--new
# UDP Profile (QUIC)
--filter-udp=443
--filter-l7=quic
--payload=quic_initial
--lua-desync=fake:blob=fake_default_quic:repeats=4
```
#### 4. Списки доменов
Источник: https://github.com/IndeecFOX/zapret4rocket/tree/z2r/lists
**Файлы:**
- `discord.txt` - домены Discord (9 доменов)
- `youtube.txt` - домены YouTube
- `youtube-xxl.txt` - расширенный список YouTube
- `custom.txt` - пользовательские домены
**Путь:** `/opt/zapret2/lists/`
#### 5. Discord voice/video
**Порты:**
- TCP 443 - текстовые чаты
- UDP 443, 50000-50099 - голос/видео
- UDP 1400, 3478-3481, 5349 - WebRTC/STUN
**Реализация:**
- Отдельный nfqws2 процесс (qnum=201)
- TCP стратегия из strategies.conf (выбор пользователя)
- UDP фиксированная стратегия (fake + multidisorder)
- Список доменов: discord.txt
---
## 🎮 Режимы тестирования
### 1. TOP-20 (автоматический)
Тестирует 20 наиболее эффективных стратегий:
- Простые fake: #4, #7, #11
- Multisplit: #21, #23, #24, #27, #30
- HTTPS базовые: #341, #342, #345, #350
- AutoTTL: #355, #360, #365, #370
- Комбинации: #380, #390, #400, #410
**Время:** ~2 минуты
**Оценка:** 0-5 баллов (5 доменов)
### 2. Ручной выбор
Выбор стратегии по номеру (1-458) через меню:
- Показ параметров
- Применение с тестом
- Откат при неудаче
### 3. Диапазон
Тестирование заданного диапазона (например, 1-50)
### 4. По типу
- Все HTTPS стратегии (341-458) - ~10 мин
---
## 📁 Пути установки
```
/opt/zapret2/ # Весь репозиторий zapret2
├── nfq2/nfqws2 # Бинарник
├── lua/ # Lua библиотеки (6 файлов)
├── files/fake/ # Fake packets (~45 файлов)
├── docs/ # Документация
└── lists/ # Списки доменов
├── discord.txt
├── youtube.txt
├── youtube-xxl.txt
└── custom.txt
/opt/etc/zapret2/ # Конфигурация
├── strategies.conf # База стратегий (458)
├── current_strategy # Номер текущей стратегии
└── backups/ # Резервные копии
/opt/etc/init.d/S99zapret2 # Init скрипт
```
---
## 🔧 Управление сервисом
### Управление сервисом zapret2
```bash
# Запуск
/opt/etc/init.d/S99zapret2 start
# Остановка
/opt/etc/init.d/S99zapret2 stop
# Перезапуск
/opt/etc/init.d/S99zapret2 restart
# Статус
/opt/etc/init.d/S99zapret2 status
```
---
## ❓ FAQ
### Какая разница между zapret1 и zapret2?
**zapret2** - это новая версия:
- Использует `--lua-desync=` вместо `--dpi-desync=`
- Все стратегии - Lua функции
- Встроенные blob'ы: `fake_default_tls`, `fake_default_quic`
- Multi-profile поддержка с `--new`
### Как выбрать лучшую стратегию?
1. Запустить автотест TOP-20 (рекомендуется)
2. Если не помогло - протестировать диапазон
3. Для конкретных сервисов (Discord, YouTube) - выбрать специализированные стратегии
### Почему так много стратегий (458)?
Это реальные стратегии из blockcheck2 тестирования на rutracker.org. Разные ISP требуют разных стратегий. TOP-20 покрывает ~80% случаев.
### Как настроить Discord voice?
### Обновление списков вручную
```bash
sh z2k.sh menu
# Выбрать [7] Настроить Discord
# Выбрать стратегию (рекомендуется текущая)
# Готово - голос/видео работают
```
### Что делать если стратегия не работает?
1. Попробовать другую стратегию из TOP-20
2. Запустить полный тест всех стратегий
3. Проверить логи: `tail -f /opt/var/log/zapret2.log`
4. Проверить процессы: `ps | grep nfqws2`
### Как обновить списки доменов?
```bash
sh z2k.sh menu
# Выбрать [6] Обновить списки доменов
```
Или вручную:
```bash
curl -fsSL https://raw.githubusercontent.com/IndeecFOX/zapret4rocket/z2r/lists/russia-discord.txt \
-o /opt/zapret2/lists/discord.txt
/opt/zapret2/ipset/get_config.sh
```
---
## 🏗️ Сборка zapret2 (детали)
## Примечания
### ARM64 патч для Entware
Старые заголовки Entware не содержат `AUDIT_ARCH_AARCH64`. Патч добавляет:
```c
#define EM_AARCH64 183
#define __AUDIT_ARCH_64BIT 0x80000000
#define __AUDIT_ARCH_LE 0x40000000
#define AUDIT_ARCH_AARCH64 (EM_AARCH64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
```
### Симлинки библиотек
Entware не имеет `-dev` пакетов, создаются симлинки:
```bash
ln -sf libmnl.so.0 libmnl.so
ln -sf libnetfilter_queue.so.1 libnetfilter_queue.so
ln -sf libnfnetlink.so.0 libnfnetlink.so
```
- Если вы используете IPv6 в сети, убедитесь что он включен в прошивке (см. требования выше). Установщик пытается включить IPv6 правила автоматически, но при отсутствии IPv6 маршрута/адреса IPv6 будет отключен.
- Если в системе нет `cron`, автообновление списков может быть недоступно - обновляйте списки вручную.
---
## 🙏 Благодарности
## Лицензия
- **bol-van** - автор zapret2
- **IndeecFOX** - zapret4rocket (z4r) - референсная реализация
- **Сообщество Keenetic** - тестирование и feedback
- **blockcheck2** - инструмент для генерации стратегий
MIT
---
## 📝 Лицензия
MIT License
---
## 🔗 Ссылки
- **zapret2 upstream:** https://github.com/bol-van/zapret2
- **zapret4rocket (z4r):** https://github.com/IndeecFOX/zapret4rocket
- **Обсуждение стратегий:** https://github.com/remittor/zapret-openwrt/discussions/562
- **Документация zapret2:** https://github.com/bol-van/zapret2/blob/master/docs/manual.md
---
## 📞 Поддержка
**Issues:** https://github.com/necronicle/z2k/issues
---
**z2k v2.0** - © 2026 necronicle
Powered by zapret2 by bol-van