机场推荐DEPARTURES · 2026

VLESS + Reality 是什么?原理、优势与局限一文讲清

本页目录(11)
  1. VLESS:只做代理,不做加密
  2. Reality:借用别人的网站做伪装
  3. Vision 流控:解决 TLS in TLS
  4. 为什么抗封锁强:三点总结
  5. 和传统 TLS 伪装、Trojan 有什么不同
  6. 看懂 Reality 节点的参数
  7. VLESS Reality 的局限
  8. Reality 节点也连不上时怎么办
  9. 日常该怎么用 Reality 节点
  10. 常见问题
  11. 相关文章

一句话结论:VLESS + Reality 是「轻量代理协议 + 借用真实网站 TLS 握手」的组合:探测者连过去看到的是一个真实大网站,只有持有密钥的客户端才能进入代理,因此很难被主动探测识别,是目前公认抗封锁能力最强的方案之一。

VLESS + Reality 是什么?简单说,它是目前机场在敏感时期最常依靠的一类节点。要理解它为什么抗封锁强,需要先拆开看:VLESS 负责「代理」,Reality 负责「伪装」。两者组合后,再加上 Vision 流控,构成了现在常见的 VLESS + Vision + Reality 节点。

VLESS:只做代理,不做加密

VLESS 是 V2Ray / Xray 体系里的轻量代理协议。它的设计很克制:只负责告诉服务器「我是谁、要去哪」,用 UUID 做身份认证,自身不提供加密,加密完全交给外层的 TLS 或 Reality。

这样做的好处是没有重复加密,开销小、速度快;缺点是 VLESS 不能单独裸奔使用,必须套一层安全传输。早期常见的是 VLESS + TLS(需要自己的域名和证书),而 Reality 出现后,绝大多数新节点改用了 VLESS + Reality。

Reality:借用别人的网站做伪装

传统 TLS 伪装的思路是「我自己建一个网站」:申请域名、签发证书,让代理流量看起来像在访问这个网站。问题是,这个域名和网站往往很小众,访问量和行为模式容易显得可疑;证书、域名也会留下可关联的特征。

Reality 换了个思路:服务器不再自己扮演网站,而是借用一个真实存在的大网站(服务端配置里称为目标网站)。

握手时发生了什么

  1. 客户端发起 TLS 握手:ClientHello 里的 SNI 写的是目标网站的域名,TLS 指纹则通过 uTLS 模拟成常见浏览器(如 Chrome)。
  2. 暗中携带认证信息:客户端利用服务器公钥,通过 X25519 密钥交换得到共享密钥,把认证信息藏在握手字段中。外人看来这只是一个普通浏览器的握手。
  3. 服务器判断身份:能验证通过的,服务器用临时密钥完成握手,进入代理;验证不通过的,服务器把连接原样转发给真实的目标网站。
  4. 探测者看到真网站:主动探测时,对方拿到的是目标网站本身的真实证书和内容,无法证明这台服务器在跑代理。

这里的关键在第 3、4 步:主动探测是封锁系统识别代理的重要手段,而 Reality 让探测结果和访问真实网站完全一致。再加上不需要自己的域名和证书,服务器本身几乎没有额外可供关联的身份特征。

Vision 流控:解决 TLS in TLS

代理里跑的大多是 HTTPS 流量,也就是「外层 TLS 里面再套一层 TLS」。内层 TLS 握手的包长度、时序有比较固定的模式,即使外层加密了,也可能被统计分析识别出来,这就是常说的 TLS in TLS 特征。

Xray 的 xtls-rprx-vision 流控针对这个问题,对内层握手阶段的数据做填充和处理,减少可识别特征。所以机场节点常写作 VLESS + Vision + Reality。Reality 项目文档也提示,不建议把 Reality 和不处理 TLS in TLS 的其他协议搭配使用。

为什么抗封锁强:三点总结

主动探测无效

未认证的连接被转发到真实网站,探测者拿到的是真证书、真页面。

无域名证书特征

服务器不需要自己的域名和证书,少了一大类可被关联、封锁的标识。

浏览器级指纹

握手指纹模拟主流浏览器,和普通 HTTPS 访问难以区分。

配合 Vision

削弱 TLS in TLS 统计特征,降低被流量分析识别的概率。

和传统 TLS 伪装、Trojan 有什么不同

对比项Trojan / VLESS + TLSVLESS + Reality
是否需要自己的域名需要不需要
证书来源为自己的域名签发借用目标网站的真实握手
被主动探测时返回自建的伪装网站转发到真实目标网站
能否套 CDN部分方案可以(如 WebSocket)不可以
TLS in TLS 处理默认不处理常配合 Vision 流控

可以看出,Reality 主要强化的是「被探测时露不露馅」和「有没有可关联的身份标识」这两点。Trojan 的伪装网站再逼真也是自建的,而 Reality 背后是真正的大网站,这一点从根本上抬高了识别门槛。

看懂 Reality 节点的参数

机场下发的订阅已经填好参数,一般无需手动修改。但了解每个字段的含义,有助于排查「导入后连不上」的问题。以 mihomo 配置为例:

- name: "VLESS-Reality-JP"
  type: vless
  server: 203.0.113.10
  port: 443
  uuid: 你的UUID
  network: tcp
  tls: true
  udp: true
  flow: xtls-rprx-vision
  servername: www.example.com
  client-fingerprint: chrome
  reality-opts:
    public-key: 服务器公钥
    short-id: 短ID
  • uuid:VLESS 的用户身份,相当于密码。
  • flow:流控类型,常见为 xtls-rprx-vision,必须与服务端一致。
  • servername:握手时声明的 SNI,也就是被借用的目标网站域名,必须在服务端允许的列表里。
  • public-key 与 short-id:Reality 认证所需的服务器公钥和短 ID,填错任何一个,连接都会被当作普通访问转发给目标网站,表现为超时或无法上网。
  • client-fingerprint:模拟的浏览器 TLS 指纹,常用 chrome。

如果担心订阅内容被客户端解析错误,可以用 订阅解析工具 看看节点参数是否完整。

VLESS Reality 的局限

  • 不能套 CDN:Reality 依赖客户端与服务器直接握手,IP 被封后只能换 IP,不能像 WebSocket + CDN 那样借 CDN 续命。
  • 目标网站选择有讲究:Reality 文档建议目标网站在境外、支持 TLS 1.3 和 HTTP/2,且最好与服务器 IP 地理位置接近。SNI 写着某大站、IP 却是不相关机房,理论上也是一种可被分析的不一致。
  • 并非绝对安全:它提高的是被识别的成本,封锁方仍可能依据流量规模和行为对 IP 采取措施。
  • 客户端要求较新:需要 Xray、mihomo 或 sing-box 内核,已停更的原版 Clash 不支持。
注意:如果你的客户端导入订阅后看不到 Reality 节点,或者节点一直超时,先确认客户端内核版本。Clash 系客户端可选 Clash Verge Rev,iOS 可用 Shadowrocket,更多选择见 代理软件推荐。

Reality 节点也连不上时怎么办

即使是 Reality 节点,也可能出现全部超时的情况。常见原因大致有三类,可以按顺序排查:

  • 参数不匹配:机场更换了服务器公钥、短 ID 或目标域名,而你的订阅还是旧的。先在客户端里手动更新订阅,这是最简单也最常见的解决办法。
  • IP 被封锁:Reality 难以被证明是代理,但不代表 IP 不会被封。如果同一服务器上的所有节点同时失联,而其他地区正常,多半是该 IP 出了问题,只能等机场更换。
  • 本地网络问题:换手机流量或其他网络测试一下,排除公司、校园网对境外连接的限制。

另外,部分客户端在导入 Reality 节点时会因为字段解析不完整而静默失败,比如漏掉短 ID 或流控字段。遇到「只有这一个客户端连不上」的情况,换一个内核不同的客户端交叉验证,往往能很快定位问题。

如果所有协议、所有节点都连不上,问题可能不在 Reality,而在入口线路或机场本身,这时备用机场就派上用场了。

日常该怎么用 Reality 节点

平时不必刻意只用 Reality。大多数机场同一地区会提供多种协议的节点,让客户端按延迟自动选择即可。真正需要切换到 VLESS Reality 的场景,是遇到大面积节点超时、尤其是 敏感时期 其他协议纷纷失联的时候。

选机场时,建议把「是否提供 VLESS Reality 或 AnyTLS 这类高抗封锁协议」作为一条硬指标。四大主流协议的横向对比可以看 Shadowsocks、Trojan、VLESS、Hysteria2 对比,另一个同样主打抗封锁的新协议见 AnyTLS 协议详解。

常见问题

VLESS Reality 需要域名和证书吗?

不需要。Reality 借用的是目标网站的真实证书握手,服务器自己不需要域名和 TLS 证书,这也是它部署门槛低、特征少的原因之一。

哪些客户端支持 VLESS Reality?

基于 Xray 内核的客户端(如 v2rayN、v2rayNG)、基于 mihomo 内核的 Clash 系客户端(如 Clash Verge Rev)、sing-box 以及 Shadowrocket 都支持。已停更的原版 Clash 内核不支持。

Reality 节点能套 CDN 吗?

不能。Reality 需要客户端直接和服务器建立 TCP 连接,CDN 会终止 TLS,握手无法到达服务器。所以 Reality 节点的 IP 一旦被封,只能更换 IP。

用了 Reality 就不会被封了吗?

不是。Reality 让「证明这是代理」变得非常困难,但封锁方仍可以基于流量规模、连接模式等对 IP 采取措施。它提高的是被识别的门槛,而不是提供绝对保证。

相关文章