代理协议 · Clash文档

传输层配置

Clash 生态传输层配置参考,以当前 Mihomo 字段为准,帮助 VMess、VLESS 与 Trojan 正确关联 network、配套 opts、TLS 与协议边界。

  • network
  • WebSocket
  • HTTP/2
  • gRPC
  • TLS
代理协议

network 与 opts 如何关联

传输层配置附着在具体出站节点上,不是独立代理协议。先填写 VMess、VLESS 或 Trojan 的必填字段,再用 network 选择承载方式。

每个 *-opts 只在相同名称的 network 下生效。TLS、Reality、UDP 和协议认证通常仍是节点顶层字段,不会因为选择 WebSocket、gRPC 或 XHTTP 自动开启;XHTTP 的 download-settings 是可为下行连接嵌套覆盖 TLS 与 Reality 参数的例外。

network选择器
选择传输层。留空或填写该协议不支持的值时,当前内核按 TCP 处理。
*-opts条件生效
只在对应 network 下读取,例如 ws-opts 只配合 network: ws
tls / reality-opts通常位于顶层
负责传输安全,必须按服务端单独配置;XHTTP 下行连接可在 download-settings 中覆盖。
udp / packet-encodingVMess / VLESS
控制代理 UDP 能力和这两种协议的数据包编码,不是 Trojan 传输层字段,也不由 network 自动决定。

协议支持矩阵

不同协议允许的 network 不相同。表中取值来自当前公开配置参考。

VMess、VLESS 与 Trojan 的传输层支持
协议可用 network回落规则
VMesstcp, ws, http, h2, grpc, mkcp, mekya留空或其他值按 tcp
VLESStcp, ws, http, h2, grpc, xhttp留空或其他值按 tcp
Trojantcp, ws, grpc留空或其他值按 tcp

HTTP 与 HTTP/2

httph2 是两种不同的 network。它们都要求路径、Host 和服务端路由保持一致,但使用不同的 opts 对象。

http-opts.methodHTTP
HTTP 请求方法,按服务端实现填写。
http-opts.pathHTTP
HTTP 请求路径列表,必须与服务端配置一致。
http-opts.headersHTTP
附加 HTTP 请求头,Host 或 Connection 等值应与反向代理规则一致。
h2-opts.hostHTTP/2
主机域名列表。配置多个值时客户端随机选择,服务端会校验。
h2-opts.pathHTTP/2
HTTP/2 请求路径,必须与服务端一致。

gRPC

gRPC 传输由 network: grpcgrpc-opts 组成。服务名是最先需要核对的字段,连接与流数量参数只在明确了解服务端和并发需求时调整。

grpc-opts.grpc-service-name按服务端
gRPC 服务名称,必须与服务端一致。
grpc-opts.grpc-user-agent可选
覆盖 gRPC User-Agent。普通节点通常无需修改。
grpc-opts.ping-interval可选
心跳间隔,单位为秒,默认关闭。
grpc-opts.max-connections可选
最大底层连接数,默认 1,与 max-streams 冲突。
grpc-opts.min-streams可选
打开新连接前的最小复用流数量,与 max-streams 冲突。
grpc-opts.max-streams可选
打开新连接前的最大复用流数量,与 max-connectionsmin-streams 冲突。

WebSocket

WebSocket 传输由 network: wsws-opts 组成。路径与 Host 通常还要同时通过 CDN 或反向代理校验。

ws-opts.path按服务端
WebSocket 请求路径,必须与服务端或反向代理路由一致。
ws-opts.headers可选
附加请求头,常见为 Host,不要与 TLS 的 servername 混为一个字段。
ws-opts.max-early-data可选
WebSocket Early Data 首包长度阈值,只有服务端支持时才启用。
ws-opts.early-data-header-name可选
承载 Early Data 的请求头名称,需要与服务端实现一致。
ws-opts.v2ray-http-upgrade可选
使用 V2Ray HTTP Upgrade 模式,不能脱离服务端能力单独开启。
ws-opts.v2ray-http-upgrade-fast-open可选
为 HTTP Upgrade 启用 Fast Open,依赖前一字段和服务端支持。

mKCP 与 Mekya

mKCP 和 Mekya 当前仅用于 VMess。两者都不是 VLESS 或 Trojan 的通用传输层,订阅转换时不要跨协议保留。

mkcp-opts.mtumKCP
最大传输单元,需结合链路 MTU 调整。
mkcp-opts.ttimKCP
传输时间间隔,单位为毫秒。
mkcp-opts.uplink-capacitymKCP
上行容量,单位为 MB/s。
mkcp-opts.downlink-capacitymKCP
下行容量,单位为 MB/s。
mkcp-opts.congestionmKCP
控制是否启用拥塞控制。
mkcp-opts.seedmKCP
启用 AES-GCM 认证时使用的种子,留空使用默认认证。
mkcp-opts.headermKCP
伪装包头可选 nonesrtputpwechat-videodtlswireguard
mekya-opts.urlMekya
Mekya 服务端 URL,必须与服务端入口一致。
mekya-opts.max-write-delayMekya
首包后的最大聚合等待时间,单位为毫秒。
mekya-opts.max-request-sizeMekya
单次 HTTP 请求最大负载,单位为字节。
mekya-opts.polling-interval-initialMekya
空轮询初始间隔,单位为毫秒。
mekya-opts.h2-pool-sizeMekya
HTTP/2 连接池大小。
mekya-opts.kcpMekya
Mekya 内部 KCP 参数,字段含义与 mkcp-opts 相同。

XHTTP

XHTTP 当前仅用于 VLESS。默认使用 H2;使用 H3 时必须设置 tls: truealpn: [h3],且当前 H3 实现不接受 Reality、ShadowTLS、Restls 或 JLS。使用 HTTP/1.1 时设置 alpn: [http/1.1]

UUID 与 VLESS Encryption 仍在节点顶层。TLS 和 Reality 通常也位于顶层,但 xhttp-opts.download-settings 可以为下行连接嵌套覆盖 TLS、Reality、ECH、SNI 等参数。

XHTTP 的高级字段会改变上行拆分、填充、会话标识和连接复用。没有服务端或反向代理的对应配置时,应从 pathhost 和默认模式开始,不要一次填满所有选项。

xhttp-opts.path按服务端
请求路径,必须与服务端或反向代理路由一致。
xhttp-opts.host按服务端
HTTP Host,与 TLS servername 是不同字段。
xhttp-opts.mode可选
可用 autostream-onestream-uppacket-up
xhttp-opts.headers可选
附加 HTTP 请求头。
xhttp-opts.no-grpc-header可选
控制 stream-up 或 stream-one 上行是否省略用于伪装 gRPC 的 Content-Type 头。
xhttp-opts.x-padding-bytes可选
请求头填充长度范围,默认范围为 100-1000
xhttp-opts.x-padding-obfs-mode可选
启用填充混淆,出于兼容性默认 false
xhttp-opts.uplink-http-method可选
上行可使用服务端和中间网络允许的带请求体方法,例如 POST、PUT、PATCH 或 DELETE。
xhttp-opts.session-placement可选
会话 ID 可放在 path、query、cookie 或 header。
xhttp-opts.seq-placement可选
序列号位置需与会话位置规则兼容;会话放在 path 时序列号也必须放在 path。
xhttp-opts.uplink-data-placementpacket-up
packet-up 模式控制拆分后上行数据的位置。
xhttp-opts.uplink-chunk-size条件生效
上行数据不放在 body 时控制单块最大字节数,最小为 64 字节。
xhttp-opts.reuse-settings可选
XHTTP 连接复用设置。没有默认值,省略时不开启复用。
xhttp-opts.reuse-settings.max-concurrency二选一
每条底层连接的最大并发请求数,与 max-connections 冲突。
xhttp-opts.reuse-settings.max-connections二选一
最大同时连接数,与 max-concurrency 冲突。
xhttp-opts.download-settings可选
覆盖下行连接参数,可嵌套 TLS、Reality、ECH、SNI、ALPN 与客户端指纹等字段;未填写的值沿用上行配置。
  • 不要把 xhttp 用在 VMess 或 Trojan 节点。
  • 不要同时启用 XHTTP reuse-settings 和通用 smux,避免形成两层重复复用。
  • 路径、Host、ALPN 或模式与服务端不一致时,优先修正这些基础字段。
  • uplink-http-method: GET 不在当前字段参考列出的可用上行方法中。
YAML
proxies:
  - name: vless-xhttp-h2
    type: vless
    server: edge.example.com
    port: 443
    uuid: 00000000-0000-0000-0000-000000000001
    encryption: ""
    udp: true
    tls: true
    servername: origin.example.com
    alpn:
      - h2
    client-fingerprint: chrome
    network: xhttp
    xhttp-opts:
      path: /xhttp
      host: origin.example.com
      mode: auto