14 KiB
z2k v2.0 - Zapret2 для Keenetic (PRE-ALPHA)
⚠️ ВНИМАНИЕ: ПРОЕКТ В АКТИВНОЙ РАЗРАБОТКЕ
Это пре-альфа версия! НЕ ИСПОЛЬЗУЙТЕ в production!
- ❌ НЕ УСТАНАВЛИВАЙТЕ на основной роутер
- ❌ НЕ ИСПОЛЬЗУЙТЕ для критичных сервисов
- ⚠️ Код нестабилен и может содержать баги
- ⚠️ API и структура могут кардинально измениться
- ⚠️ Нет гарантий работоспособности
- 🚧 Активная разработка и рефакторинг
Это сырая наработка для тестирования концепции!
Если хотите стабильное решение - используйте 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 роутере!
Быстрая установка (одной командой)
# НЕ РЕКОМЕНДУЕТСЯ! Только для тестирования!
curl -fsSL https://raw.githubusercontent.com/necronicle/z2k/test/z2k.sh | sh
Что происходит при установке:
- Проверка окружения - Entware, архитектура, свободное место
- Загрузка модулей - скачивание lib/*.sh с GitHub
- Парсинг стратегий - генерация strategies.conf из strats.txt (458 стратегий)
- 9-шаговая установка zapret2:
- Обновление пакетов
- Установка зависимостей (runtime библиотеки)
- Загрузка модулей ядра
- Установка zapret2 с pre-built бинарниками
- Проверка установки
- Загрузка списков доменов из zapret4rocket
- Отключение Hardware NAT
- Создание init скрипта с маркерами
- Финализация
- Автотест TOP-20 - тестирование лучших стратегий
- Применение стратегии - автоматический выбор лучшей
Время установки: ~3-5 минут (благодаря pre-built бинарникам)
🚀 Использование
Команды z2k.sh
# Установка
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)
Маркеры для инжекции:
# STRATEGY_MARKER_START
# Основная стратегия инжектируется сюда
# STRATEGY_MARKER_END
# DISCORD_MARKER_START
# Discord конфигурация (если включена)
# DISCORD_MARKER_END
Multi-profile пример:
# 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- домены YouTubeyoutube-xxl.txt- расширенный список YouTubecustom.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 скрипт
🔧 Управление сервисом
# Запуск
/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
Как выбрать лучшую стратегию?
- Запустить автотест TOP-20 (рекомендуется)
- Если не помогло - протестировать диапазон
- Для конкретных сервисов (Discord, YouTube) - выбрать специализированные стратегии
Почему так много стратегий (458)?
Это реальные стратегии из blockcheck2 тестирования на rutracker.org. Разные ISP требуют разных стратегий. TOP-20 покрывает ~80% случаев.
Как настроить Discord voice?
sh z2k.sh menu
# Выбрать [7] Настроить Discord
# Выбрать стратегию (рекомендуется текущая)
# Готово - голос/видео работают
Что делать если стратегия не работает?
- Попробовать другую стратегию из TOP-20
- Запустить полный тест HTTP стратегий
- Проверить логи:
tail -f /opt/var/log/zapret2.log - Проверить процессы:
ps | grep nfqws2
Как обновить списки доменов?
sh z2k.sh menu
# Выбрать [6] Обновить списки доменов
Или вручную:
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. Патч добавляет:
#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 пакетов, создаются симлинки:
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