v2.1: unified client toggle, 3X-UI SOCKS5 submenu, fix 14 bugs across 3 audit cycles

Made-with: Cursor
This commit is contained in:
anten-ka
2026-03-20 16:29:48 +03:00
parent 9c41c93507
commit 82b1a38592
2 changed files with 200 additions and 247 deletions

View File

@@ -40,7 +40,7 @@ WireGuard-интерфейс WARP внутри Docker-контейнера Amnez
| JSON-конфиги для Xray | ✅ | — |
| Маршрутизация по доменам | ✅ | — |
| Изменение порта SOCKS5 | ✅ | — |
| Управление клиентами (add/remove) | — | ✅ |
| Управление клиентами (переключатели ✅/☐ в одном меню) | — | ✅ |
| WireGuard внутри Docker | — | ✅ |
| Перезапуск контейнера | — | ✅ |
@@ -249,31 +249,30 @@ curl -s --proxy socks5h://127.0.0.1:40000 ifconfig.me
- Поднимет WG-интерфейс `warp` внутри контейнера
- Покажет WARP IP
### Шаг 3. Добавление клиентов в WARP
### Шаг 3. Включение клиентов в WARP
После установки WARP нужно указать, **каких клиентов** пускать через Cloudflare.
**Через SSH-меню:**
1. Выберите пункт **6** Добавить клиентов в WARP
2. Вы увидите список всех клиентов AmneziaWG с их IP и именами
3. Введите номер клиента, которого хотите добавить, или `all` для всех
1. Выберите пункт **6**переключение клиентов WARP (единое меню)
2. Вы увидите список всех клиентов AmneziaWG с их IP и именами; напротив каждого — **✅** (уже в WARP) или **☐** (не в WARP)
3. Введите номер клиента, чтобы переключить состояние (в WARP или вне WARP)
4. Скрипт:
- Добавит `ip rule` для маршрутизации трафика клиента через WARP
- Настроит `iptables` NAT для корректного выхода через WG-интерфейс
- Добавит или снимет `ip rule` для маршрутизации трафика клиента через WARP
- Настроит или уберёт `iptables` NAT для корректного выхода через WG-интерфейс
- Пропишет правила в `start.sh` контейнера (персистентность)
**Через Telegram-бот:**
1. Нажмите **Клиенты**** Добавить**
2. Выберите клиента из списка (✅ = уже в WARP, = можно добавить)
3. Или нажмите **Все в WARP** для добавления всех
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**
3. Если ваш клиент включён в WARP — вы увидите **IP Cloudflare**
4. Если клиент не в WARP — вы увидите **обычный IP сервера**
Проверка через SSH (внутри контейнера):
@@ -284,17 +283,17 @@ docker exec <имя_контейнера> curl -s --interface warp ifconfig.me
### Управление клиентами
В SSH и в боте используется **одно меню переключателей**: у каждого клиента видно **✅** (трафик через WARP) или **☐** (напрямую); действие по пункту меняет состояние.
| Действие | SSH-меню | Telegram-бот |
|----------|----------|--------------|
| Добавить в WARP | пункт **6** | Клиенты → Добавить |
| Убрать из WARP | пункт **7** | Клиенты → Убрать |
| Список клиентов в WARP | пункт **8** | Клиенты |
| Включить/выключить клиента в WARP (список ✅/☐) | пункт **6** | **👥 Клиенты WARP** |
| Перевыпуск ключа | пункт **5** | 🔑 Перевыпуск ключа |
| Перезапуск контейнера | пункт **9** | 🔄 Контейнер |
| Перезапуск контейнера | пункт **7** | 🔄 Контейнер |
### Что происходит при добавлении клиента
### Что происходит при включении клиента в WARP
Когда вы добавляете клиента (например, `10.8.1.2`) в 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`
@@ -320,7 +319,7 @@ docker exec <имя_контейнера> curl -s --interface warp ifconfig.me
## Меню WARP Manager
Меню организовано по секциям. Нумерация пунктов 15 и 1013 одинакова в обоих режимах, а секция 69 адаптируется.
Меню организовано по секциям. Пункты **15** (WARP) и **811** (бот, промо, инструкция, удаление) одинаковы в обоих режимах; пункты **67** зависят от режима (3X-UI или AmneziaWG).
### Общая секция — WARP-ключ (оба режима)
@@ -336,26 +335,24 @@ docker exec <имя_контейнера> curl -s --interface warp ifconfig.me
| Пункт | Действие |
|-------|----------|
| 6 | JSON конфиг для 3X-UI |
| 6 | Настройки SOCKS5 / JSON для 3X-UI |
| 7 | Изменить порт SOCKS5 |
### Секция AmneziaWG (только в режиме AmneziaWG)
| Пункт | Действие |
|-------|----------|
| 6 | Добавить клиентов в WARP |
| 7 | Убрать клиентов из WARP |
| 8 | Показать клиентов в WARP |
| 9 | Перезапуск контейнера |
| 6 | Переключение клиентов WARP (единое меню, ✅ / ☐) |
| 7 | Перезапуск контейнера |
### Общая секция — бот и прочее (оба режима)
| Пункт | Действие |
|-------|----------|
| 10 | Telegram Bot (настройка и управление) |
| 11 | PROMO |
| 12 | Инструкция |
| 13 | Полное удаление |
| 8 | Telegram Bot (настройка и управление) |
| 9 | PROMO |
| 10 | Инструкция |
| 11 | Полное удаление |
| 0 | Выход |
---
@@ -370,7 +367,7 @@ WARP Manager включает встроенный Telegram-бот для уда
2. Отправьте `/newbot`
3. Задайте имя и username бота
4. Скопируйте полученный **токен**
5. На сервере выполните `gowarp` → пункт **10** (Telegram Bot)
5. На сервере выполните `gowarp` → пункт **8** (Telegram Bot)
6. Выберите **1) Токен бота** — вставьте токен
7. Выберите **2) Chat ID (авто)**:
- Откройте вашего бота в Telegram
@@ -405,9 +402,7 @@ WARP Manager включает встроенный Telegram-бот для уда
| ▶️ Запустить | Поднять WG-интерфейс WARP |
| ⏹ Остановить | Опустить WG-интерфейс WARP |
| 🔑 Перевыпуск ключа | Пересоздать WARP-профиль |
| 👥 Клиенты | Список клиентов в WARP |
| Добавить | Добавить клиента в WARP (выбор из списка) |
| Убрать | Убрать клиента из WARP |
| 👥 Клиенты WARP | Единое меню переключателей: список клиентов с **✅** (в WARP) и **☐** (вне WARP) |
| 🔄 Контейнер | Перезапуск Docker-контейнера AmneziaWG |
| 🖥 Система | CPU, RAM, диск, uptime |
| 🏷 Хостинг | Промо-материалы |
@@ -453,7 +448,7 @@ docker exec <контейнер> cat /opt/warp/warp.conf
docker exec <контейнер> ip link show warp
```
Попробуйте перевыпустить ключ (пункт 5) или перезапустить контейнер (пункт 9).
Попробуйте перевыпустить ключ (пункт 5) или перезапустить контейнер (пункт 7).
### Сайт всё ещё заблокирован после настройки (3X-UI)
@@ -464,9 +459,9 @@ docker exec <контейнер> ip link show warp
### Клиент не видит WARP IP (AmneziaWG)
1. Убедитесь, что клиент **добавлен** в WARP (`gowarp` → пункт 8)
1. Убедитесь, что клиент **включён** в WARP (`gowarp` → пункт 6, в списке должна быть **✅**)
2. Проверьте, что интерфейс `warp` поднят (`gowarp` → пункт 4)
3. Перезапустите контейнер (`gowarp` → пункт 9)
3. Перезапустите контейнер (`gowarp` → пункт 7)
4. Переподключитесь к VPN на клиентском устройстве
### Как сменить WARP IP
@@ -492,7 +487,7 @@ docker exec <контейнер> ip link show warp
gowarp
```
Выберите пункт **13** — Полное удаление.
Выберите пункт **11** — Полное удаление.
### Что удаляется (3X-UI)