z2k/README.md
necronicle 3f5e8a3b8d Добавлено предупреждение: PRE-ALPHA версия
КРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ для пользователей:
- ⚠️ Проект в активной разработке (пре-альфа)
-  НЕ устанавливайте на production роутер
-  НЕ используйте для критичных сервисов
- 🚧 Это сырая наработка для тестирования концепции

Изменения:
- README.md: добавлен большой WARNING блок вверху
- README.md: обновлены все упоминания "Zapret2 для Keenetic"
- z2k.sh: обновлен banner с предупреждением
- lib/menu.sh: обновлен заголовок меню

Рекомендация: используйте стабильный zapret4rocket

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 12:10:10 +03:00

403 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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.

# z2k v2.0 - Zapret2 для Keenetic (PRE-ALPHA)
> ## ⚠️ ВНИМАНИЕ: ПРОЕКТ В АКТИВНОЙ РАЗРАБОТКЕ
>
> **Это пре-альфа версия! НЕ ИСПОЛЬЗУЙТЕ в production!**
>
> - ❌ **НЕ УСТАНАВЛИВАЙТЕ** на основной роутер
> - ❌ **НЕ ИСПОЛЬЗУЙТЕ** для критичных сервисов
> - ⚠️ Код нестабилен и может содержать баги
> - ⚠️ API и структура могут кардинально измениться
> - ⚠️ Нет гарантий работоспособности
> - 🚧 Активная разработка и рефакторинг
>
> **Это сырая наработка для тестирования концепции!**
>
> Если хотите стабильное решение - используйте [zapret4rocket](https://github.com/IndeecFOX/zapret4rocket)
---
**Модульный установщик zapret2 для роутеров Keenetic с Entware (PRE-ALPHA)**
Экспериментальная реализация zapret2 специально для роутеров Keenetic с модульной архитектурой, автотестами по категориям (Z4R метод) и поддержкой множественных стратегий.
---
## 🎯 Особенности
- **🔧 Модульная архитектура** - 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 опций для полного управления
---
## 📦 Установка
> ⚠️ **ПОВТОРЯЕМ: Это PRE-ALPHA!** Устанавливайте только для тестирования и разработки. Не используйте на production роутере!
### Быстрая установка (одной командой)
```bash
# НЕ РЕКОМЕНДУЕТСЯ! Только для тестирования!
curl -fsSL https://raw.githubusercontent.com/necronicle/z2k/master/z2k.sh | sh
```
### Что происходит при установке:
1. **Проверка окружения** - Entware, архитектура, свободное место
2. **Загрузка модулей** - скачивание lib/*.sh с GitHub
3. **Парсинг стратегий** - генерация strategies.conf из strats.txt (458 стратегий)
4. **9-шаговая установка zapret2**:
- Обновление пакетов
- Установка зависимостей (runtime библиотеки)
- Загрузка модулей ядра
- **Установка zapret2** с pre-built бинарниками
- Проверка установки
- **Загрузка списков доменов** из zapret4rocket
- Отключение Hardware NAT
- **Создание init скрипта** с маркерами
- Финализация
5. **Автотест TOP-20** - тестирование лучших стратегий
6. **Применение стратегии** - автоматический выбор лучшей
**Время установки:** ~3-5 минут (благодаря pre-built бинарникам)
---
## 🚀 Использование
### Команды 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
```
### Интерактивное меню
```
╔═══════════════════════════════════════════════════╗
║ 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.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.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. По типу
- Все HTTP стратегии (1-340) - ~30 мин
- Все 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 скрипт
```
---
## 🔧 Управление сервисом
```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. Запустить полный тест HTTP стратегий
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
```
---
## 🏗️ Сборка 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
```
---
## 🙏 Благодарности
- **bol-van** - автор zapret2
- **IndeecFOX** - zapret4rocket (z4r) - референсная реализация
- **Сообщество Keenetic** - тестирование и feedback
- **blockcheck2** - инструмент для генерации стратегий
---
## 📝 Лицензия
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