wiki(nl-vds-3xui): ingest session 2026-06-05 — honest final state + lessons

- new sources/nl-vds-3xui-setup-2026-06-05.md (full chronicle; HONEST outcome:
  у реальных клиентов из РФ работает только plain VLESS 32030; Reality/MTProto/
  SOCKS не поднялись)
- new concepts/proxy-debugging-test-the-real-client.md (anti-pattern: own curl/
  standalone tests passed while user's real clients failed; overclaim + bad
  MSS-clamp fix that broke things)
- rewrote entities/nl-vds-3xui.md — removed false "Reality verified/fixed" &
  "mtg works" claims; honest status table; MSS-clamp removed
- caveat added to reality-pq concept (disabling PQ != working Reality for GUI
  clients); index.md + log.md updated

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-05 14:36:36 +03:00
parent 9359f9ec4f
commit 5cdedb376a
6 changed files with 144 additions and 71 deletions

View File

@@ -1,96 +1,69 @@
---
title: NL VDS — 3x-UI VLESS/Reality node
title: NL VDS — 3x-UI VLESS node
type: entity
tags: [vds, cloud, netherlands, vpn, vless, reality, xray, 3x-ui, proxy]
sources: []
tags: [vds, cloud, netherlands, vpn, vless, reality, mtproto, xray, 3x-ui, proxy]
sources: [../sources/nl-vds-3xui-setup-2026-06-05.md]
updated: 2026-06-05
---
# NL VDS — 3x-UI
Арендованный облачный VDS в Нидерландах, активирован 2026-06-05. Назначение — личный VLESS/Reality
прокси-узел под управлением 3x-UI (x-ui panel). Через него ведётся рабочее соединение.
Личный прокси-VDS в Нидерландах, активирован 2026-06-05, под управлением 3x-UI (x-ui) / Xray.
Назначение — обход блокировок для себя и раздача доступа друзьям.
## Hardware / tariff
## Hardware
- **Локация:** Нидерланды
- **Public IP:** `213.176.64.253`
- **vCPU:** 1
- **RAM:** 2 GiB
- **Disk:** 30 GiB NVMe
- **OS:** Ubuntu 24.04
- **PTR:** `square-white.ptr.network`
- **Локация:** Нидерланды (провайдер Aeza, судя по `my.aeza.net` в трафике)
- **Public IP:** `213.176.64.253` ; **IPv6:** `2a12:5940:2b1d::2`
- **vCPU / RAM / Disk:** 1 / 2 GiB / 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 НЕ ротировались (не были экспонированы, на них завязан клиентский профиль).
- **SSH:** `root@213.176.64.253` (password auth). Host-key (ed25519): `SHA256:XR2+0PCVUoEMrFHOoIu7IPXb4xP2JnYkqFr1uqs8YrA`.
- С Windows non-interactive: `plink -ssh -batch -hostkey "SHA256:XR2+...YrA" -pw <pass> root@... "<cmd>"`. Пайп `y` для приёма host-key через PowerShell **не работает** (plink читает промпт с консоли) — передавать `-hostkey` явно. Для python на сервере — заливать скрипт через `pscp` (инлайн-python в plink-арге PowerShell корёжит кавычками).
- **Панель 3x-UI:** `https://213.176.64.253:49251/aTKt95PPgt9y2dUHi8/` (port 49251, sub-port 2096).
- **Креды:** `pass show nl-vds-3xui/full-env`. **Все логин-креды ротированы 2026-06-05** (оригиналы светились в плейнтексте): root SSH pass, panel user+pass, panel `secret` (JWT — убил install-time API-токен и сессии). 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) |
| Panel | 3x-UI (x-ui), нативный systemd-сервис | 3.2.7 |
| Core | Xray (`/usr/local/x-ui/bin/xray-linux-amd64`) | 26.6.1 |
| MTProto | mtg (`9seconds/mtg`, systemd `mtg.service`) | 2.2.8 |
| DB | SQLite `/etc/x-ui/x-ui.db` (бэкапы `/root/x-ui.db.bak.*`) | — |
| 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`.
Конфиг ядра генерится в `/usr/local/x-ui/bin/config.json` из БД при `x-ui restart`.
## Inbounds
## Текущее состояние (итог сессии 2026-06-05) — что РЕАЛЬНО работает
| Tag | Порт | Протокол | Security | Статус |
|---|---|---|---|---|
| `in-32030-tcp` | 32030 | VLESS / tcp | none | 🟢 работает (рабочее соединение) |
| `in-443-tcp` (port→**2053**) | 2053 | **Reality (X25519)**, flow `xtls-rprx-vision`, dest `www.microsoft.com` | 🟢 на 2053; ML-DSA-65 снят; **перенесён с 443**РКН заблокировал `:443` 2026-06-05 (на 443 умер через ~12 мин, на 2053 ожил — verified) |
| `inbound-socks-47020` | 47020 | **SOCKS5** (auth=password, udp) | none (plaintext) | 🟡 added 2026-06-05 для Telegram; на сервере ОК (auth required), но у user режется DPI на его пути → заменён на MTProto |
> **Работает только plain VLESS на 32030.** Через него идёт боевой трафик из РФ (v2rayN на ПК; v2rayNG/Hiddify на телефоне/Mac). Это канал, который раздаём друзьям. Всё «маскированное» (Reality, MTProto, SOCKS5) у реальных клиентов из РФ **не поднялось** — детальный разбор почему в [source-странице](../sources/nl-vds-3xui-setup-2026-06-05.md).
### MTProto proxy (mtg) — port 8443 — added 2026-06-05
| Порт | Протокол | Статус у реальных клиентов |
|---|---|---|
| **32030** | VLESS / tcp, `security=none` | 🟢 **РАБОТАЕТ.** uuid `a6fa7965-…` (sx9l9csam3). Без TLS (DPI-детектируем, но живой). |
| 2053 | VLESS + **Reality** X25519, flow vision, dest `www.microsoft.com` (PQ снят) | 🔴 **НЕ работает** у v2rayN/телефона. В изолированных curl/xray-тестах с того же ПК проходил (exit NL, 5 МБ/с), но **боевые клиенты — нет**. Причина не установлена (вероятно — обработка TLS-хендшейка к этому IP в сети пользователя). Был на 443 → перенесён на 2053. Клиенты: `5da48418-…` (pqmkayaxo2), `7941887a-…` (0h5rzrsex3); pbk `zWTp-3dPfB78…`, sid `795fc9`. |
| 47020 | SOCKS5 (auth=password) | 🔴 у пользователя режется DPI (на сервере сам по себе ОК, auth работает). user `tg_s5wm7I`. |
| 8443 | **MTProto** (mtg, FakeTLS `www.cloudflare.com`) | 🔴 **НЕ работает как Telegram-прокси:** и Telegram Desktop, и телефон висят на «соединение…». Пассивный пинг в Telegram показывает «доступен» — **вводит в заблуждение**. В tcpdump: телефон шлёт 1288-б ClientHello → mtg отвечает **0 байт**. Локальный FakeTLS (`openssl` на сервере) проходит, но реальную MTProto-сессию mtg здесь не держит. |
**Не 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`.
Hiddify (Win/Mac/Android) либо v2rayN/v2rayNG — импорт `vless://…@213.176.64.253:32030?type=tcp&security=none` (ссылка/QR). Полная инструкция для друзей — в [source](../sources/nl-vds-3xui-setup-2026-06-05.md).
**При включённом VPN в Telegram прокси не нужен:** на телефоне «Отключить прокси», на десктопе «Использовать системные настройки прокси», кастомные прокси удалить.
- **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`.
## Что трогали на сервере 2026-06-05
## Reality 443 — дефект устранён 2026-06-05 (server-side)
- Reality: dest `intel``microsoft`; снят ML-DSA-65 (`mldsa65Seed`); порт 443→2053.
- Креды ротированы (см. Доступ).
- Поднят mtg (MTProto) на 8443; SOCKS5-инбаунд на 47020.
- **MSS-clamp 1360** ставился (ошибочная MTU-гипотеза) и **снят** — он ломал соединения (после снятия комп-телега через системный прокси ожила).
Был: 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>`.
- **ML-DSA-65 (PQ-Reality) несовместим с GUI-клиентами** — v2rayN/мобильные не шлют `mldsa65Verify` → PQ надо отключать. Полный разбор: [`reality-pq-mldsa65-dest-incompatibility`](../concepts/reality-pq-mldsa65-dest-incompatibility.md).
- **Свои короткие curl/standalone-xray тесты «работали», а боевые клиенты — нет.** Не доверять собственным изолированным тестам как доказательству — проверять на реальном клиенте/устройстве: [`proxy-debugging-test-the-real-client`](../concepts/proxy-debugging-test-the-real-client.md).
- **MSS-clamp на прокси-сервере может рвать соединения** — не лепить «на всякий случай».
- Reality/MTProto в РФ — нетривиальны; единственное, что тут гарантированно поднялось у реальных клиентов — plain VLESS.