Skip to content

Instantly share code, notes, and snippets.

@DELAGREEN
Last active January 30, 2026 16:30
Show Gist options
  • Select an option

  • Save DELAGREEN/e6ea25be2b4dedf59f37f389bbf8eeb1 to your computer and use it in GitHub Desktop.

Select an option

Save DELAGREEN/e6ea25be2b4dedf59f37f389bbf8eeb1 to your computer and use it in GitHub Desktop.

Руководство по установке Zapret на Fedora

Содержание

Предварительные требования

Поддерживаемые версии Fedora

  • Fedora 36 и выше
  • Система на базе systemd
  • Права суперпользователя (sudo)

Проверка системы

# Проверка версии Fedora
cat /etc/fedora-release

# Проверка использования systemd
ps -p 1 -o comm=

Установка зависимостей

# Обновление системы
sudo dnf update -y

# Установка компиляторов и инструментов сборки
sudo dnf install -y git make gcc

# Установка библиотек разработки
sudo dnf install -y \
    zlib-devel \
    libcap-devel \
    libnetfilter_queue-devel \
    libmnl-devel \
    systemd-devel

# Дополнительные утилиты (опционально)
sudo dnf install -y curl wget nftables

Сборка из исходников

Клонирование репозитория

# Переход в папку для загрузок
cd ~/Downloads

# Клонирование репозитория (только последний коммит)
git clone https://github.com/bol-van/zapret.git --depth=1

# Переход в папку проекта
cd zapret

Компиляция

# Сборка для systemd-систем
make systemd

# Проверка результатов сборки
echo "=== Проверка собранных файлов ==="
ls -lh tpws/tpws nfqws/nfqws 2>/dev/null || echo "Файлы не найдены"

echo "=== Проверка исполняемых файлов ==="
file binaries/my/tpws 2>/dev/null || echo "Файл tpws не найден"
file binaries/my/nfqws 2>/dev/null || echo "Файл nfqws не найден"

Установка бинарных файлов

# Очистка предыдущей установки (если есть)
sudo rm -rf /opt/zapret

# Копирование файлов в системную папку
sudo cp -r ~/Downloads/zapret /opt/

# Установка прав доступа
sudo chown -R root:root /opt/zapret
sudo chmod -R 755 /opt/zapret

# Переход в рабочую директорию
cd /opt/zapret

Настройка системы

Установка предварительных требований

# Запуск скрипта предварительной настройки
sudo ./install_prereq.sh

# При выборе фаервола выберите:
# 2 : nftables (рекомендуется для Fedora)

Создание systemd сервиса

Вариант 1: Автоматически (если доступно)

# Копирование службы из документации
sudo cp docs/zapret.service /usr/lib/systemd/system/ 2>/dev/null || \
sudo cp doc/zapret.service /usr/lib/systemd/system/ 2>/dev/null || \
echo "Файл службы не найден, создаем вручную"

Вариант 2: Ручное создание службы

sudo nano /etc/systemd/system/zapret.service

Вставьте следующее содержимое:

[Unit]
Description=Zapret anti-censorship daemon
Documentation=https://github.com/bol-van/zapret
After=network.target network-online.target
Wants=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/opt/zapret/init.d/sysv/zapret start
ExecStop=/opt/zapret/init.d/sysv/zapret stop
ExecReload=/opt/zapret/init.d/sysv/zapret restart

# Безопасность
User=root
Group=root
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Обновление systemd

# Перезагрузка конфигурации systemd
sudo systemctl daemon-reload

# Включение автозапуска
sudo systemctl enable zapret

Настройка конфигурации

Базовый конфигурационный файл

# Копирование конфигурации по умолчанию
sudo cp /opt/zapret/config.default /opt/zapret/config

# Редактирование конфигурации
sudo nano /opt/zapret/config

Минимальная рабочая конфигурация

# Основные настройки
TPWS_ENABLE=1
NFQWS_ENABLE=0
FWTYPE=nftables

# Порт для TPWS (можно изменить при конфликтах)
TPPORT=988

# Фильтрация портов
TPWS_PORTS=80,443
MODE_FILTER=hostlist

# Сетевые интерфейсы
IFACE_LAN=auto

# Настройки nftables
SET_MAXELEM=522288
IPSET_OPT="hashsize 262144 maxelem $SET_MAXELEM"

# Отключение IPv6 если не используется
DISABLE_IPV6=0

Дополнительные опции TPWS

# Опции для TPWS (раскомментируйте при необходимости)
TPWS_OPT="
--filter-tcp=80 --methodeol <HOSTLIST> --new
--filter-tcp=443 --split-pos=1,midsld --disorder <HOSTLIST>
"

Запуск и управление

Инициализация системы

# Загрузка списков блокировок
sudo /opt/zapret/get_antizapret_domains.sh

# Генерация IP-списков
sudo /opt/zapret/ipset/zapret-ipset.sh

Управление службой

# Запуск службы
sudo systemctl start zapret

# Проверка статуса
sudo systemctl status zapret

# Остановка службы
sudo systemctl stop zapret

# Перезапуск
sudo systemctl restart zapret

# Просмотр логов
sudo journalctl -u zapret -f

# Проверка запущенных процессов
sudo systemctl status zapret --no-pager
ps aux | grep -E "(tpws|nfqws)" | grep -v grep

Проверка работы

# Проверка nftables правил
sudo nft list table inet zapret

# Проверка сетевых портов
sudo ss -tlnp | grep 988

# Тестирование доступа
curl -v http://httpbin.org/ip
curl -v https://httpbin.org/ip

# Тестирование через прокси (альтернативный метод)
curl --proxy http://127.0.0.127:988 http://httpbin.org/ip

Решение проблем

Служба показывает active (exited)

Это нормально для Type=oneshot. Проверьте, что демон работает:

ps aux | grep tpws
sudo ss -tlnp | grep 988

TPWS не запускается

  1. Проверьте конфигурацию:
sudo grep -E "TPWS_ENABLE|NFQWS_ENABLE" /opt/zapret/config

Должно быть: TPWS_ENABLE=1

  1. Запустите вручную для диагностики:
sudo /opt/zapret/tpws/tpws --user=tpws --bind-addr=127.0.0.127 --port=988 --filter-tcp=80 --filter-tcp=443 --verbose

Нет правил в nftables

# Принудительное применение правил
sudo /opt/zapret/ipset/nft-only.sh

# Проверка существования таблицы
sudo nft list tables | grep zapret

Проблемы с доступом к сайтам

  1. Перезапустите браузер
  2. Очистите DNS кэш:
sudo systemctl restart systemd-resolved
  1. Проверьте белый список:
sudo nano /opt/zapret/ipset/zapret-hosts-user.txt

Дополнительные настройки

Автоматическое обновление списков

# Создание задачи cron
sudo crontab -e

Добавьте строку:

# Обновление каждый день в 4:00
0 4 * * * /opt/zapret/get_antizapret_domains.sh && /opt/zapret/ipset/zapret-ipset.sh && systemctl restart zapret

Настройка белого списка

# Редактирование белого списка
sudo nano /opt/zapret/ipset/zapret-hosts-user.txt

Пример содержимого:

# Локальные домены
.local
.localdomain

# Доверенные сайты (не обходить)
youtube.com
google.com
microsoft.com

# Банковские сайты
*.bank.ru
*.sberbank.ru

Мониторинг работы

# Создание скрипта мониторинга
cat > ~/monitor_zapret.sh << 'EOF'
#!/bin/bash
echo "=== Zapret Status ==="
systemctl status zapret --no-pager | head -10
echo ""
echo "=== Running Processes ==="
ps aux | grep -E "(tpws|nfqws)" | grep -v grep
echo ""
echo "=== Network Ports ==="
ss -tlnp | grep 988
echo ""
echo "=== NFTables Rules ==="
nft list table inet zapret 2>/dev/null | head -20
EOF

chmod +x ~/monitor_zapret.sh

Оптимизация для роутера

Если компьютер используется как роутер:

# Включение IP-форвардинга
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

# Настройка интерфейсов в конфиге
sudo nano /opt/zapret/config
IFACE_LAN="eth0 wlan0"  # LAN интерфейсы
IFACE_WAN="eth1"        # WAN интерфейс

Удаление Zapret

# Остановка и отключение службы
sudo systemctl stop zapret
sudo systemctl disable zapret

# Удаление службы
sudo rm -f /etc/systemd/system/zapret.service
sudo rm -f /usr/lib/systemd/system/zapret.service
sudo systemctl daemon-reload

# Удаление файлов
sudo rm -rf /opt/zapret

# Очистка nftables правил
sudo nft delete table inet zapret 2>/dev/null || true

Полезные команды для отладки

# Детальные логи службы
sudo journalctl -u zapret --since "1 hour ago" --no-pager

# Проверка конфигурации nftables
sudo nft list ruleset | grep -A10 -B10 "zapret"

# Тестирование конкретного сайта
curl --connect-timeout 10 -v https://заблокированный-сайт.ru

# Проверка маршрутизации
ip route get 8.8.8.8

# Мониторинг трафика
sudo nft monitor

Примечания

  1. Безопасность: Zapret требует привилегий root. Используйте только из доверенных источников.
  2. Производительность: На слабых системах может потребоваться уменьшить SET_MAXELEM.
  3. Совместимость: Не все сайты могут корректно работать с обходом DPI.
  4. Законность: Убедитесь, что использование подобного ПО разрешено в вашей стране.

Ссылки


Перестает работать DeepSeek

Вот в чём проблема! Файл zapret-hosts.txt.gz содержит старые данные (533 КБ), а не наш список с YouTube.

Исправляем:

1. Создаём новый файл с ТОЛЬКО YouTube:

# Создаём новый текстовый файл
sudo tee /opt/zapret/ipset/zapret-hosts.txt << 'EOF'
# Только YouTube и связанные сервисы
youtube.com
www.youtube.com
m.youtube.com
youtubei.googleapis.com
youtu.be
googlevideo.com
ytimg.com
*.googlevideo.com
*.youtube.com
EOF

2. Проверяем содержимое:

cat /opt/zapret/ipset/zapret-hosts.txt

3. Сжимаем файл:

# Удаляем старый сжатый файл
sudo rm /opt/zapret/ipset/zapret-hosts.txt.gz

# Создаём новый сжатый файл
sudo gzip /opt/zapret/ipset/zapret-hosts.txt

# Проверяем размер
ls -lh /opt/zapret/ipset/zapret-hosts.txt.gz

4. Перезапускаем Zapret:

sudo systemctl restart zapret
sudo systemctl status zapret

Проверка:

1. Проверим что в сжатом файле:

sudo gunzip -c /opt/zapret/ipset/zapret-hosts.txt.gz

2. Проверим процессы:

ps aux | grep tpws | grep -v grep

3. Тестируем YouTube:

# Быстрый тест
timeout 5 curl -v https://www.youtube.com 2>&1 | grep -E "(HTTP|Location|Connected|Trying)"

# Подробный тест через прокси
curl --proxy http://127.0.0.127:988 -v https://www.youtube.com 2>&1 | head -30

4. Проверим другой сайт (не должен обходить):

curl -v https://google.com 2>&1 | grep -E "HTTP|Connected"

Если всё равно YouTube не обходит

Возможно, нужно добавить ещё домены:

# Распаковываем
sudo gunzip /opt/zapret/ipset/zapret-hosts.txt.gz

# Добавляем дополнительные домены
sudo tee -a /opt/zapret/ipset/zapret-hosts.txt << 'EOF'

# Дополнительные домены YouTube
accounts.youtube.com
music.youtube.com
studio.youtube.com
tv.youtube.com
manifest.googlevideo.com
i.ytimg.com
s.ytimg.com
EOF

# Сжимаем обратно
sudo gzip /opt/zapret/ipset/zapret-hosts.txt

# Перезапускаем
sudo systemctl restart zapret

Покажите вывод команды sudo gunzip -c /opt/zapret/ipset/zapret-hosts.txt.gz - это покажет точное содержимое файла.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment