mirror of
https://github.com/anten-ka/kaskad-pro.git
synced 2026-05-19 09:26:02 +00:00
Kaskad PRO v2.3: progress bar on startup, full uninstall with double confirmation, docs and user guide
Made-with: Cursor
This commit is contained in:
310
DOCS.md
Normal file
310
DOCS.md
Normal file
@@ -0,0 +1,310 @@
|
||||
# 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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Лицензия
|
||||
|
||||
Для частного использования. Распространение запрещено.
|
||||
|
||||
37
README.md
37
README.md
@@ -1,9 +1,11 @@
|
||||
# Kaskad PRO v2.0
|
||||
# Kaskad PRO v2.2
|
||||
|
||||
**Каскадный менеджер VPN / Proxy с Telegram-ботом, мониторингом и пингом.**
|
||||
**Каскадный менеджер VPN / Proxy с Telegram-ботом, мониторингом, GeoIP и live ping.**
|
||||
|
||||
> Канал: [YouTube @antenkaru](https://www.youtube.com/@antenkaru)
|
||||
|
||||
**Не разбираетесь в серверах и терминале?** → [ИНСТРУКЦИЯ_ДЛЯ_ПОЛЬЗОВАТЕЛЯ.md](ИНСТРУКЦИЯ_ДЛЯ_ПОЛЬЗОВАТЕЛЯ.md) — пошагово простыми словами.
|
||||
|
||||
---
|
||||
|
||||
## Возможности
|
||||
@@ -14,10 +16,12 @@
|
||||
| **Каскад TCP** | VLESS, XRay, VMess, Reality, Trojan |
|
||||
| **Каскад MTProto** | Telegram-прокси |
|
||||
| **Custom Rule** | Разные порты входа/выхода, SSH, RDP и т.д. |
|
||||
| **Live Ping** | Пинг целевого сервера в терминале (обновление 1 сек) |
|
||||
| **Telegram Bot** | Полное управление через кнопки прямо из Telegram |
|
||||
| **GeoIP + Ping-test** | При добавлении IP: GeoIP (страна/ISP) + 3 пинга |
|
||||
| **Live Ping** | Пинг с ASCII-графикой (обновление 1 сек) |
|
||||
| **Telegram Bot** | Полное управление через кнопки (Inline и Reply-клавиатура) |
|
||||
| **Ping в боте** | 1 раз / 10 раз (среднее) / 60 секунд (непрерывно) |
|
||||
| **Мониторинг** | Автопинг каждые 10с / 1мин / 5мин с алертами в Telegram |
|
||||
| **Мониторинг** | Автопинг с порогом и частотой уведомлений (10с/60с/5м/15м) |
|
||||
| **Имена/примечания** | Имена IP серверов + примечания, отображаются везде |
|
||||
| **BBR Turbo** | Автоматическое включение Google BBR |
|
||||
| **Безопасность** | Валидация IP/портов, маркировка правил, изоляция iptables |
|
||||
|
||||
@@ -25,13 +29,21 @@
|
||||
|
||||
## Установка
|
||||
|
||||
Подключитесь к VPS (Ubuntu/Debian/CentOS) под `root`:
|
||||
Подключитесь к VPS (Ubuntu/Debian/CentOS/Fedora) под `root`.
|
||||
|
||||
### Вариант A: репозиторий публичный
|
||||
|
||||
```bash
|
||||
wget -O install.sh "URL_СКРИПТА" && chmod +x install.sh && ./install.sh
|
||||
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
|
||||
```
|
||||
|
||||
Далее скрипт установит зависимости, включит IP forwarding/BBR и создаст глобальную команду `gokaskad`.
|
||||
|
||||
```bash
|
||||
gokaskad
|
||||
@@ -39,6 +51,12 @@ gokaskad
|
||||
|
||||
---
|
||||
|
||||
## Документация
|
||||
|
||||
Полная документация: **`DOCS.md`**
|
||||
|
||||
---
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
### 1. Создать каскад (пример WireGuard)
|
||||
@@ -89,6 +107,7 @@ IP: 45.10.20.30
|
||||
11) Обновить скрипт
|
||||
12) PROMO
|
||||
13) Инструкция (7 страниц)
|
||||
14) Имена серверов
|
||||
0) Выход
|
||||
```
|
||||
|
||||
@@ -106,6 +125,7 @@ IP: 45.10.20.30
|
||||
📊 Мониторинг — добавить/удалить/список мониторов
|
||||
❌ Удалить правило — удалить конкретный каскад
|
||||
🗑 Сбросить всё — полная очистка (с подтверждением)
|
||||
⌨️ Reply-клавиатура — переключение типа меню
|
||||
```
|
||||
|
||||
---
|
||||
@@ -117,6 +137,7 @@ IP: 45.10.20.30
|
||||
| `/usr/local/bin/gokaskad` | Глобальная команда запуска |
|
||||
| `/etc/kaskad/config` | Токен бота и Chat ID |
|
||||
| `/etc/kaskad/monitors/` | Конфигурации мониторов |
|
||||
| `/etc/kaskad/aliases` | Имена/примечания/GeoIP для IP |
|
||||
| `/var/log/kaskad.log` | Лог всех действий |
|
||||
|
||||
---
|
||||
|
||||
174
install.sh
174
install.sh
@@ -2,12 +2,12 @@
|
||||
set -o pipefail
|
||||
|
||||
# ══════════════════════════════════════════════════════════════
|
||||
# KASKAD PRO v2.2 — Cascading VPN / Proxy Manager
|
||||
# KASKAD PRO v2.3 — Cascading VPN / Proxy Manager
|
||||
# Telegram Bot · Live Ping · Monitoring · Alerts · GeoIP · System Stats
|
||||
# Channel: https://www.youtube.com/@antenkaru
|
||||
# ══════════════════════════════════════════════════════════════
|
||||
|
||||
KASKAD_VERSION="2.2"
|
||||
KASKAD_VERSION="2.3"
|
||||
KASKAD_DIR="/etc/kaskad"
|
||||
KASKAD_CONF="$KASKAD_DIR/config"
|
||||
KASKAD_LOG="/var/log/kaskad.log"
|
||||
@@ -547,6 +547,79 @@ flush_rules() {
|
||||
read -p "Нажмите Enter..."
|
||||
}
|
||||
|
||||
full_uninstall() {
|
||||
clear
|
||||
echo -e "\n${RED}╔══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${RED}║ ⚠ ПОЛНОЕ УДАЛЕНИЕ KASKAD PRO ⚠ ║${NC}"
|
||||
echo -e "${RED}╚══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo -e "${WHITE}Будут удалены:${NC}"
|
||||
echo -e " ${RED}•${NC} Все правила каскада (iptables)"
|
||||
echo -e " ${RED}•${NC} Telegram-бот и мониторинг"
|
||||
echo -e " ${RED}•${NC} Конфигурация ${WHITE}/etc/kaskad/${NC}"
|
||||
echo -e " ${RED}•${NC} Команда ${WHITE}gokaskad${NC}"
|
||||
echo -e " ${RED}•${NC} Логи ${WHITE}/var/log/kaskad.log${NC}"
|
||||
echo ""
|
||||
echo -e "${GREEN}НЕ будет затронуто:${NC}"
|
||||
echo -e " ${GREEN}•${NC} Системные пакеты (iptables, jq, curl, qrencode)"
|
||||
echo -e " ${GREEN}•${NC} Ваши VPN / прокси (WireGuard, XRay и т.д.)"
|
||||
echo -e " ${GREEN}•${NC} Настройки sysctl (ip_forward, bbr)"
|
||||
echo ""
|
||||
read -p "$(echo -e "${RED}Удалить Kaskad PRO полностью? (y/n): ${NC}")" confirm1
|
||||
[[ "$confirm1" != "y" ]] && { echo -e "\n${CYAN}Отменено.${NC}"; read -p "Нажмите Enter..."; return; }
|
||||
local words=("УДАЛИТЬ" "СТЕРЕТЬ" "СНЕСТИ" "УНИЧТОЖИТЬ" "ПРОЩАЙ")
|
||||
local word="${words[$((RANDOM % ${#words[@]}))]}"
|
||||
echo ""
|
||||
echo -e "${RED}Последний шанс! Введите слово ${WHITE}${word}${RED} для подтверждения:${NC}"
|
||||
read -p "> " confirm2
|
||||
if [[ "$confirm2" != "$word" ]]; then
|
||||
echo -e "\n${CYAN}Неверное слово. Удаление отменено.${NC}"
|
||||
read -p "Нажмите Enter..."
|
||||
return
|
||||
fi
|
||||
echo ""
|
||||
echo -e "${YELLOW}Удаление Kaskad PRO...${NC}\n"
|
||||
if systemctl is-active kaskad-bot &>/dev/null; then
|
||||
systemctl stop kaskad-bot 2>/dev/null; systemctl disable kaskad-bot 2>/dev/null
|
||||
fi
|
||||
[ -f "$BOT_PID_FILE" ] && { kill "$(cat "$BOT_PID_FILE")" 2>/dev/null; rm -f "$BOT_PID_FILE"; }
|
||||
rm -f /etc/systemd/system/kaskad-bot.service
|
||||
echo -e " ${GREEN}✓${NC} Telegram-бот остановлен"
|
||||
if systemctl is-active kaskad-monitor &>/dev/null; then
|
||||
systemctl stop kaskad-monitor 2>/dev/null; systemctl disable kaskad-monitor 2>/dev/null
|
||||
fi
|
||||
[ -f "$MONITOR_PID_FILE" ] && { kill "$(cat "$MONITOR_PID_FILE")" 2>/dev/null; rm -f "$MONITOR_PID_FILE"; }
|
||||
rm -f /etc/systemd/system/kaskad-monitor.service
|
||||
systemctl daemon-reload 2>/dev/null
|
||||
echo -e " ${GREEN}✓${NC} Мониторинг остановлен"
|
||||
while iptables -t nat -S PREROUTING 2>/dev/null | grep -q "DNAT"; do
|
||||
local rule; rule=$(iptables -t nat -S PREROUTING | grep "DNAT" | head -1)
|
||||
eval "iptables -t nat -D ${rule#-A }" 2>/dev/null
|
||||
done
|
||||
for chain in INPUT FORWARD; do
|
||||
while iptables -S "$chain" 2>/dev/null | grep -q "kaskad"; do
|
||||
local rule; rule=$(iptables -S "$chain" | grep "kaskad" | head -1)
|
||||
eval "iptables -D ${rule#-A }" 2>/dev/null
|
||||
done
|
||||
done
|
||||
save_iptables
|
||||
echo -e " ${GREEN}✓${NC} Правила iptables удалены"
|
||||
rm -rf "$KASKAD_DIR"
|
||||
echo -e " ${GREEN}✓${NC} Конфигурация удалена"
|
||||
rm -f "$KASKAD_LOG"
|
||||
echo -e " ${GREEN}✓${NC} Логи удалены"
|
||||
rm -f /usr/local/bin/gokaskad
|
||||
echo -e " ${GREEN}✓${NC} Команда gokaskad удалена"
|
||||
echo ""
|
||||
echo -e "${GREEN}══════════════════════════════════════════${NC}"
|
||||
echo -e "${GREEN} Kaskad PRO полностью удалён.${NC}"
|
||||
echo -e "${WHITE} Спасибо, что пользовались!${NC}"
|
||||
echo -e "${GREEN}══════════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
read -p "Нажмите Enter..."
|
||||
exit 0
|
||||
}
|
||||
|
||||
manage_aliases_menu() {
|
||||
while true; do
|
||||
clear
|
||||
@@ -1428,6 +1501,7 @@ show_menu() {
|
||||
echo -e "12) ${YELLOW}PROMO${NC}"
|
||||
echo -e "13) ${MAGENTA}📚 Инструкция${NC}"
|
||||
echo -e "14) ${WHITE}Имена серверов${NC}"
|
||||
echo -e "15) ${RED}⚠ Удалить Kaskad PRO${NC}"
|
||||
echo -e " 0) Выход"
|
||||
echo -e "------------------------------------------------------"
|
||||
read -p "Выбор: " ch
|
||||
@@ -1436,10 +1510,102 @@ show_menu() {
|
||||
3) configure_rule "tcp" "MTProto/TProxy";; 4) configure_custom_rule;;
|
||||
5) list_active_rules;; 6) ping_menu;; 7) monitoring_menu;; 8) bot_menu;;
|
||||
9) delete_single_rule;; 10) flush_rules;; 11) self_update;; 12) show_promo;;
|
||||
13) show_instructions;; 14) manage_aliases_menu;; 0) exit 0;; esac
|
||||
13) show_instructions;; 14) manage_aliases_menu;; 15) full_uninstall;; 0) exit 0;; esac
|
||||
done
|
||||
}
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# STARTUP WITH PROGRESS
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
run_startup() {
|
||||
local total=7 s=0
|
||||
|
||||
clear; echo ""
|
||||
echo -e "${MAGENTA}╔══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${MAGENTA}║ KASKAD PRO v${KASKAD_VERSION} — Загрузка ║${NC}"
|
||||
echo -e "${MAGENTA}╚══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
|
||||
((s++))
|
||||
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} Проверка прав root..." "$s" "$total"
|
||||
check_root
|
||||
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} Права root подтверждены \n" "$s" "$total"
|
||||
|
||||
((s++))
|
||||
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} Загрузка конфигурации..." "$s" "$total"
|
||||
init_config
|
||||
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} Конфигурация загружена \n" "$s" "$total"
|
||||
|
||||
((s++))
|
||||
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} Установка gokaskad..." "$s" "$total"
|
||||
if [ "$(readlink -f "$0" 2>/dev/null)" != "/usr/local/bin/gokaskad" ]; then
|
||||
cp -f "$0" "/usr/local/bin/gokaskad"; chmod +x "/usr/local/bin/gokaskad"
|
||||
fi
|
||||
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} Команда gokaskad \n" "$s" "$total"
|
||||
|
||||
((s++))
|
||||
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} IP Forwarding + BBR..." "$s" "$total"
|
||||
if grep -qE '^[[:space:]]*#?[[:space:]]*net\.ipv4\.ip_forward' /etc/sysctl.conf; then
|
||||
sed -i 's/^#*\s*net\.ipv4\.ip_forward.*/net.ipv4.ip_forward=1/' /etc/sysctl.conf
|
||||
else
|
||||
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
|
||||
fi
|
||||
grep -q "^net.core.default_qdisc=fq" /etc/sysctl.conf || echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
|
||||
grep -q "^net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf || echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
|
||||
sysctl -p > /dev/null 2>&1
|
||||
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} IP Forwarding + BBR Turbo \n" "$s" "$total"
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
local need_install=0
|
||||
for cmd in iptables jq curl qrencode; do command -v "$cmd" &>/dev/null || need_install=1; done
|
||||
dpkg -s iptables-persistent &>/dev/null 2>&1 || need_install=1
|
||||
((s++))
|
||||
if [ "$need_install" -eq 1 ]; then
|
||||
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} Установка пакетов" "$s" "$total"
|
||||
( while true; do printf "."; sleep 1; done ) &
|
||||
local dpid=$!
|
||||
if command -v apt-get &>/dev/null; then
|
||||
apt-get update -y > /dev/null 2>&1
|
||||
apt-get install -y iptables-persistent netfilter-persistent qrencode jq curl procps > /dev/null 2>&1
|
||||
elif command -v dnf &>/dev/null; then
|
||||
dnf install -y iptables-services jq qrencode curl procps-ng > /dev/null 2>&1
|
||||
elif command -v yum &>/dev/null; then
|
||||
yum install -y iptables-services jq qrencode curl procps-ng > /dev/null 2>&1
|
||||
else
|
||||
kill $dpid 2>/dev/null; wait $dpid 2>/dev/null
|
||||
printf "\r ${CYAN}[%d/%d]${NC} ${RED}✗${NC} Пакетный менеджер не найден! \n" "$s" "$total"
|
||||
exit 1
|
||||
fi
|
||||
kill $dpid 2>/dev/null; wait $dpid 2>/dev/null
|
||||
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} Пакеты установлены \n" "$s" "$total"
|
||||
else
|
||||
printf " ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} Все зависимости на месте \n" "$s" "$total"
|
||||
fi
|
||||
|
||||
((s++))
|
||||
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} Сетевой интерфейс..." "$s" "$total"
|
||||
detect_interface
|
||||
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} Интерфейс: %-20s \n" "$s" "$total" "$IFACE"
|
||||
|
||||
((s++))
|
||||
printf " ${CYAN}[%d/%d]${NC} ${YELLOW}⏳${NC} Внешний IP..." "$s" "$total"
|
||||
get_my_ip
|
||||
printf "\r ${CYAN}[%d/%d]${NC} ${GREEN}✓${NC} IP: %-25s \n" "$s" "$total" "$MY_IP"
|
||||
|
||||
echo ""
|
||||
local w=40 bar=""
|
||||
for ((i=0; i<w; i++)); do bar+="█"; done
|
||||
echo -e " ${CYAN}[${GREEN}${bar}${CYAN}]${NC} ${GREEN}100%${NC}"
|
||||
echo ""
|
||||
echo -e " ${GREEN}✅ Kaskad PRO v${KASKAD_VERSION} готов к работе!${NC}"
|
||||
echo ""
|
||||
sleep 2
|
||||
|
||||
show_promo
|
||||
show_menu
|
||||
}
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# ENTRY POINT
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
@@ -1447,5 +1613,5 @@ show_menu() {
|
||||
case "${1:-}" in
|
||||
--bot-daemon) init_config; bot_daemon ;;
|
||||
--monitor-daemon) init_config; monitor_daemon ;;
|
||||
*) check_root; init_config; prepare_system; detect_interface; get_my_ip; show_promo; show_menu ;;
|
||||
*) run_startup ;;
|
||||
esac
|
||||
|
||||
165
ИНСТРУКЦИЯ_ДЛЯ_ПОЛЬЗОВАТЕЛЯ.md
Normal file
165
ИНСТРУКЦИЯ_ДЛЯ_ПОЛЬЗОВАТЕЛЯ.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# Kaskad PRO v2.3 — инструкция простыми словами
|
||||
|
||||
Эта инструкция для тех, кто не разбирается в компьютерах. Всё по шагам, без сложных слов.
|
||||
|
||||
---
|
||||
|
||||
## Что это такое?
|
||||
|
||||
**Kaskad PRO** — это программа для сервера. Она делает так: вы подключаетесь к **вашему серверу в России**, а он незаметно отправляет ваш трафик на **зарубежный VPN или прокси**. Провайдер видит только подключение к российскому серверу.
|
||||
|
||||
**Проще:** вы заходите на российский сервер, а он сам «дозванивается» до зарубежного. Вы этим не занимаетесь — всё настроено один раз.
|
||||
|
||||
---
|
||||
|
||||
## Что вам понадобится
|
||||
|
||||
1. **Сервер (VPS)** — арендованный компьютер в интернете с Linux. Обычно у хостера есть адрес сервера (IP), логин и пароль. Без сервера программа некуда ставить.
|
||||
2. **Программа для входа на сервер** — например **Termius** (телефон/планшет) или **PuTTY** (компьютер). В ней вы вводите IP сервера, логин и пароль и попадаете в «чёрное окно» — это и есть доступ к серверу.
|
||||
3. **Данные вашего зарубежного VPN/прокси** — IP-адрес и порт. Их даёт тот, у кого вы купили VPN или прокси (или вы их видите в приложении Amnezia, v2rayNG и т.п.).
|
||||
|
||||
---
|
||||
|
||||
## Шаг 1. Войти на сервер
|
||||
|
||||
1. Откройте Termius (или PuTTY).
|
||||
2. Создайте новое подключение: укажите **IP-адрес** сервера, **логин** (часто `root`) и **пароль**.
|
||||
3. Подключитесь. Откроется окно с чёрным фоном и текстом — это терминал.
|
||||
|
||||
Дальше все команды нужно **вводить в это окно** и нажимать **Enter**.
|
||||
|
||||
---
|
||||
|
||||
## Шаг 2. Установить Kaskad PRO
|
||||
|
||||
Вам дадут **одну длинную команду**. Её нужно:
|
||||
|
||||
1. **Скопировать целиком** (от начала до конца).
|
||||
2. **Вставить** в чёрное окно (правой кнопкой мыши или долгим нажатием → Вставить).
|
||||
3. Нажать **Enter**.
|
||||
|
||||
Пример команды (вам могут дать другую, с вашей ссылкой или токеном):
|
||||
|
||||
```
|
||||
curl -sL https://raw.githubusercontent.com/anten-ka/kaskad-pro/main/install.sh -o install.sh && chmod +x install.sh && ./install.sh
|
||||
```
|
||||
|
||||
Что будет: появятся надписи, возможно попросят нажать Enter. В конце откроется **меню с цифрами** — это главное меню Kaskad PRO. Установка закончена.
|
||||
|
||||
---
|
||||
|
||||
## Шаг 3. Открыть меню в следующий раз
|
||||
|
||||
Когда вы снова зайдёте на сервер, чтобы что-то изменить, в чёрном окне нужно просто напечатать:
|
||||
|
||||
```
|
||||
gokaskad
|
||||
```
|
||||
|
||||
и нажать **Enter**. Снова откроется меню с цифрами.
|
||||
|
||||
---
|
||||
|
||||
## Шаг 4. Добавить «мост» (каскад)
|
||||
|
||||
В меню есть пункты **1, 2, 3, 4** — это разные типы подключений.
|
||||
|
||||
- **1** — для AmneziaWG, WireGuard (обычно для телефона/планшета).
|
||||
- **2** — для VLESS, XRay (часто в приложениях типа v2rayNG, NekoBox).
|
||||
- **3** — для прокси Telegram (MTProto).
|
||||
- **4** — для всего остального (разные порты, SSH, RDP и т.д.).
|
||||
|
||||
**Что делать:**
|
||||
|
||||
1. Введите цифру (например **1**) и нажмите Enter.
|
||||
2. Программа спросит **IP-адрес**. Введите адрес вашего **зарубежного** сервера (четыре числа через точку, например `45.10.20.30`). Enter.
|
||||
3. Потом покажется проверка (страна, пинг) и попросят **имя** — можно написать любое, например «Мой VPN», или нажать Enter и пропустить.
|
||||
4. Попросят **примечание** — тоже по желанию, можно Enter.
|
||||
5. Попросят **порт** — введите число (например `51820`). Enter.
|
||||
6. Покажут, что будет сделано, и спросят «Применить? (y/n)». Напечатайте **y** и Enter.
|
||||
|
||||
Готово. Теперь в **приложении на телефоне или компьютере** (Amnezia, v2rayNG и т.д.) нужно в настройках соединения **поменять адрес сервера**: вместо зарубежного IP указать **IP этого (российского) сервера**. Порт оставить тот же. Тогда трафик пойдёт: вы → российский сервер → зарубежный VPN.
|
||||
|
||||
---
|
||||
|
||||
## Шаг 5. Настроить бота в Telegram
|
||||
|
||||
Бот в Telegram позволяет управлять сервером с телефона: смотреть правила, пинг, добавлять мосты и т.д.
|
||||
|
||||
### 5.1. Создать бота и получить токен
|
||||
|
||||
1. Откройте **Telegram**.
|
||||
2. В поиске введите: **@BotFather** (один бот, с галочкой).
|
||||
3. Нажмите «Запустить» или напишите **/start**.
|
||||
4. Напишите **/newbot**.
|
||||
5. BotFather спросит **имя** бота — любое (например: «Мой Kaskad»). Отправьте.
|
||||
6. Потом попросит **username** — должно заканчиваться на **bot** (например: `my_kaskad_bot`). Отправьте.
|
||||
7. В ответ BotFather пришлёт **длинную строку** (токен). Она выглядит так: `7123456789:AAH...` — это **токен бота**. Скопируйте её целиком и сохраните.
|
||||
|
||||
### 5.2. Вставить токен в Kaskad PRO
|
||||
|
||||
1. На сервере откройте меню: введите **gokaskad** и Enter.
|
||||
2. В меню выберите **8** (Telegram Bot). Enter.
|
||||
3. Выберите **1** (Установить токен бота). Enter.
|
||||
4. Вставьте скопированный токен и нажмите Enter.
|
||||
5. Напишут, что сохранено. Нажмите Enter.
|
||||
|
||||
### 5.3. Привязать свой Telegram (Chat ID)
|
||||
|
||||
Чтобы бот слушал только вас, нужно «познакомить» его с вашим аккаунтом.
|
||||
|
||||
1. В меню бота на сервере выберите **2** (Получить Chat ID). Enter.
|
||||
2. **Не нажимая пока Enter в терминале**, откройте Telegram, найдите **вашего бота** (по имени, которое вы дали) и напишите ему любое сообщение, например **Привет** или **/start**.
|
||||
3. Вернитесь в чёрное окно на сервере и нажмите **Enter**.
|
||||
4. Программа покажет ваш Chat ID и сохранит его. Готово.
|
||||
|
||||
### 5.4. Включить бота
|
||||
|
||||
В том же меню (8 — Telegram Bot) выберите **4** (Запустить бота). Enter. Должно написать, что бот запущен.
|
||||
|
||||
Теперь откройте бота в Telegram и напишите **/start** — появится меню с кнопками.
|
||||
|
||||
---
|
||||
|
||||
## Как пользоваться ботом в Telegram
|
||||
|
||||
- **Кнопки внизу сообщения** — нажимайте на них, бот будет показывать новые сообщения и новые кнопки.
|
||||
- **Добавить мост:** нажмите нужный тип (AWG, VLESS, MTProto или Custom). Бот попросит ввести IP — напишите в чат и отправьте. Дальше он будет просить порт, имя и т.д. — просто отвечайте в чате.
|
||||
- **Посмотреть правила:** кнопка «Правила» — покажет список настроенных мостов.
|
||||
- **Пинг:** кнопка «Ping» — выберите сервер, потом «1 раз», «10 раз» или «60 сек» — бот пришлёт результат.
|
||||
- **Мониторинг:** кнопка «Монитор» — можно добавить проверку сервера; если связь станет плохой, бот пришлёт уведомление.
|
||||
- **Большие кнопки внизу экрана:** если нажали «Reply-клавиатура», под полем ввода появятся большие кнопки. Нажимайте их как меню. Чтобы вернуть обычные кнопки под сообщениями, напишите боту **/inline**.
|
||||
|
||||
---
|
||||
|
||||
## Что делать, если не получается
|
||||
|
||||
- **«Запустите с правами root»** — вы зашли на сервер не под главным пользователем. Обычно нужно подключаться с логином **root** и паролем, который дал хостинг.
|
||||
- **Бот не отвечает** — проверьте: токен вставлен (п. 5.2), Chat ID получен (п. 5.3), бот запущен (п. 5.4). Если всё сделали — перезапустите бота: меню 8 → пункт 5 (Остановить), потом пункт 4 (Запустить).
|
||||
- **Не знаю IP сервера** — IP арендованного сервера (VPS) пишет хостинг в панели управления. Это четыре числа через точку.
|
||||
- **Не знаю порт VPN** — смотрите в приложении, где подключаетесь к VPN (Amnezia, v2rayNG и т.д.), в настройках сервера обычно указан порт (например 51820, 443).
|
||||
|
||||
---
|
||||
|
||||
## Кратко: что нажимать в меню
|
||||
|
||||
| Цифра | Что это |
|
||||
|-------|--------|
|
||||
| 1 | Настроить WireGuard/Amnezia (UDP) |
|
||||
| 2 | Настроить VLESS (TCP) |
|
||||
| 3 | Настроить прокси Telegram |
|
||||
| 4 | Настроить своё правило (разные порты) |
|
||||
| 5 | Показать все мои правила |
|
||||
| 6 | Проверить пинг сервера (живой график) |
|
||||
| 7 | Мониторинг (уведомления в Telegram) |
|
||||
| 8 | Настройка Telegram-бота |
|
||||
| 9 | Удалить одно правило |
|
||||
| 10 | Сбросить все правила |
|
||||
| 11 | Обновить программу |
|
||||
| 12 | Промо хостингов |
|
||||
| 13 | Инструкция в программе |
|
||||
| 14 | Имена и примечания серверов |
|
||||
| 15 | Полностью удалить Kaskad PRO с сервера |
|
||||
| 0 | Выход |
|
||||
|
||||
Если что-то непонятно — выбирайте в меню **13** (Инструкция): там короткая подсказка по шагам прямо в программе.
|
||||
Reference in New Issue
Block a user