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 不相同。表中取值来自当前公开配置参考。
| 协议 | 可用 network | 回落规则 |
|---|---|---|
| VMess | tcp, ws, http, h2, grpc, mkcp, mekya | 留空或其他值按 tcp |
| VLESS | tcp, ws, http, h2, grpc, xhttp | 留空或其他值按 tcp |
| Trojan | tcp, ws, grpc | 留空或其他值按 tcp |
HTTP 与 HTTP/2
http 和 h2 是两种不同的 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: grpc 和 grpc-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-connections和min-streams冲突。
WebSocket
WebSocket 传输由 network: ws 和 ws-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- 伪装包头可选
none、srtp、utp、wechat-video、dtls或wireguard。 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: true 与 alpn: [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 的高级字段会改变上行拆分、填充、会话标识和连接复用。没有服务端或反向代理的对应配置时,应从 path、host 和默认模式开始,不要一次填满所有选项。
xhttp-opts.path按服务端- 请求路径,必须与服务端或反向代理路由一致。
xhttp-opts.host按服务端- HTTP Host,与 TLS
servername是不同字段。 xhttp-opts.mode可选- 可用
auto、stream-one、stream-up或packet-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不在当前字段参考列出的可用上行方法中。
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