Skip to content

GOST relay — mihomo

mihomo 可以使用 GOST 的 relay 协议,将 GOST relay 服务器作为出站拨号。连接可以是明文或封装在 TLS 中,可选地带流多路复用, 并通过用户名/密码对进行认证。

出站

位于 proxies: 下、type: gost-relay 的条目。内嵌 BasicOption (通用出站字段)。

字段类型默认值允许值描述
namestring(required)<string>唯一的代理名称。
serverstring(required)<host>GOST relay 服务器主机/IP。
portint(required)<port>GOST relay 服务器端口。
forwardboolfalsetrue | false转发模式:以空目标地址发送 relay 请求,让服务器路由到其自身预先配置的上游,而非 mihomo 请求的地址。
udpboolfalsetrue | false启用 UDP 中继。
tlsboolfalsetrue | false将 relay 连接封装在 TLS 中。
muxboolfalsetrue | false在单条连接上多路复用多个流(smux)。
snistring(server name)<SNI>启用 `tls` 时的 TLS SNI。默认为 `server`。
usernamestring(unset)<string>relay 认证用户名。
passwordstring(unset)<string>relay 认证密码。
skip-cert-verifyboolfalsetrue | false禁用 TLS 校验(仅测试)。
fingerprintstring(unset)<SHA256 hex>将服务器的 TLS 证书固定为此指纹。
certificatestring(unset)<PEM file path>客户端证书(mTLS)。
private-keystring(unset)<key file path>与 `certificate` 匹配的私钥。
client-fingerprintstring(global)chrome | firefox | safari | ios | edge | random | randomized要模拟的 uTLS client-hello 指纹。

源码: adapter/outbound/gost_relay.go:19-36 · 锚定版本 v1.19.27 (5184081)

示例

出站——带认证的明文 relay:

yaml
proxies:
  - name: gost-srv
    type: gost-relay
    server: relay.example.com
    port: 8443
    username: <username>
    password: <password>
    udp: true

出站——带多路复用的 TLS relay:

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: true 后,relay 请求携带一个目标地址,于是服务器将连接 路由到其自身预先配置的上游,而非 mihomo 请求的地址——在链接到已有固定下一跳 的 relay 时很有用。
  • mux 将(可选 TLS 的)连接封装在一个 smux 会话中,并为每次拨号开启一个流, 在单条底层套接字上多路复用多个逻辑连接。
  • tls 为 relay 连接启用 TLS。sni 覆盖握手服务器名(默认为 server); skip-cert-verifyfingerprintcertificate/private-key(mTLS)以及 client-fingerprint(uTLS)用于调整 TLS 层。除非启用 tls,否则它们不生效。
  • udp: true 通过服务器启用 UDP 中继。

跨内核说明

  • GOST 是一个独立的 relay 项目,拥有自己的协议。Xray-core 与 sing-box 均无内置的 GOST relay 客户端,因此此出站是 mihomo 特有的——若要从这些内核到达 GOST 端点, 你需要用它们都支持的协议(例如 Shadowsocks 或 SOCKS 跳板)在其前端封装。

源码: adapter/outbound/gost_relay.go:19-36 · v1.19.27 (5184081)

由 Argsment 出品的 Core Tutorial