Files
kaskad-pro/DOCS.md

311 lines
9.7 KiB
Markdown
Raw 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.
# Kaskad PRO — документация (v2.2)
## Что такое Kaskad PRO
Kaskad PRO — bash-скрипт для Linux, который создаёт **каскадный “мост”** (DNAT + MASQUERADE) между клиентом и вашим зарубежным VPN/Proxy сервером.
Схема:
- **Клиент** → **RU VPS (Kaskad PRO)****Foreign VPN/Proxy** → Интернет
Скрипт:
- Добавляет правила `iptables` (NAT + FORWARD)
- Включает `net.ipv4.ip_forward=1`
- Включает BBR (fq + bbr)
- Сохраняет правила (netfilter-persistent/iptables-persistent где доступно)
---
## Требования
- **VPS с Linux** (Ubuntu/Debian/CentOS/Fedora)
- Доступ **root**
- Исходящий доступ в интернет (для установки пакетов и GeoIP)
- Пакеты (скрипт установит автоматически): `iptables`, `curl`, `jq`, `qrencode` (+ persistent для Debian/Ubuntu)
---
## Установка
### Вариант A: репозиторий публичный
```bash
curl -sL https://raw.githubusercontent.com/anten-ka/kaskad-pro/main/install.sh -o install.sh && chmod +x install.sh && ./install.sh
```
### Вариант B: репозиторий приватный (GitHub PAT)
```bash
curl -sL -H "Authorization: token YOUR_GITHUB_PAT" https://raw.githubusercontent.com/anten-ka/kaskad-pro/main/install.sh -o install.sh && chmod +x install.sh && ./install.sh
```
### Повторный запуск меню
```bash
gokaskad
```
---
## Где взять ключи/токены
### 1) Telegram Bot Token (где взять токен бота)
Нужен для запуска Telegram-бота.
1. В Telegram откройте **`@BotFather`**
2. Отправьте команду: `/newbot`
3. Введите имя бота (любое)
4. Введите username бота (должен оканчиваться на `bot`)
5. Скопируйте **token**, который выдаст BotFather (формат `123456789:AA...`)
### 2) Telegram Chat ID (как привязать доступ)
В Kaskad PRO управление ограничено **по Chat ID**.
Вариант авто:
- В меню: `8) Telegram Bot → 2) Chat ID (авто)`
- Перед этим отправьте своему боту любое сообщение (например `/start`)
Вариант вручную:
- В меню: `8) Telegram Bot → 3) Chat ID (вручную)`
- Вставьте chat id (число)
### 3) GitHub PAT (для приватного репозитория)
Нужен только если репозиторий **private**, чтобы скачивать `install.sh` по `raw.githubusercontent.com`.
Рекомендуемый вариант: **fine-grained PAT** с доступом только к репозиторию.
1. GitHub → Settings → Developer settings → **Personal access tokens****Fine-grained tokens**
2. Create token
3. Repository access: **Only select repositories** → выберите `kaskad-pro`
4. Permissions: **Contents = Read-only**
5. Сгенерируйте и сохраните токен
Использование: в команде установки или обновления через `curl -H "Authorization: token ..."`
---
## Основные функции (терминальное меню)
Ниже — что делает каждый пункт меню и когда использовать.
### 1) AmneziaWG / WireGuard (UDP)
Создаёт каскад для UDP-сервисов (AWG/WireGuard/OpenVPN-UDP).
- Вы вводите `IP` и `порт`
- Создаётся правило: `udp :порт (RU VPS) → IP:порт (Foreign)`
На клиенте (AWG/WireGuard) меняете endpoint на IP вашего RU VPS.
### 2) VLESS / XRay (TCP)
Каскад для TCP-прокси (VLESS/VMess/Trojan/Reality и т.д.).
Логика та же:
- `tcp :порт (RU VPS) → IP:порт (Foreign)`
### 3) TProxy / MTProto (TCP)
Каскад для MTProto/TProxy (обычно для Telegram).
### 4) Custom Rule (TCP/UDP, разные порты)
Позволяет пробрасывать:
- разные вход/выход порты
- любой TCP/UDP сервис
Пример: клиент подключается к `RU_VPS:2222`, а трафик уходит на `FOREIGN:22` (SSH).
### 5) Правила
Показывает активные DNAT правила (включая IP каскада) и информацию о целевом сервере:
- имя
- примечание
- GeoIP (страна/ISP), если определено
### 6) Ping (live)
Live ping выбранного целевого IP:
- обновление каждые 1 сек
- ASCII-бар + цветовая шкала
- статистика min/max/avg и потери
### 7) Мониторинг (авто)
Мониторинг целевых серверов:
- Интервал проверок: **10 сек / 1 мин / 5 мин**
- Порог задержки: в ms
- Частота уведомлений (не чаще): **10 сек / 60 сек / 5 мин / 15 мин**
- Если задержка выше порога или timeout — отправляет alert в Telegram
Служба `kaskad-monitor`:
- запускается автоматически, если есть хотя бы один монитор
- останавливается автоматически, если мониторов нет
### 8) Telegram Bot
Настройка токена/Chat ID и управление службой `kaskad-bot`.
### 9) Удалить правило
Удаляет 1 DNAT правило и связанные INPUT/FORWARD правила.
### 10) Сбросить всё
Удаляет **только** правила, созданные Kaskad (по маркеру `kaskad`).
### 11) Обновить скрипт
Скачивает свежий `install.sh` из репозитория и заменяет `/usr/local/bin/gokaskad`.
Если репозиторий приватный — обновление нужно выполнять с PAT (или настроить отдельный update-token внутри скрипта/бота).
### 12) PROMO
Партнёрские хостинги и промокоды (плюс QR).
### 13) Инструкция
Встроенная краткая инструкция (страницы).
### 14) Имена серверов
Редактор имён и примечаний для целевых IP.
Данные хранятся в `/etc/kaskad/aliases`.
---
## Telegram Bot (как пользоваться)
### Запуск
1. Создайте токен через `@BotFather`
2. На сервере:
```bash
gokaskad
```
Меню:
- `8) Telegram Bot → 1) Токен бота` — вставьте token
- `8) Telegram Bot → 2) Chat ID (авто)` — отправьте боту `/start`, затем Enter в терминале
- `8) Telegram Bot → 4) Запустить`
В Telegram:
- Отправьте боту `/start`
### Режимы меню
- **Inline** — кнопки под сообщением (по умолчанию)
- **Reply keyboard** — большие кнопки внизу экрана
Переключение:
- В inline: кнопка `⌨️ Reply-клавиатура`
- В reply: команда `/inline`
### Добавление сервера через бота
Поток:
1. Нажимаете протокол (AWG/VLESS/MTProto/Custom)
2. Вводите IP
3. Бот делает:
- GeoIP (страна/ISP)
- ping 3 раза (1 сек)
4. Просит имя
5. Просит примечание
6. Просит порт(ы)
7. Создаёт правило
### Ping в боте
- 1 раз — мгновенно
- 10 раз — показывает список и среднее
- 60 сек — обновляет прогресс каждые 10 секунд, затем итог
### Мониторинг в боте
1. `📊 Монитор`` Добавить` → выбрать сервер
2. Выбрать интервал (10с/1мин/5мин)
3. Ввести порог (мс)
4. Выбрать частоту уведомлений (10с/60с/5мин/15мин)
---
## Где хранятся данные
| Путь | Назначение |
|---|---|
| `/usr/local/bin/gokaskad` | основной скрипт/команда |
| `/etc/kaskad/config` | BOT_TOKEN, BOT_CHAT_ID, MENU_STYLE |
| `/etc/kaskad/aliases` | IP → имя/примечание/GeoIP |
| `/etc/kaskad/monitors/*.conf` | мониторы IP |
| `/var/log/kaskad.log` | лог действий |
---
## Службы systemd
```bash
systemctl status kaskad-bot
journalctl -u kaskad-bot -f
systemctl status kaskad-monitor
journalctl -u kaskad-monitor -f
```
---
## Troubleshooting
### Бот не отвечает
- Проверьте, что задан `BOT_TOKEN` и `BOT_CHAT_ID`
- Проверьте службу:
```bash
systemctl status kaskad-bot
journalctl -u kaskad-bot -f
```
### Raw GitHub не скачивается
Если репозиторий приватный — нужен PAT:
```bash
curl -sL -H "Authorization: token YOUR_GITHUB_PAT" https://raw.githubusercontent.com/anten-ka/kaskad-pro/main/install.sh
```
### Мониторинг не запускается
Мониторинг запускается автоматически, если есть конфиги в `/etc/kaskad/monitors/`.
Проверьте:
```bash
ls -la /etc/kaskad/monitors/
systemctl status kaskad-monitor
```
---
## Лицензия
Для частного использования. Распространение запрещено.