[2026-09-15] eagle: family/how-to/truenas-infrastructure.md personal/tech/vless-space-subscription-egress.md
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: vless-space — клиент 3x-ui с egress через external-подписку
|
||||
created: 2026-09-15T00:00:00.000Z
|
||||
updated: '2026-09-15T22:30:00.000Z'
|
||||
updated: '2026-09-15T23:59:00.000Z'
|
||||
type: tech
|
||||
namespace: personal
|
||||
tags:
|
||||
@@ -10,13 +10,17 @@ tags:
|
||||
- x-ui
|
||||
- subscription
|
||||
- outbound
|
||||
- outbound_subscriptions
|
||||
- profilegrid
|
||||
- truenas
|
||||
- space
|
||||
- balancer
|
||||
- leastLoad
|
||||
- balancerTag
|
||||
- sampling
|
||||
- burstObservatory
|
||||
- vless-proxy
|
||||
- hermes-taiga
|
||||
- wal
|
||||
confidence: high
|
||||
status: done-egress-via-subscription-working
|
||||
related:
|
||||
@@ -644,8 +648,9 @@ curl -sk -o /dev/null -w "sub: %{http_code}\n" https://vpn-panel.mallexxx.duckdn
|
||||
- [ ] После появления клиента — routing-правило на `space-balancer` **тоже через панель** (Xray → Routing)
|
||||
- [ ] Проверить end-to-end: egress IP ≠ `90.189.160.148` (TrueNAS) и ≠ `92.62.70.41` (Kraken)
|
||||
- [ ] Решить вопрос с авторизацией на sub-ссылках (открыты без авторизации)
|
||||
- [ ] Обновить [[family/how-to/truenas-infrastructure]] (новый клиент + балансировщик)
|
||||
- [ ] **Отдельная задача, НЕ начата:** `hermes-taiga` ходит через `vless-proxy`, чей outbound указывает на **мёртвый** `v.qentra.top` (VPS удалён). Переключение на живой сервер — правка 5 полей в `/mnt/RED_2TB/docker/vless-proxy/config.json` (таблица в [[personal/tech/xray-outbound-subscription-3xui]] §попутные находки). Alex спрашивал — **ответ: да, можно**.
|
||||
- [x] ~~Обновить [[family/how-to/truenas-infrastructure]] (новый клиент + балансировщик)~~ → **сделано 2026-09-15**
|
||||
- [x] ~~**Отдельная задача:** `hermes-taiga` ходит через `vless-proxy`, чей outbound указывает на **мёртвый** `v.qentra.top`~~ → **✅ ВЫПОЛНЕНО 2026-09-15.** `vless-proxy` переключён на `vpn.mallexxx.duckdns.org:443` + `/vless`, клиент **`vless-space`** (`a792c483-07e2-4723-9c50-78054c0abc07`). Проверено фактом: egress `104.28.219.140` / `188.239.191.18` ≠ `90.189.160.148`. См. §«`vless-proxy` → `xray-admin`» ниже.
|
||||
- [ ] ⏳ **Осталось (не закрыто):** Telegram-адаптер `hermes-taiga` уходил в ветку `TelegramFallbackTransport` (прямой коннект по fallback-IP) вместо SOCKS, несмотря на `TELEGRAM_PROXY`. Симптом — `Connecting (attempt 1/8)` и тишина, без `Proxy detected` в логе. Попытка фикса `HERMES_TELEGRAM_DISABLE_FALLBACK_IPS=1` **не помогла**, переменная убрана. **Telegram РАБОТАЕТ** (подтверждено Alex) — саморазрешалось, вероятно тайминг рестартов.
|
||||
|
||||
## 🔴🔴 ГЛАВНАЯ НАХОДКА СЕССИИ (2026-09-15, позже в тот же день): `leastPing` В XRAY 26.x НЕ РАБОТАЕТ — НУЖЕН `leastLoad`
|
||||
|
||||
@@ -773,6 +778,70 @@ docker start xray-admin
|
||||
```
|
||||
**Исходное состояние (до всей работы):** `/mnt/RED_2TB/docker/backups/xray-admin-before-vless-space-20260915-012057/`
|
||||
|
||||
## 🔗 `vless-proxy` → `xray-admin` (2026-09-15) — ВЫПОЛНЕНО
|
||||
|
||||
**Задача:** `vless-proxy` (SOCKS `:1080` + HTTP `:1081`) смотрел на **мёртвый** `v.qentra.top` (VPS удалён) → `hermes-taiga` (Telegram/Discord) без сети. Переключить на живой `xray-admin`.
|
||||
|
||||
**Что изменено** — `/mnt/RED_2TB/docker/vless-proxy/config.json`:
|
||||
|
||||
| Поле | Было | Стало |
|
||||
|---|---|---|
|
||||
| `outbounds[0].settings.vnext[0].address` | `v.qentra.top` | `vpn.mallexxx.duckdns.org` |
|
||||
| `…vnext[0].users[0].id` | `2D9F24C4-21FE-4784-9843-F11C384DA67A` | `a792c483-07e2-4723-9c50-78054c0abc07` (`vless-space`) |
|
||||
| `streamSettings.tlsSettings.serverName` | `v.qentra.top` | `vpn.mallexxx.duckdns.org` |
|
||||
| `streamSettings.wsSettings.path` | `/qentra` | `/vless` |
|
||||
| `streamSettings.wsSettings.headers.Host` | `v.qentra.top` | `vpn.mallexxx.duckdns.org` |
|
||||
|
||||
`port: 443`, `security: tls`, `network: ws` — без изменений.
|
||||
|
||||
**Выбор клиента — `vless-space`, НЕ `user1`.** Через `user1` egress = IP TrueNAS (`90.189.160.148`); через `vless-space` egress = IP подписки (нероссийский). Для Telegram/Discord нужен второй.
|
||||
|
||||
**Итоговая цепочка:**
|
||||
```
|
||||
hermes-taiga → vless-proxy:1080 → vpn.mallexxx.duckdns.org:443 → xray-admin → 28 × sub1-* → интернет
|
||||
```
|
||||
Env `hermes-taiga` (`TELEGRAM_PROXY`, `DISCORD_PROXY` = `socks5://vless-proxy:1080`) **менять не нужно** — SOCKS-соединения устанавливаются на каждый запрос, рестарт не требуется.
|
||||
|
||||
**Проверено фактом:** `104.28.219.140` / `188.239.191.18` ≠ `90.189.160.148` ✅
|
||||
|
||||
### 🔴 ПИТФОЛЛ ПРОВЕРКИ: `wget` не умеет SOCKS5
|
||||
|
||||
```bash
|
||||
# ❌ ЛОЖНЫЙ РЕЗУЛЬТАТ — wget идёт напрямую, минуя SOCKS
|
||||
docker exec vless-proxy wget -qO- https://api.ipify.org # → 90.189.160.148 (обман!)
|
||||
|
||||
# ✅ ПРАВИЛЬНО — только через SOCKS-прокси
|
||||
docker run --rm --network hermes_taiga_net alpine sh -c \
|
||||
"apk add -q curl; curl -s --max-time 20 --socks5-hostname vless-proxy:1080 https://api.ipify.org"
|
||||
```
|
||||
|
||||
Также проверять `httpx` из venv taiga (доказательство, что SOCKS работает из python-стека):
|
||||
```bash
|
||||
docker exec hermes-taiga /opt/hermes/.venv/bin/python3 -c "
|
||||
import asyncio, httpx
|
||||
async def m():
|
||||
async with httpx.AsyncClient(proxy='socks5://vless-proxy:1080', timeout=15) as c:
|
||||
r = await c.get('https://api.telegram.org'); print('OK', r.status_code)
|
||||
asyncio.run(m())"
|
||||
# → OK 302
|
||||
```
|
||||
|
||||
### 🔴 ПИТФОЛЛ ДОСТУПА: правку делает только Alex от root
|
||||
|
||||
`/mnt/RED_2TB/docker/vless-proxy/` — `root:root 755`, `config.json` примонтирован `:ro`, внутри контейнера `/etc/xray/config.json` тоже `Read-only file system`. **`truenas_admin` править НЕ может:** `touch` → Permission denied; `sudo` требует пароль; `root@192.168.2.197` → publickey denied.
|
||||
|
||||
Проверка прав (факт):
|
||||
```bash
|
||||
ssh truenas_admin@192.168.2.197 'ls -ld /mnt/RED_2TB/docker/vless-proxy; touch /mnt/RED_2TB/docker/vless-proxy/.wtest 2>&1 || echo CANNOT_WRITE'
|
||||
ssh truenas_admin@192.168.2.197 'docker exec vless-proxy sh -c "touch /etc/xray/config.json 2>&1 || echo READONLY"'
|
||||
```
|
||||
|
||||
**Рабочий приём:** агент готовит конфиг **локально на Mac** (`~/tmp-xray-space/vless-proxy-config-new.json`), отдаёт целиком; Alex копирует и делает `docker restart vless-proxy`.
|
||||
|
||||
### ⚠️ ПИТФОЛЛ: `docker compose up -d hermes-taiga` → `no such service`
|
||||
|
||||
Сервис в `/mnt/RED_2TB/docker/hermes/docker-compose.yml` называется **`taiga`**, не `hermes-taiga` (это `container_name`). Правильно: `docker compose up -d taiga`.
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[family/plans/reverse-xray-3xui-kraken]] — reverse-туннель к Кра́кену, история compose-инцидента
|
||||
|
||||
Reference in New Issue
Block a user