Files
2026-09-14 04:38:08 +00:00

168 lines
8.3 KiB
Markdown
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.
### > ⚠️ Fork of [arblark/cascad](https://github.com/arblark/cascad).
### > Оригинальный автор: [arblark](https://github.com/arblark).
### > В этом форке планируется добавить Ansible-автоматизацию развёртывания.
# Cascad
Скрипт для промежуточного сервера (VPS), который превращает его в прозрачный мост для VPN и прокси-трафика.
Устанавливается на **промежуточный** сервер между клиентом и целевым (зарубежным) VPN/прокси-сервером. Клиент подключается к мосту, а мост незаметно пересылает весь трафик дальше — на уровне ядра Linux через iptables NAT, без дополнительных процессов и потерь скорости.
## Зачем это нужно
- Целевой VPN-сервер скрыт — клиент видит только IP промежуточного сервера
- Не нужно менять настройки VPN/прокси на целевом сервере
- Работает с любым протоколом — WireGuard, AmneziaWG, VLESS, XRay, Reality, MTProto
- Скорость ограничена только каналом, а не софтом — трафик идёт через ядро
## Принцип работы
```
Клиент Промежуточный VPS Целевой сервер
(телефон/ПК) ───► (этот скрипт) ───► (VPN/Proxy за рубежом)
DNAT + MASQUERADE
```
Скрипт создаёт правила **DNAT + MASQUERADE** в iptables на промежуточном сервере. Ядро Linux пересылает пакеты напрямую — никаких дополнительных процессов.
## Возможности
- **Мультипротокольность** — UDP (WireGuard, AmneziaWG), TCP (VLESS, XRay, Reality, MTProto), режим `both` (TCP+UDP одновременно)
- **IPv4 и IPv6** — полная поддержка обоих стеков с точной валидацией адресов
- **Кастомные правила** — разные порты входа/выхода, любой протокол
- **Пакетное создание** — диапазон портов за одну операцию
- **Google BBR** — автоматическое ускорение TCP
- **Бэкап / восстановление** — iptables, ip6tables и конфигурация UFW
- **Бэкап sysctl.conf** — оригинальная конфигурация сохраняется перед модификацией
- **Автобэкап** — перед каждым добавлением, удалением и сбросом правил
- **Ротация** — автоматическая очистка старых бэкапов (>20) и ротация лога (>1 MB)
- **Проверка доступности** — тест TCP-соединения к целевым серверам
- **Проверка конфликтов портов** — предупреждение если порт уже используется локальным сервисом
- **CLI-режим** — управление без интерактивного меню (для скриптов и автоматизации)
- **Логирование** — все действия записываются в `/var/log/cascad.log`
- **Защита от дубликатов** — проверка перед добавлением правил
- **Валидация ввода** — проверка IP-адресов (включая строгую проверку IPv6) и портов
- **Откат при ошибке** — частично применённые правила автоматически удаляются
- **UFW-совместимость** — сохранение и восстановление оригинальной FORWARD policy
- **Lock-файл** — защита от одновременного запуска нескольких экземпляров
- **Обновление** — `cascad update` для обновления до последней версии
- **Удаление** — `cascad uninstall` для полного удаления с восстановлением конфигурации
- **Trap/Cleanup** — корректное завершение при прерывании (Ctrl+C)
- **Кросс-дистрибутив** — поддержка Debian/Ubuntu (apt), CentOS/Fedora (dnf/yum), Arch (pacman)
- **Современный conntrack** — использование `-m conntrack --ctstate` вместо устаревшего `-m state`
## Установка
Подключитесь к **промежуточному** VPS под `root` и выполните:
```bash
bash <(curl -sL https://raw.githubusercontent.com/arblark/cascad/main/cascad.sh)
```
После первого запуска скрипт доступен глобально:
```bash
cascad
```
## Быстрый старт
1. Установите скрипт на промежуточный VPS (см. выше).
2. В меню выберите протокол (WireGuard, VLESS и т.д.).
3. Введите IP и порт **целевого** (зарубежного) сервера.
4. В клиенте (AmneziaWG, v2rayNG, Nekobox и т.д.) замените адрес сервера на **IP промежуточного VPS**.
5. Готово — трафик прозрачно идёт через мост.
## Использование
### Интерактивное меню
```bash
cascad
```
### CLI-режим
```bash
# Добавить правило (порт входа = порт выхода)
cascad add tcp 203.0.113.10 443
# Добавить правило с разными портами
cascad add udp 203.0.113.10 51820 51821
# Добавить правило сразу для TCP и UDP
cascad add both 203.0.113.10 443
# Список правил
cascad list
# Удалить правило
cascad del tcp 203.0.113.10 443 443
# Проверить доступность целей
cascad check
# Создать бэкап (iptables + UFW)
cascad backup
# Восстановить из бэкапа
cascad restore
# Статус системы
cascad status
# Обновить скрипт
cascad update
# Сбросить все правила
cascad flush
# Полностью удалить
cascad uninstall
# Справка
cascad help
```
## Версии
- **v2.0.0** — бэкап UFW, ротация, lock-файл, rollback, проверка конфликтов портов, `both` протокол, `update`, `uninstall`, кросс-дистрибутив, conntrack
- **v1.0.0** — базовая функциональность: NAT-перенаправление, бэкап iptables, CLI
Для установки конкретной версии:
```bash
# v1.0.0
bash <(curl -sL https://raw.githubusercontent.com/arblark/cascad/v1.0.0/cascad.sh)
# v2.0.0 (последняя)
bash <(curl -sL https://raw.githubusercontent.com/arblark/cascad/v2.0.0/cascad.sh)
```
## Требования
- Linux (Debian/Ubuntu, CentOS/Fedora, Arch)
- root-доступ
- iptables
Зависимости устанавливаются автоматически при первом запуске.
## Структура файлов
| Путь | Описание |
|---|---|
| `/usr/local/bin/cascad` | Глобальная команда |
| `/var/log/cascad.log` | Лог действий |
| `/etc/cascad/backups/` | Бэкапы правил iptables + UFW |
| `/etc/cascad/state` | Сохранённое состояние (оригинальные настройки) |
| `/var/run/cascad.lock` | Lock-файл |
## Лицензия
MIT
---
cascade VPN, iptables NAT forwarding, DNAT MASQUERADE, port forwarding VPS, WireGuard relay, AmneziaWG bridge, VLESS proxy chain, XRay Reality relay, MTProto proxy, каскад VPN, проброс портов, мост VPN, обход блокировок, IPv6 NAT, Google BBR, промежуточный сервер, relay server, VPN bridge, transparent proxy