Skip to content

协议能力与限制

不同发行物可以裁剪 Cargo features,因此源码中存在某个协议,不代表当前二进制一定包含它。部署和 GUI 接入应以节点返回的 capabilities 为准。

先查询实际能力

命令行:

bash
zero build-info

HTTP:

bash
curl http://127.0.0.1:9090/api/v1/capabilities

IPC:

json
{"type":"query","id":1,"request":{"capabilities":{}}}

外部消费者应先检查 compiled,再分别检查入站/出站、TCP/UDP、MUX、传输和 limitations。不要只根据顶层 status 做单一布尔判断。

状态含义

含义
supported正常支持,未记录协议级缺口
partial基线路径可用,但某些方向、传输或外部互操作覆盖仍有限
experimental可以试用,不应默认视为生产能力
unsupported当前方向或能力未实现
not_applicable协议本身不定义该方向

partial 不等于整个协议不可用。应继续读取方向字段和 limitations,并验证实际采用的传输组合。

当前能力摘要

下表用于快速选择,最终以当前节点的机器可读响应为准:

协议总体状态入站 TCP入站 UDP出站 TCP出站 UDPMUX
directsupported支持支持(需 UDP 构建能力)支持支持不适用
blocksupported不支持不支持支持支持不适用
socks5supported支持支持支持支持不适用
httpsupported支持不适用不支持不适用不适用
mixedsupported支持支持不支持不支持不适用
vlesspartial支持部分支持部分部分
hysteria2partial支持部分支持部分不支持
shadowsockspartial支持支持支持支持不支持
trojanpartial支持部分支持部分不支持
vmesspartial部分部分部分部分部分
mierusupported支持支持支持支持不支持

VLESS 组合边界

VLESS 顶层保持 partial,因为不同 flow、传输、MUX 和 UDP 路径的成熟度不同。当前开发线中需要特别区分:

组合当前结论
普通 VLESS TCP + TLS/REALITY可用;仍需检查所选传输和发行物 capability
REALITY + xtls-rprx-vision + TCP 出站已按 Xray Vision 线协议实现并完成真实进程互操作验证
xtls-rprx-vision + mux_concurrency不支持,配置必须拆分
xtls-rprx-vision + UDP不支持,会明确拒绝
zero-aead-v1Zero 私有兼容 flow,不是 Xray Vision
xtls-rprx-vision-udp443已废弃并拒绝,不再作为别名猜测
Mux.Cool TCP / XUDP分别由 mux_concurrency / xudp_concurrency 启用,不依赖 Vision flow
XHTTP stream-one支持单条 H2/H2C 双向流;部署前仍需验证对端版本和链路组合

REALITY 客户端的 client_fingerprint 支持 chromefirefoxsafariedge,默认 chrome。它只改变 REALITY 客户端 ClientHello;普通 TLS 和 REALITY 入站不读取该字段。

不要把“某一条真实互操作路径通过”扩大解释为所有传输、UDP、MUX 和中继组合都已具备相同成熟度。配置示例见协议配置示例

部署时如何判断

对于每个节点配置:

  1. 确认协议 compiled: true
  2. 确认使用方向的 capability 不是 unsupported
  3. 检查所选 transport 是否出现在 transports
  4. 使用 MUX 或 UDP 时检查对应字段。
  5. 展示并记录 limitations,不要在 GUI 中丢弃。
  6. 对实际客户端/服务端版本和传输组合做互操作测试。

例如,VLESS 顶层为 partial,但并不妨碍使用已支持的 TCP/TLS 路径;它表示不能把某条已验证路径推广为所有 UDP、MUX 和传输组合都已具备相同成熟度。

GUI 与控制器建议

  • compiled: false 的协议隐藏或禁用配置入口。
  • partialexperimental 显示明确提示,不自动拒绝整个协议。
  • 保留未知字段和未知 limitation code,以兼容更新后的内核。
  • 保存用户选择前使用 config.validate 再做最终确认。
  • 发行物升级后重新查询,不缓存上一个版本的能力矩阵。

配置格式见协议配置示例,构建裁剪见构建特性

ZeroDeNet