Здравствуйте! Прошу добавить функционал, необходимый для корректной работы связки tcp-reality + xhttp-reality на одной ноде/одном профиле (selfsteal на 443 порту с fallbacks на xhttp socket).
Суть задачи
Я настраиваю следующую схему:
-
на 443 порту работает tcp-reality;
-
у него настроен fallback на Unix-сокет;
-
на этом сокете работает xhttp-reality инбаунд;
-
в панели для этого требуется создать два разных хоста:
-
host для tcp-reality
-
host для xhttp-reality
Внешне всё работает (конфигурация ядра корректна).
Проблема возникает только на уровне клиентской подписки (happ).
Проблема
В JSON-подписке:
-
Для tcp-reality параметры security: reality + realitySettings передаются корректно.
-
Но для xhttp-reality в подписку попадают только параметры xhttpSettings (network: xhttp, host, path, extra, …).
-
А вот секция:
“security”: “reality”,
“realitySettings”: { … }
не передаётся, и клиенту приходится вручную дописывать privateKey, shortId, serverNames и т.д.
Из-за этого xhttp-reality по подписке не работает автоматически — только после ручного заполнения realitySettings в клиенте.
Причина
Похоже, что RemnaWave не умеет подтягивать reality-настройки для xhttp-host’а, если сам reality-inbound находится в другом инбаунде (который стоит “выше” и фолбечит на сокет).
Предположительно, в панели должна быть возможность:
-
либо выбрать Security Layer = reality в advanced-настройках xhttp host (там сейчас только default/tls/none);
-
либо автоматически подтягивать:
-
publicKey
-
shortIds
-
serverNames
-
xver
-
privateKey (если допустимо передавать в подписи)
-
из tcp-reality инбаунда, на который настроен fallback.
Что предлагается добавить
-
Поддержку Security Layer: reality в «Advanced → Security Layer» для xhttp-host.
-
Возможность автоматически наследовать realitySettings из «основного» инбаунда, если:
-
у tcp-reality есть fallback на сокет,
-
на этом сокете расположен xhttp-reality,
-
оба хоста принадлежат одной ноде/одному профилю.
- Либо отдельный механизм: в настройках хоста для xhttp дать параметр
«Использовать reality из инбаунда X»,
чтобы панель могла правильно сформировать подпись.