Files

354 lines
12 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.