Zapret for Linux (Discord + YouTube)

Linux-аналог популярного репозитория Flowseal/zapret-discord-youtube для обхода DPI (Deep Packet Inspection) на Linux.

Требования

  • Linux (Ubuntu/Debian, Arch/Manjaro, Fedora и др.)
  • iptables или nftables
  • Ядерный модуль nfnetlink_queue
  • curl, git, make, gcc
  • sudo или root-доступ

Быстрый старт

# 1. Клонировать репозиторий
cd /opt
sudo git clone https://github.com/YOUR_USERNAME/zapret-discord-youtube-linux.git zapret
sudo chown -R $(whoami) zapret
cd zapret

# 2. ОДИН СКРИПТ — всё сделает автоматически:
#    установка, сборка, тест, подбор стратегии, systemd-сервис
sudo ./install.sh

Готово! После этого сервис работает и будет автозапускаться.


Полная инструкция (если нужно по шагам)

# Установка и настройка
sudo ./setup.sh          # зависимости + сборка nfqws

# Автоподбор стратегии
sudo ./autotest.sh       # интерактивный режим
sudo ./autotest.sh --auto # автоматический (сразу ставит в systemd)

# Обновление в будущем
sudo ./update.sh              # проверить версию, обновить, пересобрать
sudo ./update.sh --full-auto  # форсировать: пересобрать + перетестить

autotest.sh — автоподбор стратегии (Step 3 автоматизирован!)

sudo ./autotest.sh

Что делает:

  1. Последовательно запускает каждую стратегию (от самой популярной к редким)
  2. Проверяет доступность YouTube и Discord через curl
  3. Останавливает стратегию и переходит к следующей, если не работает
  4. Когда находит рабочую — предлагает установить в systemd

Автоматический режим (без вопросов):

sudo ./autotest.sh --auto

Ручной режим: тестирует, показывает результат, ждёт подтверждения для установки.

Параметр Описание
--auto или -a Найти рабочую стратегию и сразу установить в systemd
без параметров Интерактивный режим с меню

Структура проекта

.
├── bin/                          # nfqws + fake-пакеты
├── lib/
│   └── functions.sh              # Общие функции (firewall, цвета)
├── lists/
│   ├── list-general.txt          # Основные домены (Discord, Cloudflare, etc.)
│   ├── list-google.txt           # Google/YouTube домены
│   ├── list-exclude.txt          # Исключения (Twitch, VK, банки...)
│   ├── ipset-all.txt             # IP-диапазоны
│   └── ipset-exclude.txt         # IP-исключения
├── utils/
│   ├── test_zapret.sh            # Тесты доступности сайтов
│   └── targets.txt               # Список тестовых URL
├── systemd/
│   └── zapret.service            # systemd unit
├── .service/
│   ├── version.txt               # Текущая версия
│   ├── installed_strategy        # Установленная стратегия
│   ├── game_filter_enabled       # Флаг game filter
│   └── check_updates_enabled     # Флаг автообновления
├── general*.sh                   # Скрипты стратегий
├── autotest.sh                     # Автоподбор рабочей стратегии
├── install.sh                      # Полный установщик: setup + build + autotest + systemd
├── run_strategy.sh                 # Единый запускатель стратегий
├── service.sh                      # Меню управления (аналог service.bat)
├── setup.sh                        # Начальная настройка
├── install_nfqws.sh               # Сборка nfqws из bol-van/zapret
└── update.sh                       # Автообновление: проверка → сборка → тест → установка

Стратегии (general*.sh)

Каждый general*.sh — это обёртка над run_strategy.sh с нужным параметром:

Файл Стратегия Описание
general.sh general Standard multisplit
general_ALT.sh ALT Fake fakedsplit + ts fooling
general_ALT2.sh ALT2 Multisplit pos=2
general_ALT3.sh ALT3 Hostfakesplit (Google/ya.ru)
general_ALT4.sh ALT4 Fake multisplit + badseq
general_ALT5.sh ALT5 NOT RECOMMENDED syndata multidisorder
general_ALT6.sh ALT6 Uniform split-seqovl=681
general_ALT7.sh ALT7 Multisplit + syndata
general_ALT8.sh ALT8 Fake + badseq-increment=2
general_ALT9.sh ALT9 Hostfakesplit (ozon.ru)
general_ALT10.sh ALT10 Fake + ts fooling
general_ALT11.sh ALT11 Fake multisplit + max_ru pattern
general_FAKE_TLS_AUTO.sh FAKE_TLS_AUTO FAKE TLS multidisorder
general_FAKE_TLS_AUTO_ALT.sh FAKE_TLS_AUTO_ALT FAKE TLS fakedsplit
general_FAKE_TLS_AUTO_ALT2.sh FAKE_TLS_AUTO_ALT2 FAKE TLS multisplit badseq
general_FAKE_TLS_AUTO_ALT3.sh FAKE_TLS_AUTO_ALT3 FAKE TLS + 4pda pattern
general_SIMPLE_FAKE.sh SIMPLE_FAKE Simple fake
general_SIMPLE_FAKE_ALT.sh SIMPLE_FAKE_ALT Simple fakedsplit
general_SIMPLE_FAKE_ALT2.sh SIMPLE_FAKE_ALT2 Simple hostfakesplit

Как подобрать рабочую стратегию: запускайте разные general*.sh и проверяйте открывается ли Discord/YouTube. Когда найдёте рабочую — установите через service.shInstall Service.

service.sh — меню управления

Аналог service.bat из Windows-версии:

:: SERVICE
   1. Install Service     — выбор стратегии + systemd unit
   2. Remove Services     — удаление unit + остановка nfqws
   3. Check Status        — проверка nfqws и firewall rules

:: SETTINGS
   4. Game Filter         — вкл/выкл обход для UDP/TCP портов >1024
   5. IPSet Filter        — none / loaded / any
   6. Auto-Update Check   — вкл/выкл автообновление

:: UPDATES
   7. Update IPSet List  — обновить ipset-all.txt
   8. Update Hosts File  — показать новые записи hosts
   9. Check for Updates   — проверить версию на GitHub

:: TOOLS
   10. Run Diagnostics    — проверка зависимостей, модулей, DNS
   11. Run Tests          — тест сайтов или DPI checker

Автообновление (update.sh)

# Интерактивный режим — проверяет версию, предлагает обновить,
# скачивает новые списки, пересобирает nfqws, перезапускает сервис
sudo ./update.sh

# Автоматический режим (для cron / systemd timer)
sudo ./update.sh --auto

systemd таймер для автообновления

sudo cp systemd/zapret-update.timer /etc/systemd/system/
sudo cp systemd/zapret-update.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now zapret-update.timer

Установка в автозагрузку (systemd)

sudo cp systemd/zapret.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable zapret.service
sudo systemctl start zapret.service

Пользовательские списки

При первом запуске автоматически создаются:

  • lists/list-general-user.txt — добавляйте свои домены
  • lists/list-exclude-user.txt — домены-исключения
  • lists/ipset-exclude-user.txt — IP-исключения

Secure DNS

Рекомендуется включить DNS-over-HTTPS:

  • Chrome: chrome://settings/security → Secure DNS
  • Firefox: about:preferences#privacy → DNS-over-HTTPS
  • Система (systemd-resolved): resolvectl dns eth0 1.1.1.1

Лицензия

MIT License — аналогично оригинальному проекту.

Благодарности

  • bol-van — оригинальный разработчик zapret
  • Flowseal — Windows-обёртка и стратегии
Description
No description provided
Readme 309 KiB
Languages
Shell 100%