Хосты
Хост — точка входа, которую видит клиент. Пользователь импортирует ссылку подписки, приложение получает список хостов и подключается по указанному в них адресу. Хост связывает инбаунд профиля конфигурации, ноды и параметры подключения.
Зачем нужны хосты
Один и тот же инбаунд может отдаваться разными хостами: например, «Финляндия» и «Германия» ведут на разные наборы нод. Клиент видит хосты как отдельные подключения и переключается между ними.
- хост без нод или с выключенными нодами пользователю бесполезен;
- хост отдаётся только тем пользователям, у которых инбаунд этого хоста есть во внутреннем скваде;
- выключенный (
isDisabled) хост в подписку не попадает.
Привязка к инбаундам
В форме хоста сначала выбирают инбаунд — один инбаунд на хост:
{
"inbound": {
"configProfileUuid": "00000000-0000-0000-0000-000000000000",
"configProfileInboundUuid": "11111111-1111-1111-1111-111111111111"
},
"nodes": ["22222222-2222-2222-2222-222222222222"]
}
Порт по умолчанию наследуется от инбаунда, но его можно переопределить. Если инбаунд удалён из профиля, хост перестаёт отдаваться — это видно в списке хостов.
Адрес, порт и SNI
| Поле | Назначение |
|---|---|
address | IP или домен, куда подключается клиент. Домен предпочтительнее: при смене IP достаточно поправить DNS |
port | порт подключения; по умолчанию совпадает с портом инбаунда |
sni | имя сервера для TLS/REALITY. Пусто — берётся значение из инбаунда |
host | значение заголовка Host или serverName там, где оно нужно |
path | путь для WebSocket, gRPC, XHTTP |
securityLayer | DEFAULT (как в инбаунде), TLS или NONE |
alpn | h3, h2, http/1.1 или их комбинации |
fingerprint | отпечаток TLS-клиента: chrome, firefox, safari, randomized и другие |
overrideSniFromAddress | подставлять SNI из address |
keepSniBlank | оставить SNI пустым |
pinnedPeerCertSha256, verifyPeerCertByName | проверка сертификата сервера |
Поля xhttpExtraParams, muxParams, sockoptParams и finalMask — тонкая
настройка транспорта; заполняйте их, только если понимаете, что делаете.
Использование в подписках
| Поле | Влияние на подписку |
|---|---|
remark | название подключения у пользователя |
isDisabled | хост исключается из выдачи |
isHidden | хост не показывается в браузерном представлении подписки, но остаётся в конфигурации клиента |
shuffleHost | случайный порядок хостов |
excludeFromSubscriptionTypes | исключить хост из отдельных форматов, например только из MIHOMO |
xrayJsonTemplateUuid | свой Xray JSON шаблон для этого хоста |
serverDescription | подпись сервера для «расширенных» клиентов |
mihomoX25519, mihomoIpVersion | параметры для Mihomo |
internalSquads.mode | ограничение хоста сквадами: EXCLUDE или ALLOW_ONLY |
mapper | перенос значений из инбаунда в клиентский конфиг |
ALLOW_ONLY требует выбрать хотя бы один внутренний сквад — иначе форма не
сохранится. Как это работает, читайте в разделе Сквады.
Меняя address или sni, проверяйте результат в клиенте: часть приложений
кэширует подписку и не обновляет её сразу.