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,连不上 |
补充几点容易被忽略的细节:
- spx 不一定会被转过去。本站工具会把 spx 读出来,但不会写进 Clash 片段里,因为它在 Clash 一侧是否有对应字段,要以 Mihomo 官方文档为准。如果你的节点依赖这个参数,需要对着文档手工补。
- encryption 同样需要留意。工具对 encryption 只做解析,不输出为 Clash 字段。绝大多数节点这一项是 none,没有影响;只有节点明确启用了 VLESS Encryption 的,才需要对照官方文档处理。
- 允许不安全证书的参数(allowInsecure)如果在链接里出现,工具会转成 skip-cert-verify。这是在关闭证书校验,除非你明确知道原因,否则不建议保留。
- 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
读这段输出时按下面顺序检查:
- type 是 vless,uuid 与链接一致。
- tls 为 true,同时存在 reality-opts,说明链接的 security 是 reality。
- public-key 和 short-id 都不为空,而且没有被截断。
- flow、servername、client-fingerprint 与链接中的 flow、sni、fp 一一对应。
- 没有出现 network 字段,说明传输方式是 tcp,这是正常的;出现了 network 就要检查它的子参数。
注意 udp: true 是工具的默认写法,不来自链接,需要时可以自己改。
怎么确认转换结果真的可用
字段核对完,还要实际验证,顺序和 vmess 那一篇类似,但多了几步针对 Reality 的检查:
- 让客户端加载配置,看是否报 YAML 或字段错误;若提示不认识某个字段,多半是内核较旧。
- 做延迟测试。一直超时时,优先检查 public-key、short-id 和 servername 三项。
- 检查出口。打开代理后访问 IP 与 DNS 检测导航 里的页面,确认出口地区与预期一致。
- 用原客户端对照。同一条链接在原来的客户端里能用,说明链接没问题,问题出在转换环节。
- 检查系统时间。虽然 VLESS 不依赖系统时间,但时间严重偏离会让 TLS 相关的校验出问题,确认自动同步是开的。
- 仍然不行,就换网络环境重试。某些网络环境对特定端口或流量有限制,换一个网络能帮你区分是转换问题还是环境问题。
整体连不上的情形还可以走 梯子连不上怎么办 的按现象排查。
什么时候不要转,直接换客户端更省事
并不是所有 vless 节点都需要做 vless 转 clash,有些情形换客户端更省事:
- 链接里用了客户端内核没有的字段,比如较新的传输方式。与其手写一大堆不确定的字段,不如换一个支持该协议的客户端,在 客户端档案 和支持矩阵里选。
- 你只是想在手机或电脑上用这条节点,而原客户端本来就能直接导入链接,根本不需要转成 Clash。
- 要转的是整份订阅,而且来源是在线转换站。这时订阅链接会交给对方服务器,风险见 订阅转换怎么做才安全。
下一步:把 vless 转 clash 落到可用的配置
- 先确认内核:到 协议 × 客户端支持矩阵 查你的客户端,查不到就按“资料待核实”处理,去官方文档确认。
- 用 节点转 Clash 工具 本地转换,复制结果前先读完输入框下方的提示。
- 对着上面的六项表逐一核对,重点看 public-key、short-id、flow 和 servername。
- 把片段放进配置文件后,记得在策略组里引用节点名称,结构见 Clash 配置文件怎么看。
- 想把协议本身弄明白,读 VLESS 协议是什么 与 Reality 协议是什么。
这篇没有覆盖的
- 本文不含任何节点的速度、延迟或可用性数据,转换成功不等于节点好用。
- 字段名和取值以当前 Mihomo 与 Xray 官方文档为准,本文没有逐版本核对,内核较旧时写法可能不同。
- 只讲客户端侧的配置转换,不涉及服务端搭建,也不教任何规避检测的做法。
本文引用的官方来源
- Xray 文档:VLESS(xtls.github.io)
- Mihomo 文档:VLESS(wiki.metacubex.one)
- Xray 文档:REALITY(xtls.github.io)
- 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 设置影响。逐项排除,比反复重转更有效。
接着读
- 协议 · VLESS 协议是什么?VLESS 节点与 Xray 的关系
- 协议 · Reality 协议是什么?VLESS + Reality 的原理与客户端
- 术语 · XTLS Vision是什么意思
- 教程 · vmess 转 Clash:节点链接转配置的方法与注意事项
- 教程 · hysteria2 转 Clash:什么时候转得了、什么时候转不了
- 术语 · SNI是什么意思