fix(nl-vds-3xui): apply Reality dest fix + rotate creds (server-side done)

Per user "и то и другое":
- Reality 443 dest www.intel.com -> www.microsoft.com (x-ui.db + restart),
  verified end-to-end tunnel through real :443 (SNI microsoft) -> HTTP 204.
  ML-DSA-65 kept. Plain VLESS 32030 unaffected (xray restarted, listening).
- Rotated leaked creds: root SSH password, panel username+password (bcrypt),
  panel JWT secret (kills install API token + sessions). New creds in
  pass nl-vds-3xui/full-env; old SSH pass now rejected; db backed up on server.
- Remaining client-side: user sets v2rayN profile pqmkayaxo2 SNI -> microsoft.

Task fix-nl-vds-reality-pq-dest -> 🟡 (awaiting client-side + confirm).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-05 11:45:44 +03:00
parent 5116abae07
commit fc245c23c7
3 changed files with 30 additions and 17 deletions

View File

@@ -1,5 +1,6 @@
# Admin Task Board
_Updated: 2026-06-05 — заведена ⚪ `fix-nl-vds-reality-pq-dest`. Новый NL VDS (213.176.64.253, 3x-UI/Xray 26.6.1): диагностирован (read-only, сервер не тронут) отказ Reality-инбаунда 443 — **ML-DSA-65 (PQ) × dest `www.intel.com` (Akamai шлёт HRR)**; plain VLESS 32030 работает. Fix (intel→microsoft симметрично server+client) НЕ применён, ждёт команды user. Узел+root-cause в вики (`nl-vds-3xui`, `reality-pq-mldsa65-dest-incompatibility`, commit `4fc7cbf6`); креды в `pass nl-vds-3xui/full-env`._
_Updated: 2026-06-05 (вечер) — 🟡 `fix-nl-vds-reality-pq-dest`: по команде user применён server-side fix + ротация кредов. Reality dest intel→microsoft (x-ui.db + restart), сквозной тоннель через реальный :443 = HTTP 204; 32030 жив. Креды ротированы (root SSH / panel user+pass / panel secret-JWT — светились в плейнтексте; новые в `pass nl-vds-3xui/full-env`, старые отклоняются, БД-бэкап на сервере). Остался client-side: user меняет SNI в v2rayN (`pqmkayaxo2`→microsoft) + подтверждает → close._
_Updated: 2026-06-05 — заведена `fix-nl-vds-reality-pq-dest`. Новый NL VDS (213.176.64.253, 3x-UI/Xray 26.6.1): диагностирован отказ Reality-инбаунда 443 — **ML-DSA-65 (PQ) × dest `www.intel.com` (Akamai шлёт HRR)**; plain VLESS 32030 работает. Узел+root-cause в вики (`nl-vds-3xui`, `reality-pq-mldsa65-dest-incompatibility`); креды в `pass nl-vds-3xui/full-env`._
_Updated: 2026-05-31 — 🟢 `vehicles-loader-progress-deploy` **closed**: live-verify прогона Sun 31.05 06:21→07:53 MSK прошёл — progress-logging показывает движение по всем фазам (▶/батчи/✓/delete-sweep), НЕ тишина; exit 0; `importRun id=4 ok`, `reportJson errors:[]`. **Попутно найден+починен email-баг:** `STOSTAYER_MAIL_TO=site@stostayer.ru` (слалось само себе) → `vitya.kuznetsov@gmail.com` в host env (бэкап `.bak.20260531`); доставка на gmail подтверждена тест-письмом (`250 queued`). Follow-up'ы (не блокеры): units-фаза 1h31m на 100k rows = узкое место; generation `unmatched:51`; репо `config/default.json` дефолт `to` всё ещё site@ (прод перекрыт env)._
_Updated: 2026-05-30 — 🟡 `vehicles-loader-progress-deploy`: деплой 0.4.0 ВЫПОЛНЕН (build здесь → push `docker.stostayer.ru` → host pull + re-tag `:latest`=0.4.0, 0.3.0 retained). Acceptance #1 ✅. Verify-окно = natural (user-выбор, не форсим baseline → клиент без внепланового email). timer next trigger Sun 2026-05-31 06:21 MSK → live-verify journalctl в след. сессию. Open Q #1 (push кода) снят: `a74ef73` уже в origin/master._
_Updated: 2026-05-30 — заведена ⚪ `vehicles-loader-progress-deploy` (handoff из stostayer.new). Progress-logging 0.4.0 зашипан в коде (stostayer.new `a74ef73`, 24/24 теста); ops-follow-up — rebuild образа той же схемой (build здесь → push `docker.stostayer.ru` → host pull+re-tag) и снять `journalctl` с боевого прогона (закрывает не-верифицированный 5-й критерий «journalctl показывает движение»). Попутно добивает остаток email-SEND из `vehicles-loader-image-distribution`._
@@ -26,10 +27,10 @@ _Updated: 2026-05-26 — заведена `bookva-tenant-cutover-prep` ⚪ (7-st
_Updated: 2026-05-25 (`iis-migration-to-ruvds` 🟢 closed Phase 1 per user decision — 9/24 hostnames live на RUVDS, source IIS оставлен running. `migrate-elasticsearch-to-books-vds` 🟢 closed ранее сегодня. 16 IIS hostnames + LE renewal pipeline + decommission — descoped в Closure note, не отдельные tracker tasks.)_
## [fix-nl-vds-reality-pq-dest] — Reality-инбаунд 443 на NL VDS (213.176.64.253) не коннектится
**Status:** ready (awaiting user «чини»)
**Where I stopped:** диагностика завершена read-only, сервер не тронут. Root cause: ML-DSA-65 (PQ) × dest `www.intel.com` (Akamai не умеет PQ key-exchange → HRR → REALITY handshake fail). Plain VLESS 32030 работает. Доказано изоляционной матрицей на replica-паре.
**Next action:** по команде user — сменить dest/SNI `www.intel.com``www.microsoft.com` симметрично (инбаунд 443: target+serverNames; v2rayN профиль pqmkayaxo2: SNI). См. [fix-nl-vds-reality-pq-dest.md](fix-nl-vds-reality-pq-dest.md) + `.wiki/concepts/reality-pq-mldsa65-dest-incompatibility.md`.
## 🟡 [fix-nl-vds-reality-pq-dest] — Reality-инбаунд 443 на NL VDS (213.176.64.253): server-side done, ждёт client-side
**Status:** 🟡 server-side fix + cred-rotation применены и проверены 2026-06-05; остался один client-side шаг (user меняет SNI в v2rayN) + подтверждение → закрыть.
**Where I stopped:** ✅ dest `www.intel.com``www.microsoft.com` на инбаунде 443 (x-ui.db + restart), сквозной тоннель через реальный :443 (SNI microsoft) = HTTP 204; 32030 жив. ✅ Креды ротированы (root SSH pass / panel user+pass / panel secret-JWT — оригиналы светились в плейнтексте), всё в `pass nl-vds-3xui/full-env`, БД-бэкап на сервере. Root cause: ML-DSA-65 (PQ) × intel/Akamai (HRR), разбор в `.wiki/concepts/reality-pq-mldsa65-dest-incompatibility.md`.
**Next action:** user в v2rayN профиль `pqmkayaxo2`: SNI → `www.microsoft.com`, reconnect. Подтвердит, что Reality поднялся → 🟢 close. См. [fix-nl-vds-reality-pq-dest.md](fix-nl-vds-reality-pq-dest.md).
**Branch:** n/a (admin ops)
<!-- created-by: vitya@.admin-exec / 2026-06-05 / trigger: user-задача "не получается vless+Reality" -->

View File

@@ -1,6 +1,6 @@
# fix-nl-vds-reality-pq-dest
**Status:** ready (awaiting user "чини")
**Status:** 🟡 server-side done 2026-06-05 — awaiting client-side SNI change + user confirm
**Created:** 2026-06-05
## Проблема
@@ -22,6 +22,13 @@ ML-DSA-65 (post-quantum REALITY) × dest/SNI `www.intel.com` (Akamai, не по
- v2rayN профиль `pqmkayaxo2` (Reality 443) подключается, трафик идёт.
- Plain VLESS 32030 продолжает работать.
## Done 2026-06-05 (server-side, по команде user "и то и другое")
- ✅ Reality dest `www.intel.com:443``www.microsoft.com:443` + serverNames→`["www.microsoft.com"]` (правка `x-ui.db` id=1 + `x-ui restart`). Проверено сквозным тоннелем (temp-клиент → реальный `:443`, SNI microsoft, uuid 5da48418+vision+mldsa65Verify) → **HTTP 204**. 32030 жив.
- ✅ Креды ротированы (оригиналы были в плейнтексте): root SSH pass (новый работает, старый Access denied), panel username+password (CLI `x-ui setting`, bcrypt в БД), panel `secret` JWT (убил install API token/сессии). Всё в `pass nl-vds-3xui/full-env`. БД-бэкап `/root/x-ui.db.bak.20260605_083658`.
## ⏳ Остаётся (client-side, делает user)
В v2rayN профиль `pqmkayaxo2`: **SNI** `www.intel.com``www.microsoft.com`, save, переподключиться → должно подняться. (Не правил guiNDB.db: v2rayN держит активное соединение.) После подтверждения — закрыть таску 🟢.
## Where I stopped
Диагностика завершена (read-only, сервер не тронут). Жду команды user на применение fix.
Server-side fix + ротация применены и проверены. Жду от user: смену SNI в v2rayN + подтверждение, что профиль Reality поднялся.
<!-- created-by: vitya@.admin-exec / 2026-06-05 / trigger: user-задача "не получается vless+Reality" -->

View File

@@ -26,7 +26,7 @@ updated: 2026-06-05
- **SSH:** `root@213.176.64.253` (password auth включён). Host-key (ed25519): `SHA256:XR2+0PCVUoEMrFHOoIu7IPXb4xP2JnYkqFr1uqs8YrA`.
- С Windows non-interactive: `plink -ssh -batch -hostkey "SHA256:XR2+0PCVUoEMrFHOoIu7IPXb4xP2JnYkqFr1uqs8YrA" -pw <pass> root@213.176.64.253 "<cmd>"`. PowerShell-пайп `y` в `plink` для приёма host-key **не работает** (plink читает промпт с консоли, не stdin) — передавать `-hostkey` явно.
- **Панель 3x-UI:** `https://213.176.64.253:49251/aTKt95PPgt9y2dUHi8` (port 49251, webBasePath `aTKt95PPgt9y2dUHi8`, sub-port 2096).
- **Креды:** `pass show nl-vds-3xui/full-env` (root SSH pass, panel user/pass, API token, все UUID/ключи/seed Reality-инбаунда).
- **Креды:** `pass show nl-vds-3xui/full-env` (root SSH pass, panel user/pass, panel JWT secret, все UUID/ключи/seed Reality-инбаунда). **Все логин-креды ротированы 2026-06-05** (оригиналы засветились в плейнтексте при заведении): root SSH pass, panel username+password, panel `secret` (JWT-ключ — убил install-time API token и сессии). Reality privateKey/UUID/seed НЕ ротировались (не были экспонированы, на них завязан клиентский профиль).
## Software stack
@@ -46,22 +46,27 @@ updated: 2026-06-05
| Tag | Порт | Протокол | Security | Статус |
|---|---|---|---|---|
| `in-32030-tcp` | 32030 | VLESS / tcp | none | 🟢 работает (рабочее соединение) |
| `in-443-tcp` | 443 | VLESS / tcp | **Reality + ML-DSA-65 (PQ)**, flow `xtls-rprx-vision` | 🔴 не коннектится |
| `in-443-tcp` | 443 | VLESS / tcp | **Reality + ML-DSA-65 (PQ)**, flow `xtls-rprx-vision` | 🟢 fixed 2026-06-05 (dest→microsoft, server-side verified 204); v2rayN SNI update pending |
- **32030 (plain VLESS):** uuid `a6fa7965-…` (email `sx9l9csam3`). Без TLS — поэтому работает даже когда Reality лежит.
- **443 (Reality, PQ):** два клиента — `5da48418-…`/`pqmkayaxo2` (flow vision, его использует v2rayN) и `7941887a-…`/`0h5rzrsex3`.
publicKey `zWTp-3dPfB78…`, shortId (клиент) `795fc9`, mldsa65Seed `E9zFSoOd…`. dest/SNI `www.intel.com`.
## ⚠️ Открытый дефект: Reality 443 не работает
## Reality 443 — дефект устранён 2026-06-05 (server-side)
Reality-инбаунд на 443 включает **пост-квантовый ML-DSA-65** с dest/SNI `www.intel.com`. Эта комбинация
несовместима: Akamai-фронтящий `www.intel.com` не поддерживает PQ-обмен ключами (`X25519MLKEM768`) и шлёт
HelloRetryRequest → borrowed-TLS рукопожатие REALITY не достраивается → `REALITY: handshake did not complete`.
Plain VLESS на 32030 не затронут (там нет TLS). Полный разбор + изоляционная матрица +
fix — [`reality-pq-mldsa65-dest-incompatibility`](../concepts/reality-pq-mldsa65-dest-incompatibility.md).
Был: Reality-инбаунд на 443 (ML-DSA-65 PQ) с dest/SNI `www.intel.com` не коннектился — Akamai-фронтящий
intel не поддерживает PQ-обмен ключами (`X25519MLKEM768`), слал HelloRetryRequest → borrowed-TLS рукопожатие
REALITY не достраивалось (`REALITY: handshake did not complete`). Полный разбор + изоляционная матрица:
[`reality-pq-mldsa65-dest-incompatibility`](../concepts/reality-pq-mldsa65-dest-incompatibility.md).
**Fix (НЕ применён, ждёт команды user):** сменить dest/`target` + `serverNames` инбаунда и SNI клиентского
профиля `www.intel.com``www.microsoft.com` (PQ-совместим, проверен 2026-06-05). ML-DSA-65 сохраняется.
**Применённый fix (2026-06-05):** dest/`target` инбаунда `www.intel.com:443``www.microsoft.com:443`,
`serverNames``["www.microsoft.com"]` (правка `stream_settings` в `x-ui.db` id=1 + `x-ui restart`).
ML-DSA-65 сохранён. Проверено сквозным тоннелем (temp-клиент → реальный `127.0.0.1:443`, SNI microsoft,
client uuid `5da48418` + vision + mldsa65Verify) → **HTTP 204**.
**⏳ Остаётся (client-side, делает user в v2rayN):** в профиле `pqmkayaxo2` сменить **SNI** `www.intel.com`
`www.microsoft.com`, переподключиться. (Правил не я: v2rayN держит активное соединение, внешняя правка
`guiNDB.db` ненадёжна.)
## Заметки по диагностике (read-only методология)