mirror of
https://github.com/necronicle/z2k.git
synced 2026-04-28 03:20:25 +00:00
docs: update README for alpha and Keenetic/Entware install
This commit is contained in:
parent
00889a9d67
commit
396f512bbe
1 changed files with 61 additions and 353 deletions
414
README.md
414
README.md
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue