- Предварительные требования
- Установка зависимостей
- Сборка из исходников
- Настройка системы
- Настройка конфигурации
- Запуск и управление
- Решение проблем
- Дополнительные настройки
- 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)# Копирование службы из документации
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 "Файл службы не найден, создаем вручную"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
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_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Это нормально для Type=oneshot. Проверьте, что демон работает:
ps aux | grep tpws
sudo ss -tlnp | grep 988- Проверьте конфигурацию:
sudo grep -E "TPWS_ENABLE|NFQWS_ENABLE" /opt/zapret/configДолжно быть: TPWS_ENABLE=1
- Запустите вручную для диагностики:
sudo /opt/zapret/tpws/tpws --user=tpws --bind-addr=127.0.0.127 --port=988 --filter-tcp=80 --filter-tcp=443 --verbose# Принудительное применение правил
sudo /opt/zapret/ipset/nft-only.sh
# Проверка существования таблицы
sudo nft list tables | grep zapret- Перезапустите браузер
- Очистите DNS кэш:
sudo systemctl restart systemd-resolved- Проверьте белый список:
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/configIFACE_LAN="eth0 wlan0" # LAN интерфейсы
IFACE_WAN="eth1" # WAN интерфейс# Остановка и отключение службы
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- Безопасность: Zapret требует привилегий root. Используйте только из доверенных источников.
- Производительность: На слабых системах может потребоваться уменьшить
SET_MAXELEM. - Совместимость: Не все сайты могут корректно работать с обходом DPI.
- Законность: Убедитесь, что использование подобного ПО разрешено в вашей стране.
Вот в чём проблема! Файл zapret-hosts.txt.gz содержит старые данные (533 КБ), а не наш список с 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
EOFcat /opt/zapret/ipset/zapret-hosts.txt# Удаляем старый сжатый файл
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.gzsudo systemctl restart zapret
sudo systemctl status zapretsudo gunzip -c /opt/zapret/ipset/zapret-hosts.txt.gzps aux | grep tpws | grep -v grep# Быстрый тест
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 -30curl -v https://google.com 2>&1 | grep -E "HTTP|Connected"Возможно, нужно добавить ещё домены:
# Распаковываем
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 - это покажет точное содержимое файла.