代理协议 · Clash文档

TUIC

Clash 生态 TUIC 出站配置参考,以当前 Mihomo 字段为准,区分 v4 与 v5 认证,并涵盖 TLS、QUIC、UDP 中继和连接参数。

  • uuid
  • password
  • TLS
  • QUIC
  • UDP
代理协议

版本由认证字段决定

TUIC 运行在 QUIC 和 TLS 1.3 上。当前内核没有单独的 version 字段,而是根据认证字段选择协议分支:存在非空 token 时使用 v4,否则使用 v5。

两种版本都需要名称、type: tuic、服务器和端口。v4 再填写 token,v5 再填写 UUID 和密码。客户端版本必须与服务端一致。

TUIC v4 与 v5 认证字段
协议版本必须填写必须省略当前实现的选择条件
TUIC v4tokenuuidpasswordtoken 非空
TUIC v5uuidpasswordtokentoken 为空
name必填
节点名称,用于策略组和规则引用。
type: tuic必填
选择 TUIC 出站。
server / port必填
填写服务端地址与单个 UDP 监听端口。
tokenTUIC v4
v4 的用户标识。使用 v5 时不得填写。
uuid / passwordTUIC v5
v5 的用户 UUID 与密码。使用 v4 时不得填写。

服务器地址与 TLS 校验

TUIC 使用 TLS 1.3,未指定 sni 时以 server 作为服务器名称,未指定 alpn 时客户端使用 h3。连接地址、SNI 与证书名称可以分别控制,但应保持可解释的一致关系。

ip可选
覆盖 server 的 DNS 解析结果,只改变实际连接 IP,不改变默认 SNI。
sniTLS
设置 TLS Server Name;连接 IP 与证书域名不同时尤其重要。
alpn默认 h3
填写服务端支持的 ALPN 列表,通常无需覆盖默认值。
skip-cert-verify风险
跳过证书校验,只应在明确理解风险时启用。
name-cert-verifyTLS
单独指定证书名称校验目标。
fingerprintTLS
固定服务端证书指纹。
certificate / private-keymTLS
服务端要求客户端证书时成对填写。
ech-opts当前未生效
TUIC 选项可以解析该字段,但当前拨号实现没有把它应用到 TLS 握手;不要把填写它当作已经启用 ECH。
disable-sni高风险
清空 TLS Server Name;当前实现还会强制跳过证书校验,不只是隐藏 SNI。

QUIC 建连与连接生命周期

TUIC 的延迟选项会改变 QUIC 握手、超时和并发流行为。默认值已经覆盖普通场景,只有服务端或排障结果给出依据时才应覆盖。

heartbeat-interval默认 10000 毫秒
发送 QUIC 保活心跳的间隔。单位是毫秒,不是秒。
reduce-rtt0-RTT
允许 QUIC 0-RTT 以降低建连时间,但早期数据可能面临重放风险。
request-timeout默认 8000 毫秒
建立 TUIC 代理请求的超时;当前实现仅由 v4 客户端分支读取,v5 会忽略。
congestion-controller可选
可选 cubic、new_reno 或 bbr;省略时保留 QUIC 库的默认行为。
bbr-profile仅 BBR
为 BBR 选择 standard、conservative 或 aggressive 预设。
max-open-streams默认 100
限制同时打开的 QUIC 流数量,过大可能增加内存和调度压力。
fast-open可选
减少代理请求建立等待,当前 TUIC v4 客户端分支直接使用该字段。

UDP 中继与数据包大小

TUIC 同时支持 TCP 流和 UDP 中继。UDP 中继模式必须与服务端实现兼容,包大小应服从路径 MTU,不应把更大数值理解为更高吞吐。

udp-relay-mode默认 native
可选 native 或 quic;除明确填写 quic 外,当前实现使用 native。
max-udp-relay-packet-size默认 1252
UDP 中继负载上限,客户端还会按 QUIC Datagram 上限和 v4/v5 头部开销调整。
max-datagram-frame-size高级
控制 QUIC Datagram 帧上限,当前实现最大限制为 1400 字节。
disable-mtu-discovery高级
禁用路径 MTU 探测,仅在确认链路存在 MTU 问题时使用。
recv-window-conn / recv-window高级
分别控制单流与连接级 QUIC 接收窗口,通常保留默认值。

端口、混淆与会话边界

TUIC 与 Hysteria2 都使用 QUIC,但可配置能力并不相同。不要把另一个协议的字段按名称猜测后复制过来。

TUIC 不支持的跨协议字段
能力TUIC 边界不要使用
端口单个 portHysteria2 的 portshop-interval
混淆没有协议专属 obfs 字段salamander、gecko、obfs-password
连接保活heartbeat-interval 与 QUIC 流AnyTLS 的 idle-session-*
认证v4 token 或 v5 UUID 加密码Hysteria 的 auth-str

v5 与 v4 配置示例

下面同时给出两个独立节点。实际使用时只保留与服务端版本一致的一组认证字段。

  • v5 节点误留 token,当前实现会按 v4 分支创建客户端。
  • UUID 格式无效,解析结果不能通过 v5 服务端认证。
  • 把 heartbeat-interval 当成秒填写 10,实际会变成 10 毫秒。
  • 启用 disable-sni 却仍以为证书会被正常校验,当前实现会同时跳过证书验证。
YAML
proxies:
  - name: tuic-v5
    type: tuic
    server: server.example.com
    port: 10443
    uuid: 00000000-0000-0000-0000-000000000001
    password: replace-with-v5-password
    sni: server.example.com
    alpn:
      - h3
    udp-relay-mode: native

  - name: tuic-v4
    type: tuic
    server: server.example.com
    port: 10443
    token: replace-with-v4-token
    sni: server.example.com
    alpn:
      - h3
    udp-relay-mode: native