[2026-09-15] eagle: personal/tech/vless-space-subscription-egress.md personal/tech/xray-outbound-subscription-3xui.md

This commit is contained in:
Alexey Martemyanov
2026-09-15 17:09:48 +06:00
parent 334a8d0714
commit df8386af89
2 changed files with 53 additions and 4 deletions
@@ -18,7 +18,7 @@ tags:
- balancerTag
- sampling
confidence: high
status: done-egress-working
status: blocked-egress-direct-observatory-mismatch
related:
- '[[family/plans/reverse-xray-3xui-kraken]]'
- '[[personal/tech/xray-reverse-tunnel-kraken-truenas]]'
@@ -28,7 +28,25 @@ related:
# `vless-space` — клиент 3x-ui, egress через внешнюю подписку
> # 🏁 2026-09-15 22:30 — ЗАДАЧА ВЫПОЛНЕНА ПОЛНОСТЬЮ. EGRESS РАБОТАЕТ.
> # 🔴 2026-09-15 (финал сессии) — EGRESS `direct`. НЕ ЗАКРЫТО.
>
> **Живая проверка Alex: IP = `90.189.160.148` (TrueNAS)** → трафик `vless-space` НЕ идёт через подписку.
>
> **Причина найдена:** `observatory.subjectSelector` = `["space-"]`, а outbound'ы теперь `sub1-*`.
>
> ```jsonc
> "balancers": [ { "tag":"space-balancer", "selector":["sub1-"], "strategy":{"type":"leastLoad"} } ] // ✅
> "observatory": { "subjectSelector":["space-"], ... "sampling":3 } // ❌ ПУСТО
> "outbounds": 31 (3 + 28 × sub1-*) // ✅
> ```
>
> `subjectSelector` матчит `space-*` → после удаления статики **не пингуется ни один сервер** → `leastLoad` без живых кандидатов → трафик в первый outbound = `direct`. **Ошибок в логе НЕТ.**
>
> **ЧТО ОСТАЛОСЬ:** заменить `subjectSelector` → `["sub1-"]` (UI `Xray → Observatory` либо `xrayTemplateConfig` при остановленном контейнере), затем живой тест. Полный порядок — в [[personal/tech/xray-outbound-subscription-3xui]] §«Статус: ЧТО ОСТАЛОСЬ».
>
> > ⚠️ Блок «ЗАДАЧА ВЫПОЛНЕНА» ниже относится к `xui_v9.db` со **статическими** `space-01…10` — та конфигурация работала. Она заменена штатной подпиской (`sub1-*`), где egress пока нет.
> # 🏁 ИСТОРИЯ: 2026-09-15 22:30 — на статике `space-01…10` egress РАБОТАЛ (`xui_v9.db`)
>
> | Проверка (факт, `xui_v9.db`) | Результат |
> |---|---|
@@ -36,13 +54,16 @@ related:
> | IP TrueNAS напрямую | `90.189.160.148` — **отличается** → трафик идёт через подписку |
> | Стабильность | ✅ 3/3 запроса подряд через клиент в докере |
> | `in-10095-tcp` clients | ✅ `user1,kraken-user,vless-space` (один инбаунд, порта 10096 нет) |
> | outbounds | 13, balancer `space-balancer` (leastLoad) |
> | outbounds | 13, balancer `space-balancer` (leastLoad) — **статика, позже удалена** |
> | подписка `/sub/24df9391356b48ff` | ✅ HTTP 200 |
> | `kraken-user`, `user1` | ✅ целы, не тронуты |
>
> ## 🔑 ТРИ ПИТФОЛЛА, КОТОРЫЕ СТОИЛИ ПОЛДНЯ (все три обязательны)
> ## 🔑 ТРИ ПИТФОЛЛА + ЧЕТВЁРТЫЙ (все обязательны)
>
> **⚠️ 4-е условие (2026-09-15, финал): `observatory.subjectSelector` обязан совпадать с `routing.balancers[].selector`.** Проверка: `jq -c '{bal:.routing.balancers[0].selector, obs:.observatory.subjectSelector}'` → значения равны. Рассинхрон = `direct` без единой ошибки в логе.
>
> **1. `balancerTag`, а НЕ `outboundTag`.** Правило маршрутизации обязано ссылаться на балансировщик через `balancerTag` — с `outboundTag` 3x-ui/Xray не распознаёт его как балансировщик, и на первом же соединении: `app/dispatcher: non existing outTag: space-balancer`.
>
> ```jsonc
> // ❌ НЕ РАБОТАЕТ
@@ -1,3 +1,31 @@
---
title: Xray outbound — внешняя подписка в 3x-ui (vless-space)
created: 2026-09-15T00:00:00.000Z
updated: '2026-09-15T23:59:00.000Z'
type: tech
namespace: personal
tags:
- xray
- 3x-ui
- subscription
- outbound
- outbound_subscriptions
- truenas
- balancer
- leastLoad
- balancerTag
- sampling
- observatory
- subjectSelector
- wal
confidence: high
status: blocked-egress-direct-observatory-mismatch
related:
- '[[family/how-to/truenas-infrastructure]]'
- '[[personal/tech/xray-reverse-tunnel-kraken-truenas]]'
- '[[personal/tech/vless-space-subscription-egress]]'
- '[[family/how-to/vps-qentra]]'
---
# Xray outbound из внешней подписки в 3x-ui (`vless-space`)