- Add Python converter (convert_bat.py) + PowerShell wrapper generator - All general*.sh now point to run_strategy.sh <name> - Normalize filenames: spaces → underscores (FAKE_TLS_AUTO_ALT etc.) - Fix sync_from_upstream.sh: underscores in names - Update README: document modular architecture, sync, hosts
Zapret for Linux (Discord + YouTube + GitHub + Telegram + Steam)
Linux-аналог популярного репозитория Flowseal/zapret-discord-youtube для обхода DPI (Deep Packet Inspection).
Ключевая фича: sync_from_upstream.sh — автоматическое слежение за оригинальным Windows-репозиторием. При обновлении Flowseal скрипт сам скачает новые списки доменов, hosts и авто-конвертирует новые .bat стратегии в Linux-формат. Подробнее в разделе Синхронизация upstream.
Быстрый старт
# 1. Установка git (один раз)
sudo apt install git # Ubuntu/Debian
sudo pacman -S git # Arch/Manjaro
sudo dnf install git # Fedora
# 2. Клонирование
cd /opt
git clone https://giteas.stitch505.su/Stitch505/zapret-discord-youtube-linux.git zapret
cd zapret
# 3. Установка (одна команда — всё сделает)
sudo ./install.sh
После install.sh сервис запущен и будет автозапускаться.
Установка по дистрибутивам
Ubuntu / Debian / Linux Mint / Pop!_OS / Zorin OS / Kali
sudo apt update
sudo apt install -y git curl make gcc iptables nftables libnetfilter-queue-dev
cd /opt
git clone https://giteas.stitch505.su/Stitch505/zapret-discord-youtube-linux.git zapret
cd zapret
sudo ./install.sh
Arch Linux / Manjaro / EndeavourOS / Garuda / Artix
sudo pacman -Syu --noconfirm git curl make gcc iptables nftables libnetfilter_queue
cd /opt
git clone https://giteas.stitch505.su/Stitch505/zapret-discord-youtube-linux.git zapret
cd zapret
sudo ./install.sh
Fedora / RHEL / CentOS / AlmaLinux / Rocky Linux
sudo dnf install -y git curl make gcc iptables nftables libnetfilter_queue-devel
cd /opt
git clone https://giteas.stitch505.su/Stitch505/zapret-discord-youtube-linux.git zapret
cd zapret
sudo ./install.sh
Alpine Linux
sudo apk add --no-cache git curl make gcc iptables nftables libnetfilter_queue-dev linux-headers
cd /opt
git clone https://giteas.stitch505.su/Stitch505/zapret-discord-youtube-linux.git zapret
cd zapret
sudo ./install.sh
Gentoo / Funtoo
sudo emerge --ask dev-vcs/git net-misc/curl sys-devel/gcc sys-devel/make net-firewall/iptables net-firewall/nftables
cd /opt
git clone https://giteas.stitch505.su/Stitch505/zapret-discord-youtube-linux.git zapret
cd zapret
sudo ./install.sh
openSUSE / SUSE
sudo zypper install -y git curl make gcc iptables nftables libnetfilter_queue-devel
cd /opt
git clone https://giteas.stitch505.su/Stitch505/zapret-discord-youtube-linux.git zapret
cd zapret
sudo ./install.sh
Void Linux
sudo xbps-install -Sy git curl make gcc iptables nftables libnetfilter_queue-devel
cd /opt
git clone https://giteas.stitch505.su/Stitch505/zapret-discord-youtube-linux.git zapret
cd zapret
sudo ./install.sh
NixOS
nix-shell -p git curl gnumake gcc iptables nftables libnetfilter_queue
cd /opt
git clone https://giteas.stitch505.su/Stitch505/zapret-discord-youtube-linux.git zapret
cd zapret
sudo ./install.sh
Что делает ./install.sh (шаг за шагом)
-
Синхронизация upstream (
sync_from_upstream.sh)- Клонирует оригинальный
Flowseal/zapret-discord-youtube - Мержит свежие
lists/*.txt(Discord, YouTube, GitHub, Telegram, Steam) - Обновляет
.service/hosts(статичные IP для GitHub/Telegram) - При необходимости конвертирует новые
.batстратегии вstrategies/*.conf
- Клонирует оригинальный
-
Установка зависимостей (
setup.sh) — по дистрибутиву -
Сборка
nfqws(install_nfqws.sh) — git clone bol-van/zapret, make, fake .bin пакеты -
Автотест (
autotest.sh --auto) — перебирает стратегии, находит рабочую, ставит в systemd
Структура проекта (новая модульная архитектура)
.
├── bin/ # nfqws + fake .bin (собирается)
├── lib/
│ └── functions.sh # Общие: firewall, цвета, cleanup
├── lists/ # Списки доменов и IP
│ ├── list-general.txt # Discord, YouTube, GitHub, Telegram, Steam
│ ├── list-google.txt # Google/YouTube
│ ├── list-exclude.txt # Исключения (банки, госуслуги)
│ ├── ipset-all.txt # IP-диапазоны
│ └── ipset-exclude.txt # Локальные подсети
├── strategies/ # Новое: модульные стратегии
│ └── general.conf # Конфиг стратегии (RULE1=... RULE2=...)
│ # Другие .conf появляются автоматически через sync_from_upstream.sh
├── utils/
│ ├── test_zapret.sh # curl-тесты
│ └── targets.txt # Цели
├── systemd/ # Юниты и таймеры
├── .service/
│ ├── version.txt # Версия (x.y.z-linux)
│ ├── hosts # Статичные IP (GitHub, Telegram)
│ └── installed_strategy # Какая стратегия в systemd
├── general*.sh # Обёртки → run_strategy.sh
├── run_strategy.sh # Движок: читает .conf, подставляет %BIN%/%LISTS%, запускает nfqws
├── sync_from_upstream.sh # <<< НОВОЕ: авто-мердж с Windows-репон
├── autotest.sh # Автоподбор рабочей стратегии
├── install.sh # Полный установщик (setup + build + autotest + systemd)
├── service.sh # Меню управления (аналог service.bat)
├── setup.sh # Зависимости по дистрибутиву
├── install_nfqws.sh # Сборка nfqws из bol-van/zapret
├── ensure_wrappers.sh # <<< НОВОЕ: создаёт general_*.sh из strategies/*.conf
└── update.sh # Полный pipeline: sync → build → test → install
Ключевой момент: стратегии больше не зашиты в код. Они вынесены в strategies/*.conf — текстовые файлы, которые автоматически конвертируются из .bat при синхронизации.
Модульные стратегии (strategies/*.conf)
Вместо 20 скриптов с дублирующимся кодом — один движок + конфигурационные файлы.
Пример strategies/general.conf:
# Strategy: general
RULE1=--filter-udp=443 --hostlist="%LISTS%/list-general.txt" ... --dpi-desync=fake ...
RULE2=--filter-udp=19294-19344,50000-50100 --filter-l7=discord,stun ...
RULE3=--filter-tcp=2053,2083,2087,2096,8443 --hostlist-domains=discord.media ...
RULE8=--filter-tcp=%GAME_TCP% --ipset="%LISTS%/ipset-all.txt" ...
RULE9=--filter-udp=%GAME_UDP% --ipset="%LISTS%/ipset-all.txt" ...
Переменные (подставляются на лету через sed, без envsubst):
%BIN%→bin/%LISTS%→lists/%GAME_TCP%/%GAME_UDP%→1024:65535(или пусто)
Если Flowseal выпускает новую general (ALT12).bat:
sudo ./sync_from_upstream.sh # авто-конвертирует в strategies/ALT12.conf + general_ALT12.sh
Стратегии (general*.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 |
Подбор рабочей:
sudo ./autotest.sh # интерактивно: тестит, пока не найдёт
sudo ./autotest.sh --auto # автомат: найдёт и сразу установит в systemd
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 — вкл/выкл обход портов >1024
5. IPSet Filter — none / loaded / any
6. Auto-Update Check — вкл/выкл автообновление
:: UPDATES
7. Update IPSet List — обновить список IP
8. Update Hosts File — показать hosts и предложить добавить в /etc/hosts
9. Check for Updates — проверить версию (внутренняя)
:: TOOLS
10. Run Diagnostics — зависимости, ядерный модуль, DNS
11. Run Tests — curl-проверка Discord/YouTube
update.sh — автообновление (pipeline)
# Полный pipeline: sync upstream → rebuild → test → install
sudo ./update.sh # интерактивно
sudo ./update.sh --auto # для cron: тихий режим, только если upstream изменился
sudo ./update.sh --full-auto # форсировать пересборку + перетестирование
sudo ./update.sh --help # справка
Что делает при обновлении Flowseal:
Step 0: sync_from_upstream.sh
→ скачивает новые lists, hosts, версию
→ если Flowseal выпустил новый .bat — авто-конвертирует в .conf + .sh
Step 1: Rebuild nfqws
→ пересобирает из исходников
Step 2: Auto-test
→ перетестирует все стратегии (включая новые)
Step 3: Install to systemd
→ ставит лучшую рабочую в автостарт
Синхронизация upstream (sync_from_upstream.sh)
Отдельный скрипт для ручного мержа с оригиналом. Не требует пересборки nfqws.
sudo ./sync_from_upstream.sh
# Вывод:
# [OK] lists/list-general.txt (новые домены GitHub/Telegram)
# [OK] .service/hosts (новые статичные IP)
# [NEW] Detected upstream strategy: general (ALT12).bat → ALT12.conf
# [OK] REBUILD NEEDED: run ./update.sh
Если видите REBUILD NEEDED (exit 2) — запускайте sudo ./update.sh или sudo ./install.sh.
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
Security — hosts для заблокированных ресурсов
Проект включает .service/hosts со статичными IP, чтобы обойти DNS-блокировки:
- GitHub:
raw.githubusercontent.com,avatars.githubusercontent.com,gist.github.com - Telegram:
t.me,telegram.org,web.telegram.org,api.telegram.org - Discord media: голосовые каналы
Добавить в /etc/hosts:
sudo ./service.sh
# → 8. Update Hosts File
Или вручную:
cat .service/hosts | sudo tee -a /etc/hosts
Рекомендуется также включить Secure DNS (DoH/DoT):
- Chrome:
chrome://settings/security→ Secure DNS - Firefox:
about:preferences#privacy→ DNS-over-HTTPS - systemd-resolved:
resolvectl dns eth0 1.1.1.1
Ручное управление (если автоматика не подошла)
cd /opt/zapret
# Запуск конкретной стратегии
sudo ./general.sh # если не работает — Ctrl+C
sudo ./general_ALT.sh # пробуем следующую
# ... и так до 20 стратегий
# Меню
sudo ./service.sh
# Обновление (sync + rebuild + test + install)
sudo ./update.sh
sudo ./update.sh --full-auto
Требования
- Linux с
iptablesилиnftables - Ядерный модуль
nfnetlink_queue(загрузится автоматически) git,make,gcc,curlsudoили root
Лицензия
MIT License.
Авторы: