vless 转 Clash:Reality 节点转配置时容易漏的字段

先说结论

vless 转 clash 的难点集中在 Reality 与 flow 相关字段:公钥、short-id、指纹、流控和传输参数任何一项漏掉,节点都会连不上。先确认内核支持,再用本地工具转换,最后逐项核对并实际验证。

vless 转 clash 听起来和 vmess 转 Clash 差不多,实际踩坑的地方完全不同。VMess 的字段少而固定,VLESS 自己不做加密,必须搭配外层的 TLS 或 Reality,于是链接里多出一串 flow、公钥、short-id、指纹之类的参数,其中任何一个没带过去,节点就会表现为“能连上但没流量”或者干脆握手失败。这一篇专讲 Reality 节点转配置时容易漏的字段,以及怎么在转之前判断“这条能不能转”。

先判断:你的内核认不认这些字段

转换之前先问一个问题:我的客户端用的内核,支持 VLESS 和 Reality 吗?这件事决定了你是在“转换”还是在“白忙活”。

  • Mihomo 文档里有 vless 代理类型,字段包含 flow、reality-opts 和 encryption 等,network 可选 ws、http、h2、grpc、xhttp。基于 Mihomo 的 Clash 系客户端,原则上可以读这类配置。
  • 客户端自己没有单独列协议的,要看它内置的是哪个内核,再去查内核的支持情况。这一步可以直接用 协议 × 客户端支持矩阵,矩阵里每一格都带官方出处,查不到的写“资料待核实”。
  • 内核版本太旧时,可能不认 reality-opts 或 xhttp 之类的较新字段。具体哪个版本开始支持,以 Mihomo 官方文档和发布说明为准,本文不替你判断。

想先搞懂协议本身,读 VLESS 协议是什么 和 Reality 协议是什么。没搞清这两层的关系,下面的字段表会读得很吃力:VLESS 负责认证和转发,Reality 负责外层的传输安全,它们在链接里是两组参数。

一条 vless Reality 链接里有什么

vless:// 链接不像 vmess 那样把内容编码成一段 Base64,而是把参数写在问号后面。典型的 Reality 链接,信息分布如下:

链接里的部分 常见键名 含义
@ 前面 UUID 用户标识,对应 Clash 的 uuid
地址与端口 host、port 对应 server 和 port
encryption encryption 一般是 none;启用 VLESS Encryption 时另有取值
security security tls 或 reality,决定外层传输安全
传输方式 type tcp、ws、grpc、xhttp 等
流控 flow 常见为 xtls-rprx-vision
握手伪装域名 sni 对应 servername
浏览器指纹 fp 对应 client-fingerprint
公钥 pbk Reality 公钥,对应 reality-opts 里的 public-key
短 ID sid 对应 reality-opts 里的 short-id
爬虫路径 spx spiderX,Reality 里的附加参数

这些键名是社区通行写法。链接格式没有统一的国际标准,不同客户端导出的内容可能略有出入,所以解码以后要以你手里那一条为准。想把一条链接拆开逐项读,可以用 节点链接解析器;词典里的 节点链接 URI 和 SNI 对理解这些字段有帮助。

转换时最容易漏的六个字段

做 vless 转 clash 时,用 节点转 Clash 工具 转完以后,对着下表一项项看。这六项是 Reality 节点“转了却连不上”的主要来源:

容易漏的字段 为什么重要 漏掉的表现
reality-opts 的 public-key Reality 握手必须用它校验服务端 握手失败,直接超时
reality-opts 的 short-id 与服务端配置的 shortId 对应 握手被服务端拒绝
flow 与服务端流控设置要一致 握手成功但数据传不动
servername 握手时使用的域名,与 sni 对应 握手被拒或证书对不上
client-fingerprint 客户端模拟的浏览器指纹 缺省值与服务端预期不一致时握手异常,具体行为以官方文档为准
network 及其子参数 传输方式必须成套 写了 grpc 却没写 service name,连不上

补充几点容易被忽略的细节:

  1. spx 不一定会被转过去。本站工具会把 spx 读出来,但不会写进 Clash 片段里,因为它在 Clash 一侧是否有对应字段,要以 Mihomo 官方文档为准。如果你的节点依赖这个参数,需要对着文档手工补。
  2. encryption 同样需要留意。工具对 encryption 只做解析,不输出为 Clash 字段。绝大多数节点这一项是 none,没有影响;只有节点明确启用了 VLESS Encryption 的,才需要对照官方文档处理。
  3. 允许不安全证书的参数(allowInsecure)如果在链接里出现,工具会转成 skip-cert-verify。这是在关闭证书校验,除非你明确知道原因,否则不建议保留。
  4. Reality 与传输方式有限制。Xray 文档写明 Reality 只能与 raw、xhttp、grpc 三种传输搭配,兼容表里 websocket、httpupgrade、mkcp 均标为不支持。如果转出来的结果同时出现 reality-opts 和 network: ws,十有八九是链接或转换出了问题,应当回头核对,而不是硬用。

xtls-rprx-vision 与 UDP:转换之外的一个坑

flow 填 xtls-rprx-vision 时,有一条官方文档里的限制值得知道:它会拦截发往 443 端口的 UDP,也就是 QUIC 流量;程序强制使用 QUIC 时,需要改用 xtls-rprx-vision-udp443。这条说明来自 Xray 文档,它描述的是 Xray 的行为,Mihomo 一侧的处理请以 Mihomo 文档为准。

对读者的意义是:如果转换后网页能开,但某些依赖 QUIC 的应用表现异常,不要第一时间怀疑转换出了错,而是先看 flow 的取值和客户端是否开启了 UDP 转发。关于这个流控的来龙去脉,见词典里的 XTLS Vision。

一次完整的转换:以虚构节点为例

下面是一个举例,所有数值均为虚构。输入一条 Reality 链接后,工具输出的片段形如:

proxies:
  - name: 示例 Reality 节点
    type: vless
    server: example.com
    port: 443
    uuid: 00000000-0000-0000-0000-000000000000
    udp: true
    flow: xtls-rprx-vision
    tls: true
    servername: www.example.org
    client-fingerprint: chrome
    reality-opts:
      public-key: 示例公钥字符串
      short-id: 示例短ID

读这段输出时按下面顺序检查:

  1. type 是 vless,uuid 与链接一致。
  2. tls 为 true,同时存在 reality-opts,说明链接的 security 是 reality。
  3. public-key 和 short-id 都不为空,而且没有被截断。
  4. flow、servername、client-fingerprint 与链接中的 flow、sni、fp 一一对应。
  5. 没有出现 network 字段,说明传输方式是 tcp,这是正常的;出现了 network 就要检查它的子参数。

注意 udp: true 是工具的默认写法,不来自链接,需要时可以自己改。

怎么确认转换结果真的可用

字段核对完,还要实际验证,顺序和 vmess 那一篇类似,但多了几步针对 Reality 的检查:

  1. 让客户端加载配置,看是否报 YAML 或字段错误;若提示不认识某个字段,多半是内核较旧。
  2. 做延迟测试。一直超时时,优先检查 public-key、short-id 和 servername 三项。
  3. 检查出口。打开代理后访问 IP 与 DNS 检测导航 里的页面,确认出口地区与预期一致。
  4. 用原客户端对照。同一条链接在原来的客户端里能用,说明链接没问题,问题出在转换环节。
  5. 检查系统时间。虽然 VLESS 不依赖系统时间,但时间严重偏离会让 TLS 相关的校验出问题,确认自动同步是开的。
  6. 仍然不行,就换网络环境重试。某些网络环境对特定端口或流量有限制,换一个网络能帮你区分是转换问题还是环境问题。

整体连不上的情形还可以走 梯子连不上怎么办 的按现象排查。

什么时候不要转,直接换客户端更省事

并不是所有 vless 节点都需要做 vless 转 clash,有些情形换客户端更省事:

  • 链接里用了客户端内核没有的字段,比如较新的传输方式。与其手写一大堆不确定的字段,不如换一个支持该协议的客户端,在 客户端档案 和支持矩阵里选。
  • 你只是想在手机或电脑上用这条节点,而原客户端本来就能直接导入链接,根本不需要转成 Clash。
  • 要转的是整份订阅,而且来源是在线转换站。这时订阅链接会交给对方服务器,风险见 订阅转换怎么做才安全。

下一步:把 vless 转 clash 落到可用的配置

  1. 先确认内核:到 协议 × 客户端支持矩阵 查你的客户端,查不到就按“资料待核实”处理,去官方文档确认。
  2. 用 节点转 Clash 工具 本地转换,复制结果前先读完输入框下方的提示。
  3. 对着上面的六项表逐一核对,重点看 public-key、short-id、flow 和 servername。
  4. 把片段放进配置文件后,记得在策略组里引用节点名称,结构见 Clash 配置文件怎么看。
  5. 想把协议本身弄明白,读 VLESS 协议是什么 与 Reality 协议是什么。

这篇没有覆盖的

  • 本文不含任何节点的速度、延迟或可用性数据,转换成功不等于节点好用。
  • 字段名和取值以当前 Mihomo 与 Xray 官方文档为准,本文没有逐版本核对,内核较旧时写法可能不同。
  • 只讲客户端侧的配置转换,不涉及服务端搭建,也不教任何规避检测的做法。

本文引用的官方来源

  1. Xray 文档:VLESS(xtls.github.io)
  2. Mihomo 文档:VLESS(wiki.metacubex.one)
  3. Xray 文档:REALITY(xtls.github.io)
  4. Xray 文档:传输配置与兼容表(xtls.github.io)

以上链接均为官方页面,梯子岛在 2026-10-09 核对过;个别网站会拦截自动化访问,用浏览器直接打开即可。平台规则可能随时调整,以官方页面当前内容为准。

vless 转 clash常见问题

vless reality 节点能转成 Clash 配置吗?

通常可以,前提是你的客户端内核认识 vless 类型和 Reality 相关字段。Mihomo 文档里 vless 配置含 flow、reality-opts 等字段,所以链接里的信息大多有对应写法。能否使用要看客户端内置的内核,转换后还必须导入验证。

转换后出现 public-key 为空,是什么原因?

多半是链接里没有 pbk 参数,或者链接在复制、转发时被截断。Reality 节点必须有公钥,缺失就无法握手。回到提供方重新取一份完整链接,再转一次,不要手工编一个公钥填进去。

flow 里的 xtls-rprx-vision 在 Clash 里还要写吗?

链接里有 flow 参数,转换结果就应该保留,并且和服务端设置保持一致。按 Xray 文档,xtls-rprx-vision 只能用于 TCP 加 TLS 或 Reality 等场景。漏掉或写错,常见表现是握手后无法传输数据。

链接里的 type 是 xhttp,工具转不了怎么办?

本站工具只覆盖 ws、grpc、h2 和 httpupgrade 这几种常见传输,遇到 xhttp 会提示需要手写。Mihomo 文档列出了 xhttp 这一选项,具体子参数请对照官方文档填写,同时确认客户端内核已经支持。

转换得对,为什么还是连不上?

先排除节点本身失效,再按顺序检查:内核是否支持该字段、系统时间是否正确、服务器端口是否被网络环境拦截、UDP 或 QUIC 流量是否受 flow 设置影响。逐项排除,比反复重转更有效。

接着读

文中出现的术语

接下来去哪儿?

找官方入口去网址导航,想核对仓库和版本看GitHub 项目导航;需要现成的机场,机场目录收了 28 家的价格与线路资料,性价比机场、便宜机场、VPN 机场分别有专项页。