354 lines
12 KiB
Markdown
Executable File
354 lines
12 KiB
Markdown
Executable File
# Zapret for Linux (Discord + YouTube + GitHub + Telegram + Steam)
|
||
|
||
Linux-аналог популярного репозитория [Flowseal/zapret-discord-youtube](https://github.com/Flowseal/zapret-discord-youtube) для обхода DPI (Deep Packet Inspection).
|
||
|
||
**Ключевая фича:** `sync_from_upstream.sh` — автоматическое слежение за оригинальным Windows-репозиторием. При обновлении Flowseal скрипт сам скачает новые списки доменов, `hosts` и авто-конвертирует новые `.bat` стратегии в Linux-формат.
|
||
|
||
---
|
||
|
||
## Быстрый старт (рекомендуемый workflow)
|
||
|
||
```bash
|
||
# 1. Клонирование
|
||
cd /opt
|
||
git clone https://giteas.stitch505.su/Stitch505/zapret-discord-youtube-linux.git zapret
|
||
cd zapret
|
||
|
||
# 2. Запуск меню управления
|
||
sudo ./service.sh
|
||
```
|
||
|
||
В открывшемся меню:
|
||
1. **Нажмите `11` (Run Tests)** — скрипт автоматически проверит все стратегии (general, ALT, ALT2, ALT3...) против YouTube и Discord и покажет **список ВСЕХ рабочих**.
|
||
2. После тестов нажмите `1` (Install Service) и **выберите номер** понравившейся стратегии из списка.
|
||
3. Сервис установлен и будет автозапускаться при загрузке.
|
||
|
||
```
|
||
:: TOOLS
|
||
10. Run Diagnostics
|
||
11. Run Tests (find ALL working strategies) ← СНАЧАЛА ЭТО
|
||
|
||
:: SERVICE
|
||
1. Install Service ← ПОТОМ ЭТО
|
||
2. Remove Services
|
||
3. Check Status
|
||
```
|
||
|
||
> **Важно:** Все скрипты (`install.sh`, `setup.sh`, `general*.sh`, `service.sh`, `autotest.sh`, `update.sh`) должны запускаться **от root** (через `sudo`).
|
||
|
||
---
|
||
|
||
## Установка по дистрибутивам
|
||
|
||
### Ubuntu / Debian / Linux Mint / Pop!_OS / Zorin OS / Kali
|
||
|
||
```bash
|
||
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 ./service.sh
|
||
# → 11 для тестов, затем 1 для установки
|
||
```
|
||
|
||
### Arch Linux / Manjaro / EndeavourOS / Garuda / Artix
|
||
|
||
```bash
|
||
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 ./service.sh
|
||
```
|
||
|
||
### Fedora / RHEL / CentOS / AlmaLinux / Rocky Linux
|
||
|
||
```bash
|
||
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 ./service.sh
|
||
```
|
||
|
||
### Alpine Linux
|
||
|
||
```bash
|
||
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 ./service.sh
|
||
```
|
||
|
||
### Gentoo / Funtoo
|
||
|
||
```bash
|
||
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 ./service.sh
|
||
```
|
||
|
||
### openSUSE / SUSE
|
||
|
||
```bash
|
||
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 ./service.sh
|
||
```
|
||
|
||
### Void Linux
|
||
|
||
```bash
|
||
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 ./service.sh
|
||
```
|
||
|
||
### NixOS
|
||
|
||
```bash
|
||
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 ./service.sh
|
||
```
|
||
|
||
---
|
||
|
||
## Альтернативный способ: install.sh (полный автоустановщик)
|
||
|
||
Если `service.sh` кажется сложным, можно запустить всё одной командой:
|
||
|
||
```bash
|
||
sudo ./install.sh
|
||
```
|
||
|
||
Он автоматически:
|
||
1. Соберёт nfqws
|
||
2. Запустит тесты
|
||
3. Установит **первую** рабочую стратегию в systemd
|
||
|
||
После этого сервис будет работать сразу и автозапускаться при загрузке.
|
||
|
||
---
|
||
|
||
## service.sh — меню управления
|
||
|
||
```
|
||
ZAPRET SERVICE MANAGER v1.9.8c-linux
|
||
----------------------------------------
|
||
|
||
:: SERVICE
|
||
1. Install Service ← выбор и установка стратегии
|
||
2. Remove Services ← удаление сервиса + остановка
|
||
3. Check Status ← проверка nfqws и firewall
|
||
|
||
:: SETTINGS
|
||
4. Game Filter [disabled]
|
||
5. IPSet Filter [none]
|
||
6. Auto-Update Check [disabled]
|
||
|
||
:: UPDATES
|
||
7. Update IPSet List
|
||
8. Update Hosts File
|
||
9. Check for Updates
|
||
|
||
:: TOOLS
|
||
10. Run Diagnostics
|
||
11. Run Tests (find ALL working strategies) ← тестирует все и показывает рабочие
|
||
```
|
||
|
||
**Workflow:**
|
||
1. `sudo ./service.sh` → `11` → ждёте завершения тестов → видите список рабочих стратегий
|
||
2. `1` → вводите номер нужной стратегии → сервис установлен
|
||
3. `3` → проверяете, что сервис запущен
|
||
4. Открываете браузер: `youtube.com`, `discord.com`
|
||
|
||
**Если стратегия перестала работать:**
|
||
```bash
|
||
sudo ./service.sh
|
||
# 2 — Remove Services (очистить)
|
||
# 11 — Run Tests (перетестировать)
|
||
# 1 — Install Service (выбрать другую рабочую)
|
||
```
|
||
|
||
---
|
||
|
||
## Стратегии
|
||
|
||
| Стратегия | Описание |
|
||
|-----------|----------|
|
||
| `general` | Standard multisplit |
|
||
| `ALT` | Fake fakedsplit + ts fooling |
|
||
| `ALT2` | Multisplit pos=2 |
|
||
| `ALT3` | Hostfakesplit (Google/ya.ru) |
|
||
| `ALT4` | Fake multisplit + badseq |
|
||
| `ALT5` | **NOT RECOMMENDED** syndata multidisorder |
|
||
| `ALT6` | Uniform split-seqovl=681 |
|
||
| `ALT7` | Multisplit + syndata |
|
||
| `ALT8` | Fake + badseq-increment=2 |
|
||
| `ALT9` | Hostfakesplit (ozon.ru) |
|
||
| `ALT10` | Fake + ts fooling |
|
||
| `ALT11` | Fake multisplit + max_ru pattern |
|
||
| `FAKE_TLS_AUTO` | FAKE TLS multidisorder |
|
||
| `FAKE_TLS_AUTO_ALT` | FAKE TLS fakedsplit |
|
||
| `FAKE_TLS_AUTO_ALT2` | FAKE TLS multisplit badseq |
|
||
| `FAKE_TLS_AUTO_ALT3` | FAKE TLS + 4pda pattern |
|
||
| `SIMPLE_FAKE` | Simple fake |
|
||
| `SIMPLE_FAKE_ALT` | Simple fakedsplit |
|
||
| `SIMPLE_FAKE_ALT2` | Simple hostfakesplit |
|
||
|
||
**Ручной тест всех стратегий:**
|
||
```bash
|
||
sudo ./autotest.sh # интерактивно: тестит все и показывает рабочие
|
||
sudo ./autotest.sh --auto # автомат: найдёт и сразу установит первую рабочую
|
||
```
|
||
|
||
**Ручной запуск конкретной стратегии (без systemd):**
|
||
```bash
|
||
sudo ./run_strategy.sh ALT3
|
||
# Ctrl+C — остановить
|
||
```
|
||
|
||
---
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
.
|
||
├── 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/ # Модульные стратегии (.conf)
|
||
│ └── general.conf # Конфиг стратегии (RULE1=... RULE2=...)
|
||
├── utils/
|
||
│ ├── test_zapret.sh # curl-тесты
|
||
│ └── targets.txt # Цели
|
||
├── systemd/ # Юниты и таймеры
|
||
├── .service/
|
||
│ ├── version.txt # Версия
|
||
│ ├── hosts # Статичные IP
|
||
│ └── 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
|
||
```
|
||
|
||
---
|
||
|
||
## Важно для пользователей из России
|
||
|
||
GitHub заблокирован в РФ. Установщик **автоматически использует** прокси/зеркала, но рекомендуется:
|
||
|
||
1. **Если есть VPN/прокси:**
|
||
```bash
|
||
export HTTPS_PROXY=socks5://127.0.0.1:1080
|
||
sudo ./install.sh
|
||
```
|
||
|
||
2. **Если нет VPN на целевой машине** — подготовьте офлайн-пакет:
|
||
```bash
|
||
# На машине С интернетом (с VPN):
|
||
cd /opt/zapret
|
||
proxychains ./prepare_offline_bundle.sh
|
||
|
||
# Перенесите zapret-discord-youtube-linux-bundle.tar.gz
|
||
# на целевую машину, распакуйте и:
|
||
sudo ./install.sh --offline
|
||
```
|
||
|
||
3. **Если установка падает на скачивании:**
|
||
- Проверьте `.env.example` → создайте `.env` с `GITHUB_PROXY=...`
|
||
|
||
---
|
||
|
||
## update.sh — автообновление
|
||
|
||
```bash
|
||
# Полный pipeline: sync upstream → rebuild → test → install
|
||
sudo ./update.sh # интерактивно
|
||
sudo ./update.sh --auto # для cron: тихий режим
|
||
sudo ./update.sh --full-auto # форсировать пересборку + перетестирование
|
||
```
|
||
|
||
**Когда использовать `--full-auto`:**
|
||
- После обновления дистрибутива/ядра
|
||
- Если `nfqws` падает с segfault
|
||
- Если текущая стратегия перестала работать
|
||
|
||
---
|
||
|
||
## Troubleshooting
|
||
|
||
**nfqws падает с segfault:**
|
||
```bash
|
||
sudo ./update.sh --full-auto
|
||
# Пересобирает с -O0 (без оптимизаций)
|
||
```
|
||
|
||
**Стратегия перестала работать:**
|
||
```bash
|
||
sudo ./service.sh
|
||
# 2 — Remove Services
|
||
# 11 — Run Tests (перетестировать все)
|
||
# 1 — Install Service (выбрать другую)
|
||
```
|
||
|
||
**Discord не работает, хотя YouTube работает:**
|
||
```bash
|
||
# Добавьте домены в пользовательский список
|
||
echo "discord.gg" >> lists/list-general-user.txt
|
||
sudo systemctl restart zapret
|
||
```
|
||
|
||
**Steam не запускается:**
|
||
- Включите Game Filter: `sudo ./service.sh` → `4`
|
||
- Или добавьте порты Steam в `lists/list-general-user.txt`
|
||
|
||
**YouTube работает, но страница грузится медленно:**
|
||
```bash
|
||
sudo ./service.sh
|
||
# 6 — Auto-Update Check → вкл
|
||
# 9 — Check for Updates → обновить стратегии
|
||
```
|
||
|
||
---
|
||
|
||
## Автор и лицензия
|
||
|
||
Linux-адаптация: [Stitch505](https://giteas.stitch505.su/Stitch505)
|
||
Оригинальные стратегии: [Flowseal](https://github.com/Flowseal/zapret-discord-youtube)
|
||
Движок nfqws: [bol-van/zapret](https://github.com/bol-van/zapret)
|
||
|
||
MIT License.
|