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>
97 lines
7.3 KiB
Markdown
97 lines
7.3 KiB
Markdown
---
|
||
title: NL VDS — 3x-UI VLESS/Reality node
|
||
type: entity
|
||
tags: [vds, cloud, netherlands, vpn, vless, reality, xray, 3x-ui, proxy]
|
||
sources: []
|
||
updated: 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`](../concepts/reality-pq-mldsa65-dest-incompatibility.md).
|
||
|
||
**Применённый 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**.
|
||
|
||
**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>`.
|