Files
go_warp_pro/README.md

520 lines
24 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.
# WARP Manager v2.0
**Cloudflare WARP для 3X-UI и AmneziaWG**
Один скрипт — два режима. Автоматическая установка и управление Cloudflare WARP на VPS-сервере.
WARP даёт «чистый» IP от Cloudflare, который не заблокирован популярными сервисами (ChatGPT, Netflix, Spotify и др.).
> Канал: [YouTube @antenkaru](https://www.youtube.com/@antenkaru)
---
## Два режима работы
### Режим 3X-UI
```
Клиент → 3X-UI (Xray) → SOCKS5 (WARP 127.0.0.1:40000) → Cloudflare → Интернет
```
Нативный `warp-cli`, SOCKS5-прокси на `127.0.0.1:40000`. Маршрутизация по доменам настраивается в 3X-UI (Xray routing). Основной IP сервера **не меняется** — через WARP идёт только тот трафик, который вы укажете.
### Режим AmneziaWG
```
Клиент → AmneziaWG Docker → warp WG interface → Cloudflare → Интернет
```
WireGuard-интерфейс WARP внутри Docker-контейнера AmneziaWG. Маршрутизация **per-client** — вы выбираете, каких именно клиентов пускать через WARP. Трафик выбранных клиентов идёт через Cloudflare, остальные клиенты работают напрямую.
Скрипт автоматически определяет, что установлено на сервере (3X-UI или AmneziaWG Docker), и предлагает соответствующий режим.
---
## Возможности
| Функция | 3X-UI | AmneziaWG |
|---------|:-----:|:---------:|
| Установка WARP в один клик | ✅ | ✅ |
| Telegram-бот | ✅ | ✅ |
| Перевыпуск ключа (смена WARP IP) | ✅ | ✅ |
| Автоперезапуск через systemd | ✅ | ✅ |
| Полное удаление | ✅ | ✅ |
| SOCKS5-прокси | ✅ | — |
| JSON-конфиги для Xray | ✅ | — |
| Маршрутизация по доменам | ✅ | — |
| Изменение порта SOCKS5 | ✅ | — |
| Управление клиентами (переключатели ✅/☐ в одном меню) | — | ✅ |
| WireGuard внутри Docker | — | ✅ |
| Перезапуск контейнера | — | ✅ |
---
## Установка
Команда для установки и сам скрипт **не публикуются в открытом доступе**.
Получить готовую команду установки и доступ к скрипту можно в **Telegram-группе «anten-ka club»** по подписке на Boosty:
**[→ Оформить подписку и получить доступ (Boosty)](https://boosty.to/anten-ka/purchase/3134076?ssource=DIRECT&share=subscription_link)**
После установки скрипт доступен по команде:
```bash
gowarp
```
**Важно:** чтобы команда `gowarp` сохранялась и работала после выхода, используйте установку **в два шага** (сначала скачать скрипт в файл, затем запустить), а не через `bash <(curl ...)`. В группе по подписке даётся готовая команда.
### Требования
**Для режима 3X-UI:**
- VPS с Ubuntu/Debian
- Установленный 3X-UI (панель должна быть активна)
**Для режима AmneziaWG:**
- VPS с Ubuntu/Debian
- Docker
- Запущенный контейнер AmneziaWG (развёрнутый через приложение Amnezia VPN)
---
## Интеграция с 3X-UI — пошаговая инструкция
> Этот раздел только для **режима 3X-UI**. Для AmneziaWG перейдите к разделу [Интеграция с AmneziaWG](#интеграция-с-amneziawg--пошаговая-инструкция).
### Как это работает
1. Скрипт устанавливает `cloudflare-warp` на сервер
2. WARP работает в режиме **SOCKS5-прокси** на `127.0.0.1:40000`
3. В 3X-UI добавляется **outbound** типа SOCKS с тегом `warp`
4. В маршрутизации указываете, какие сайты направлять через WARP
Основной IP сервера **не меняется**. Через WARP идёт только тот трафик, который вы настроите в маршрутизации 3X-UI.
### Шаг 1. Установка WARP
1. Запустите `gowarp`
2. Выберите пункт **1** — Установить WARP
3. Дождитесь установки и проверки статуса — должен быть «Подключён»
### Шаг 2. Добавление Outbound (исходящее подключение)
1. Откройте панель **3X-UI** в браузере
2. Перейдите в **Настройки Xray** (Xray Settings)
3. Найдите раздел **Outbounds** (Исходящие подключения)
4. Нажмите **Добавить Outbound** (Add Outbound)
5. Вставьте следующий JSON:
```json
{
"tag": "warp",
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 40000
}
]
}
}
```
> **Важно:** порт `40000` — это порт по умолчанию. Если вы меняли порт через меню WARP Manager (пункт 7), укажите ваш порт.
6. Нажмите **Сохранить** (Save)
### Шаг 3. Настройка маршрутизации (Routing)
Теперь нужно указать, какой трафик направлять через WARP.
#### Вариант А: Определённые сайты через WARP (рекомендуется)
1. Перейдите в **Настройки Xray****Routing** (Маршрутизация)
2. Нажмите **Добавить правило** (Add Rule)
3. Заполните:
- **Outbound Tag**: `warp`
- **Domain**: добавьте домены, которые хотите направить через WARP
Либо вставьте JSON-правило напрямую:
```json
{
"type": "field",
"outboundTag": "warp",
"domain": [
"geosite:openai",
"geosite:netflix",
"geosite:disney",
"geosite:spotify",
"domain:chat.openai.com",
"domain:claude.ai",
"domain:openai.com",
"domain:netflix.com",
"domain:disneyplus.com",
"domain:spotify.com"
]
}
```
> Это направит трафик к ChatGPT, Netflix, Disney+, Spotify и Claude через WARP. Остальной трафик пойдёт напрямую через основной IP сервера.
#### Вариант Б: Весь трафик через WARP
Если хотите направить **весь** клиентский трафик через WARP:
```json
{
"type": "field",
"outboundTag": "warp",
"network": "tcp,udp"
}
```
> **Внимание:** при этом варианте весь трафик пойдёт через Cloudflare. Скорость может незначительно снизиться.
#### Вариант В: По IP-адресам (геолокация)
Можно направить через WARP трафик к определённым IP-диапазонам:
```json
{
"type": "field",
"outboundTag": "warp",
"ip": [
"geoip:us",
"geoip:gb"
]
}
```
> Трафик в США и Великобританию пойдёт через WARP.
### Шаг 4. Перезапуск Xray
После сохранения настроек:
1. Нажмите **Перезапустить Xray** (Restart Xray) в панели 3X-UI
2. Или выполните в SSH:
```bash
x-ui restart
```
### Шаг 5. Проверка
1. Подключитесь к VPN через клиент (v2rayN, Hiddify, NekoBox и т.д.)
2. Откройте [https://whoer.net](https://whoer.net) или [https://ifconfig.me](https://ifconfig.me)
3. Если вы настроили маршрутизацию по доменам:
- Обычные сайты покажут **основной IP** сервера
- Сайты из списка (ChatGPT, Netflix и др.) покажут **IP Cloudflare**
4. Попробуйте открыть [https://chat.openai.com](https://chat.openai.com) — если раньше был заблокирован, теперь должен работать
Проверка через SSH:
```bash
curl -s --proxy socks5h://127.0.0.1:40000 ifconfig.me
```
---
## Интеграция с AmneziaWG — пошаговая инструкция
> Этот раздел только для **режима AmneziaWG**. Для 3X-UI перейдите к разделу [Интеграция с 3X-UI](#интеграция-с-3x-ui--пошаговая-инструкция).
### Как это работает
1. `wgcf` регистрирует бесплатный аккаунт Cloudflare WARP и генерирует WireGuard-профиль
2. Внутри Docker-контейнера AmneziaWG поднимается отдельный WG-интерфейс `warp`
3. Для выбранных клиентов создаются `ip rule` + `iptables` правила, направляющие их трафик через WARP
4. Правила автоматически прописываются в `start.sh` контейнера для персистентности при перезагрузках
В отличие от 3X-UI, где маршрутизация по **доменам**, в AmneziaWG маршрутизация **по клиентам**: вы выбираете, какие клиенты (по IP-адресу внутри VPN) будут ходить через WARP.
### Шаг 1. Подготовка
Убедитесь, что:
- На сервере установлен Docker
- AmneziaWG контейнер запущен и работает (проверить: `docker ps | grep amnezia`)
- Клиенты подключены и работают через AmneziaWG
### Шаг 2. Установка WARP
1. Запустите `gowarp`
2. Скрипт автоматически определит контейнер AmneziaWG и предложит режим
3. Выберите пункт **1** — Установить WARP
Скрипт автоматически:
- Скачает `wgcf` (утилита для регистрации в Cloudflare WARP)
- Зарегистрирует аккаунт WARP
- Сгенерирует WireGuard-профиль
- Создаст конфигурацию `warp.conf` внутри Docker-контейнера
- Поднимет WG-интерфейс `warp` внутри контейнера
- Покажет WARP IP
### Шаг 3. Включение клиентов в WARP
После установки WARP нужно указать, **каких клиентов** пускать через Cloudflare.
**Через SSH-меню:**
1. Выберите пункт **6** — переключение клиентов WARP (единое меню)
2. Вы увидите список всех клиентов AmneziaWG с их IP и именами; напротив каждого — **✅** (уже в WARP) или **☐** (не в WARP)
3. Введите номер клиента, чтобы переключить состояние (в WARP или вне WARP)
4. Скрипт:
- Добавит или снимет `ip rule` для маршрутизации трафика клиента через WARP
- Настроит или уберёт `iptables` NAT для корректного выхода через WG-интерфейс
- Пропишет правила в `start.sh` контейнера (персистентность)
**Через Telegram-бот:**
1. Нажмите **👥 Клиенты WARP** — откроется тот же список-переключатель
2. Напротив клиентов отображаются **✅** (в WARP) и **☐** (вне WARP); выбор пункта переключает состояние
### Шаг 4. Проверка
1. Подключитесь к VPN через приложение Amnezia
2. Откройте [https://whoer.net](https://whoer.net) или [https://ifconfig.me](https://ifconfig.me)
3. Если ваш клиент включён в WARP — вы увидите **IP Cloudflare**
4. Если клиент не в WARP — вы увидите **обычный IP сервера**
Проверка через SSH (внутри контейнера):
```bash
docker exec <имя_контейнера> curl -s --interface warp ifconfig.me
```
### Управление клиентами
В SSH и в боте используется **одно меню переключателей**: у каждого клиента видно **✅** (трафик через WARP) или **☐** (напрямую); действие по пункту меняет состояние.
| Действие | SSH-меню | Telegram-бот |
|----------|----------|--------------|
| Включить/выключить клиента в WARP (список ✅/☐) | пункт **6** | **👥 Клиенты WARP** |
| Перевыпуск ключа | пункт **5** | 🔑 Перевыпуск ключа |
| Перезапуск контейнера | пункт **7** | 🔄 Контейнер |
### Что происходит при включении клиента в WARP
Когда вы переводите клиента в WARP (например, `10.8.1.2`), скрипт:
1. Создаёт **ip rule**: `ip rule add from 10.8.1.2 table 51820`
2. Добавляет **iptables NAT**: `iptables -t nat -A POSTROUTING -s 10.8.1.2 -o warp -j MASQUERADE`
3. Записывает клиента в `/opt/warp/clients.list`
4. Патчит `start.sh` контейнера — добавляет блок между маркерами `WARP-MANAGER BEGIN / END`, чтобы правила восстанавливались после перезапуска контейнера
При удалении — всё убирается в обратном порядке.
### Перевыпуск ключа (AmneziaWG)
Перевыпуск ключа полностью пересоздаёт WARP-профиль:
1. Останавливает текущий WG-интерфейс `warp`
2. Удаляет старый аккаунт `wgcf`
3. Регистрирует новый аккаунт
4. Генерирует новый профиль
5. Пересобирает `warp.conf` и поднимает интерфейс
6. Восстанавливает правила маршрутизации клиентов
Это полезно, если WARP IP попал в блокировку и нужен новый.
---
## Меню WARP Manager
Меню организовано по секциям. Пункты **15** (WARP) и **811** (бот, промо, инструкция, удаление) одинаковы в обоих режимах; пункты **67** зависят от режима (3X-UI или AmneziaWG).
### Общая секция — WARP-ключ (оба режима)
| Пункт | Действие |
|-------|----------|
| 1 | Установить WARP |
| 2 | Запустить WARP |
| 3 | Остановить WARP |
| 4 | Статус |
| 5 | Перевыпуск ключа (новый WARP IP) |
### Секция 3X-UI (только в режиме 3X-UI)
| Пункт | Действие |
|-------|----------|
| 6 | Настройки SOCKS5 / JSON для 3X-UI |
| 7 | Изменить порт SOCKS5 |
### Секция AmneziaWG (только в режиме AmneziaWG)
| Пункт | Действие |
|-------|----------|
| 6 | Переключение клиентов WARP (единое меню, ✅ / ☐) |
| 7 | Перезапуск контейнера |
### Общая секция — бот и прочее (оба режима)
| Пункт | Действие |
|-------|----------|
| 8 | Telegram Bot (настройка и управление) |
| 9 | PROMO |
| 10 | Инструкция |
| 11 | Полное удаление |
| 0 | Выход |
---
## Telegram-бот
WARP Manager включает встроенный Telegram-бот для удалённого управления. Бот работает **в обоих режимах** — интерфейс и кнопки автоматически адаптируются.
### Настройка бота
1. Откройте [@BotFather](https://t.me/BotFather) в Telegram
2. Отправьте `/newbot`
3. Задайте имя и username бота
4. Скопируйте полученный **токен**
5. На сервере выполните `gowarp` → пункт **8** (Telegram Bot)
6. Выберите **1) Токен бота** — вставьте токен
7. Выберите **2) Chat ID (авто)**:
- Откройте вашего бота в Telegram
- Отправьте ему любое сообщение
- Вернитесь в SSH и нажмите Enter
- Скрипт автоматически определит ваш Chat ID
8. Выберите **4) Запустить**
### Команды бота
- `/start` или `/menu` — главное меню
### Кнопки бота — режим 3X-UI
| Кнопка | Действие |
|--------|----------|
| 📊 Статус | Текущий статус WARP, порт, IP |
| 🌍 IP адреса | Реальный IP сервера и WARP IP |
| ▶️ Запустить | Запуск WARP |
| ⏹ Остановить | Остановка WARP |
| 🔑 Перевыпуск ключа | Новый WARP IP |
| 📋 JSON | Готовая конфигурация outbound для 3X-UI |
| 🖥 Система | CPU, RAM, диск, uptime |
| 🏷 Хостинг | Промо-материалы |
### Кнопки бота — режим AmneziaWG
| Кнопка | Действие |
|--------|----------|
| 📊 Статус | Статус WARP, контейнер, IP, кол-во клиентов |
| 🌍 IP адреса | Реальный IP сервера и WARP IP |
| ▶️ Запустить | Поднять WG-интерфейс WARP |
| ⏹ Остановить | Опустить WG-интерфейс WARP |
| 🔑 Перевыпуск ключа | Пересоздать WARP-профиль |
| 👥 Клиенты WARP | Единое меню переключателей: список клиентов с **✅** (в WARP) и **☐** (вне WARP) |
| 🔄 Контейнер | Перезапуск Docker-контейнера AmneziaWG |
| 🖥 Система | CPU, RAM, диск, uptime |
| 🏷 Хостинг | Промо-материалы |
### Безопасность
Если задан Chat ID, бот отвечает **только** владельцу. Остальные пользователи получат сообщение «Нет доступа» с указанием их Chat ID.
Бот работает как systemd-сервис `warp-bot` с автоперезапуском.
---
## Автоперезапуск
- Служба `warp-svc` (3X-UI) настроена с `Restart=always` — WARP автоматически перезапускается при сбое
- Служба `warp-bot` (Telegram-бот) также имеет `Restart=always`
- При перезагрузке сервера сервисы запускаются автоматически
- В режиме AmneziaWG правила маршрутизации прописаны в `start.sh` контейнера — они восстанавливаются при перезапуске контейнера или сервера
---
## Часто задаваемые вопросы
### WARP не подключается (3X-UI)
```bash
warp-cli --accept-tos status
journalctl -u warp-svc --no-pager -n 20
```
Попробуйте перевыпустить ключ (пункт 5 в меню).
### WARP не подключается (AmneziaWG)
```bash
docker exec <контейнер> wg show warp
docker exec <контейнер> cat /opt/warp/warp.conf
```
Убедитесь, что контейнер запущен и внутри него есть интерфейс `warp`:
```bash
docker exec <контейнер> ip link show warp
```
Попробуйте перевыпустить ключ (пункт 5) или перезапустить контейнер (пункт 7).
### Сайт всё ещё заблокирован после настройки (3X-UI)
1. Убедитесь, что WARP в статусе «Подключён» (`gowarp` → пункт 4)
2. Проверьте, что домен добавлен в routing-правило в 3X-UI
3. Перезапустите Xray: `x-ui restart`
4. Очистите DNS-кэш в браузере или используйте режим инкогнито
### Клиент не видит WARP IP (AmneziaWG)
1. Убедитесь, что клиент **включён** в WARP (`gowarp` → пункт 6, в списке должна быть **✅**)
2. Проверьте, что интерфейс `warp` поднят (`gowarp` → пункт 4)
3. Перезапустите контейнер (`gowarp` → пункт 7)
4. Переподключитесь к VPN на клиентском устройстве
### Как сменить WARP IP
- **3X-UI:** `gowarp` → пункт **5** или кнопка бота **🔑 Перевыпуск ключа**
- **AmneziaWG:** `gowarp` → пункт **5** или кнопка бота **🔑 Перевыпуск ключа**
### Как изменить порт SOCKS5 (только 3X-UI)
`gowarp` → пункт **7** — введите новый порт. Не забудьте обновить порт в outbound-настройках 3X-UI.
### Можно ли переключить режим?
Режим определяется автоматически при запуске. Если на сервере установлены и 3X-UI, и AmneziaWG Docker — скрипт предложит выбрать. Выбор сохраняется в конфигурации.
Чтобы сбросить: удалите строку `MODE=` из `/etc/warp-manager/config` — при следующем запуске скрипт снова предложит выбор.
---
## Удаление
```bash
gowarp
```
Выберите пункт **11** — Полное удаление.
### Что удаляется (3X-UI)
- cloudflare-warp и его конфигурация
- Telegram-бот (сервис `warp-bot`)
- Команда `gowarp`
- Конфигурация и логи WARP Manager
**Не забудьте** вручную удалить outbound `warp` и связанные routing-правила из настроек 3X-UI.
### Что удаляется (AmneziaWG)
- WG-интерфейс `warp` внутри контейнера
- Файлы WARP (`/opt/warp/`) внутри контейнера
- Правила `ip rule` и `iptables` для клиентов
- Блок WARP-MANAGER из `start.sh` контейнера
- Telegram-бот (сервис `warp-bot`)
- Команда `gowarp`
- Конфигурация и логи WARP Manager
Сам контейнер AmneziaWG и его клиенты **не затрагиваются**.
---
## Лицензия
Только для личного использования. Распространение без согласия запрещено.
**anten-ka** · [YouTube](https://www.youtube.com/@antenkaru)