mirror of
https://github.com/necronicle/z2k.git
synced 2026-04-28 11:30:30 +00:00
КРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ для пользователей: - ⚠️ Проект в активной разработке (пре-альфа) - ❌ НЕ устанавливайте на 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>
403 lines
14 KiB
Markdown
403 lines
14 KiB
Markdown
# 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
|