Вот практический гайд по установке и запуску zapret2 на Linux (и частично macOS).
Гайд по zapret2 на Linux / macOS
zapret2 — автономный инструмент обхода DPI (глубокой инспекции пакетов), не требующий сторонних серверов . Это продолжение zapret1 с поддержкой стратегий на языке Lua вместо жёстко зашитого C-кода .
️ macOS: поддержка ограничена — работает только tpws (SOCKS5-прокси). nfqws2 на macOS не поддерживается. Для Discord/YouTube на Mac рекомендуется SpoofDPI как альтернатива.^1
Шаг 1 — Зависимости
Arch Linux
sudo pacman -S --needed curl ipset bind git jq nftables
Ubuntu / Debian
sudo apt install -y curl ipset dnsutils git jq
Fedora
sudo dnf install -y curl ipset dnsutils git jq
Шаг 2 — Скачать и установить zapret2
# Клонируем репозиторий
git clone https://github.com/bol-van/zapret2.git
cd zapret2
# Устанавливаем бинарники и пре-реквизиты
sudo ./install_bin.sh
sudo ./install_prereq.sh
Либо скачайте .tar.gz с Releases (последний: v0.9.4.6, март 2026) и распакуйте :
tar -xvzf zapret2-*.tar.gz -C ~/Downloads
cd ~/Downloads/zapret2-*
Шаг 3 — Запуск blockcheck2 (поиск рабочей стратегии)
blockcheck2.sh перебирает стратегии и находит рабочие для вашего провайдера:^2
sudo ./blockcheck2.sh
В интерактивном режиме введите:
domain: rutracker.org (или ваш заблокированный домен, например youtube.com)
ip protocol: 4
check http: y
check https tls 1.2: y
times to repeat: 3 (для ускорения) или 5 (надёжнее)
В конце будет SUMMARY с найденными стратегиями, например:^2
nfqws --dpi-desync=fake,multisplit --dpi-desync-split-pos=midsld
Ускорение blockcheck: откройте blockcheck2.sh, найдите строку [ "$SCANLEVEL" = quick ] && break и замените на просто break — пропустит стратегию при первом провале.^2
Шаг 4 — Easy Install (автоустановка через скрипт)
sudo ./install_easy.sh
Ответы на вопросы установщика:^2
Вопрос
Ответ
select firewall type
2 (nftables)
enable ipv6 support
n
enable tpws socks mode
n
enable tpws transparent mode
n
enable nfqws
y
do you want to edit the options
y
В открывшемся редакторе в поле NFQWS_OPT="" вставьте стратегии из blockcheck, например:^2
--filter-tcp=80 --dpi-desync=syndata,multisplit --dpi-desync-split-pos=method+2 --new
--filter-tcp=443 --dpi-desync=fake,multidisorder --dpi-desync-split-pos=midsld
Закройте редактор (Ctrl+X для nano или :wq для vim), затем отвечайте n → 1 → 1 → 1 → Enter.
Шаг 5 — Ручной запуск nfqws2 (для продвинутых)
Сначала настройте перехват трафика через nftables :
sudo nft delete table inet ztest 2>/dev/null
sudo nft create table inet ztest
sudo nft add chain inet ztest post "{type filter hook postrouting priority 101;}"
sudo nft add rule inet ztest post meta mark and 0x40000000 == 0 tcp dport "{80,443}" ct original packets 1-12 queue num 200 bypass
sudo nft add rule inet ztest post meta mark and 0x40000000 == 0 udp dport "{443}" ct original packets 1-12 queue num 200 bypass
sudo sysctl net.netfilter.nf_conntrack_tcp_be_liberal=1
Затем запустите nfqws2 с Lua-стратегиями :
sudo ./nfq2/nfqws2 \
--qnum 200 \
--debug \
--lua-init=@lua/zapret-lib.lua \
--lua-init=@lua/zapret-antidpi.lua \
--filter-tcp=80,443 --filter-l7=tls,http \
--payload=tls_client_hello \
--lua-desync=fake:blob=fake_default_tls:tcp_md5:tls_mod=rnd,rndsni,dupsid \
--payload=http_req \
--lua-desync=fake:blob=fake_default_http:tcp_md5 \
--payload=tls_client_hello,http_req \
--lua-desync=multisplit:pos=1:seqovl=5:seqovl_pattern=0x1603030000
macOS — ограниченный вариант через tpws
На macOS работает только tpws — локальный SOCKS5-прокси:^3
# Собрать tpws (нужны Xcode CLT)
make tpws
# Запустить
sudo ./tpws/tpws --port=1080 --daemon
Затем настройте системный прокси: Настройки → Сеть → Прокси → SOCKS → 127.0.0.1:1080.
Хостлисты (фильтрация по сайтам)
Чтобы применять стратегию только к конкретным сайтам:^2
sudo mkdir -p /opt/zapret2/lists
echo "youtube.com" | sudo tee /opt/zapret2/lists/youtube.txt
echo "googlevideo.com" >> /opt/zapret2/lists/youtube.txt
В строке стратегии добавьте --hostlist=/opt/zapret2/lists/youtube.txt.
Отладка
Всегда запускайте с --debug на старте — без этого флага сложно понять что происходит
Логи смотрите в stdout или journalctl -u zapret2 (если установлен как сервис)
Если стратегия не работает — перезапустите blockcheck2.sh для вашего провайдера
Что уточнить / проверить дальше
Ваш дистрибутив — iptables или nftables используется по умолчанию? (nft list tables проверит)
Конкретный заблокированный сервис — стратегии для YouTube, Discord и общих HTTPS отличаются
Роутер vs. десктоп — zapret2 ориентирован на OpenWrt/роутеры; для десктопа проще install_easy.sh
macOS версия — если важен macOS, рассмотрите SpoofDPI как более зрелую альтернативу
Lua-стратегии — кастомные стратегии описаны в lua/zapret-antidpi.lua, каждая функция задокументирована прямо в коде
^10^12^14^16^18^20^5^7^9
⁂