Files
admin/.wiki/entities/nl-vds-3xui.md
vitya cacd582303 fix(nl-vds-3xui): disable ML-DSA-65 PQ on Reality 443 — GUI clients can't connect
Root cause of "Reality fails on client": v2rayN 7.19.5 + phone apps do NOT emit
mldsa65Verify to the xray core, so they can't auth to a PQ-mandated REALITY
inbound (only plain VLESS 32030 worked). Replica matrix: noPQ+no-verify=204,
PQ+no-verify=000, noPQ+with-verify=000. Removed mldsa65Seed from inbound id=1 ->
standard Reality X25519. Verified verify-less client through real :443 -> 204.
Fresh X25519 share-link generated for re-import. Wiki concept updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 12:31:31 +03:00

7.3 KiB
Raw Blame History

title, type, tags, sources, updated
title type tags sources updated
NL VDS — 3x-UI VLESS/Reality node entity
vds
cloud
netherlands
vpn
vless
reality
xray
3x-ui
proxy
2026-06-05

NL VDS — 3x-UI

Арендованный облачный VDS в Нидерландах, активирован 2026-06-05. Назначение — личный VLESS/Reality прокси-узел под управлением 3x-UI (x-ui panel). Через него ведётся рабочее соединение.

Hardware / tariff

  • Локация: Нидерланды
  • Public IP: 213.176.64.253
  • vCPU: 1
  • RAM: 2 GiB
  • Disk: 30 GiB NVMe
  • OS: Ubuntu 24.04
  • PTR: square-white.ptr.network

Доступ

  • 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, 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

Слой Компонент Версия
OS Ubuntu 24.04
Panel 3x-UI (x-ui) 3.2.7
Core Xray 26.6.1
DB SQLite /etc/x-ui/x-ui.db
Firewall ufw inactive (iptables policy ACCEPT)

x-ui — нативный systemd-сервис (не docker). Сгенерированный конфиг ядра: /usr/local/x-ui/bin/config.json, бинарь xray: /usr/local/x-ui/bin/xray-linux-amd64.

Inbounds

Tag Порт Протокол Security Статус
in-32030-tcp 32030 VLESS / tcp none 🟢 работает (рабочее соединение)
in-443-tcp 443 VLESS / tcp Reality (X25519), flow xtls-rprx-vision, dest www.microsoft.com 🟢 рабочий 2026-06-05; ML-DSA-65 PQ снят (клиенты не шлют verify)
inbound-socks-47020 47020 SOCKS5 (auth=password, udp) none (plaintext) 🟡 added 2026-06-05 для Telegram; на сервере ОК (auth required), но у user режется DPI на его пути → заменён на MTProto

MTProto proxy (mtg) — port 8443 — added 2026-06-05

Не xray-инбаунд — отдельный сервис mtg v2.2.8 (9seconds/mtg), бинарь /usr/local/bin/mtg, конфиг /etc/mtg.toml, systemd-юнит mtg.service (DynamicUser, Restart=always, enabled). FakeTLS под www.cloudflare.com — для DPI трафик неотличим от настоящего HTTPS на Cloudflare (проверено: openssl s_client :8443 -servername www.cloudflare.com → валидный TLS1.3 cert CN=www.cloudflare.com). Поднят взамен SOCKS5, который у user'а резал DPI (на сервере SOCKS рабочий).

  • Управление: systemctl status|restart mtg; ссылки — mtg access /etc/mtg.toml.

  • Креды (secret hex/b64 + tg-ссылка) — в pass show nl-vds-3xui/full-env.

  • 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 — дефект устранён 2026-06-05 (server-side)

Был: 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.

Применённый fix (2026-06-05): dest/target инбаунда www.intel.com:443www.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.

Update 2026-06-05 (вечер): ML-DSA-65 PQ снят с инбаунда. Даже после fix dest клиенты (v2rayN 7.19.5, телефонные приложения) не коннектились через Reality, хотя plain VLESS 32030 работал. Причина: 3x-UI включил ML-DSA-65 по умолчанию, а GUI-клиенты не передают mldsa65Verify в ядро (проверено: empty в configTest; replica-тест «noPQ-server + client без verify → 204», «+ с verify → 000»). PQ-Reality слишком свежий для клиентского тула. Фикс: удалён mldsa65Seed из инбаунда id=1 (+ display-verify) → обычный Reality X25519. Проверено verify-less клиентом через реальный :443 → HTTP 204.

Share-link (X25519, без PQ) — для импорта в v2rayN/телефон: vless://5da48418-…@213.176.64.253:443?type=tcp&security=reality&pbk=zWTp-3dPfB78…&fp=chrome&sni=www.microsoft.com&sid=795fc9&spx=%2F&flow=xtls-rprx-vision#NL-Reality (полный — в pass show nl-vds-3xui/full-env).

Заметки по диагностике (read-only методология)

  • Дамп инбаундов: python3 + sqlite3 file:/etc/x-ui/x-ui.db?mode=ro (read-only, sqlite3-CLI на сервере нет).
  • Изолированный тест клиента/сервера: поднять временный xray run -c <tmp> на отдельном localhost-порту (socks 10888/10999) + curl -x socks5h://… — воспроизводит хендшейк, не трогая активный инбаунд.
  • Часы сервера синхронны (Reality time-skew исключён). publicKey выводится из privateKey через xray x25519 -i <priv>; verify — из seed через xray mldsa65 -i <seed>.