GOST relay — mihomo
mihomo может подключаться к relay-серверу GOST как к исходящему, используя протокол relay GOST. Соединение может быть открытым или обёрнутым в TLS, при желании — с мультиплексированием потоков, и аутентифицируется парой имя пользователя / пароль.
Исходящий
Запись в proxies: с type: gost-relay. Встраивает BasicOption (общие поля исходящих).
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
name | string | (required) | <string> | Уникальное имя прокси. |
server | string | (required) | <host> | Хост/IP relay-сервера GOST. |
port | int | (required) | <port> | Порт relay-сервера GOST. |
forward | bool | false | true | false | Режим forward: отправлять relay-запрос с пустым адресом назначения, чтобы сервер направил соединение на собственный преднастроенный апстрим вместо адреса, запрошенного mihomo. |
udp | bool | false | true | false | Включить ретрансляцию UDP. |
tls | bool | false | true | false | Обернуть relay-соединение в TLS. |
mux | bool | false | true | false | Мультиплексировать несколько потоков в одном соединении (smux). |
sni | string | (server name) | <SNI> | TLS SNI при включённом `tls`. По умолчанию — значение `server`. |
username | string | (unset) | <string> | Имя пользователя для аутентификации relay. |
password | string | (unset) | <string> | Пароль для аутентификации relay. |
skip-cert-verify | bool | false | true | false | Отключить проверку TLS (только для тестов). |
name-cert-verify | string | (unset) | <hostname> | Проверять сертификат сервера по этому имени хоста вместо SNI. |
fingerprint | string | (unset) | <SHA256 hex> | Зафиксировать TLS-сертификат сервера по этому отпечатку. |
certificate | string | (unset) | <PEM file path> | Клиентский сертификат (mTLS). |
private-key | string | (unset) | <key file path> | Закрытый ключ, соответствующий `certificate`. |
client-fingerprint | string | (global) | chrome | firefox | safari | ios | edge | random | randomized | Имитируемый отпечаток client hello uTLS. |
Исходный код: adapter/outbound/gost_relay.go:19-37 · зафиксировано на v1.19.29 (e26714a)
Примеры
Исходящее — обычный relay с аутентификацией:
yaml
proxies:
- name: gost-srv
type: gost-relay
server: relay.example.com
port: 8443
username: <username>
password: <password>
udp: trueИсходящее — relay поверх TLS с мультиплексированием:
yaml
proxies:
- name: gost-tls
type: gost-relay
server: relay.example.com
port: 443
tls: true
sni: relay.example.com
mux: true
username: <username>
password: <password>
udp: trueПримечания
- По умолчанию mihomo отправляет запрошенное назначение relay-серверу, и сервер сам подключается туда. При
forward: truerelay-запрос несёт пустой адрес назначения, и сервер направляет соединение на собственный преднастроенный апстрим вместо адреса, который запросил mihomo, — полезно при сцеплении с relay, у которого уже есть фиксированный следующий переход. muxзаворачивает (опционально TLS-)соединение в сессию smux и открывает поток на каждое подключение, мультиплексируя несколько логических соединений в одном нижележащем сокете.tlsвключает TLS для relay-соединения.sniпереопределяет имя сервера в рукопожатии (по умолчанию —server);skip-cert-verify,name-cert-verify,fingerprint,certificate/private-key(mTLS) иclient-fingerprint(uTLS) настраивают слой TLS. Без включённогоtlsони не действуют.udp: trueвключает ретрансляцию UDP через сервер.
Сравнение с другими ядрами
- GOST — отдельный relay-проект со своим протоколом. Ни у Xray-core, ни у sing-box нет встроенного клиента relay GOST, так что это исходящее специфично для mihomo — чтобы достучаться до конечной точки GOST из тех ядер, её пришлось бы прикрыть протоколом, который они оба поддерживают (например, хопом Shadowsocks или SOCKS).
Исходный код: adapter/outbound/gost_relay.go:19-37 · v1.19.29 (e26714a)
