z2k/README.md
2026-01-22 22:59:07 +03:00

14 KiB
Raw Blame History

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

Что происходит при установке:

  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 бинарникам)


🚀 Использование

Команды 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_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)

Маркеры для инжекции:

# 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 - домены 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 скрипт

🔧 Управление сервисом

# Запуск
/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?

sh z2k.sh menu
# Выбрать [7] Настроить Discord
# Выбрать стратегию (рекомендуется текущая)
# Готово - голос/видео работают

Что делать если стратегия не работает?

  1. Попробовать другую стратегию из TOP-20
  2. Запустить полный тест всех стратегий
  3. Проверить логи: tail -f /opt/var/log/zapret2.log
  4. Проверить процессы: 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


🔗 Ссылки


📞 Поддержка

Issues: https://github.com/necronicle/z2k/issues


z2k v2.0 - © 2026 necronicle Powered by zapret2 by bol-van