什么是 VLESS Reality?原理图解及与 VMess + WS + TLS 对比
发布于 · 约 8 分钟阅读
刚接触代理配置时,最让人困惑的往往是一串串缩写:VMess、VLESS、WS、TLS、Reality……它们到底是什么关系? VLESS Reality 为什么最近被频繁提起?本文不讲复杂的密码学,用尽量直白的方式说清楚 Reality 的原理, 并与目前使用最广泛的 VMess + WebSocket + TLS 组合做一个对比。
先搞懂三层概念
一个节点的「协议」其实由三层组成。可以把它想象成寄一封信:
- 代理协议(信的内容格式):VMess、VLESS、Trojan、Shadowsocks 等, 规定客户端如何告诉服务器「我是谁、我要访问哪里」。
- 传输方式(运输渠道):直接走 TCP,或者包装成 WebSocket(WS)、gRPC 等, 决定数据以什么形式在网络上传输。
- 安全层(信封):TLS 或 Reality,负责加密并决定这条连接在外界看来像什么。
所以「VLESS + Reality」和「VMess + WS + TLS」都是三层的组合,只是每一层的选择不同。
VMess 与 VLESS 有什么不同
VMess
VMess 是 V2Ray 项目最早设计的协议,自带加密与身份认证。用户以 UUID 作为身份凭证,认证时会校验时间戳, 因此客户端与服务器的系统时间必须基本一致,否则会出现连接失败。它历史悠久、客户端支持最广泛。
VLESS
VLESS 是更轻量的继任者,去掉了协议自身的加密,把安全性完全交给外层的 TLS 或 Reality 处理,从而减少重复加密的开销, 也不再依赖时间校验。VLESS 必须搭配安全层使用,单独使用是不安全的。
Reality 的原理:借一张「真实网站的脸」
传统的 TLS 方案需要你拥有一个域名,并为它申请证书,外界看到的是「有人在访问这个域名」。Reality 换了一种思路:
- 服务端配置一个真实存在的外部网站作为「伪装目标」(即
dest与serverNames)。 - 客户端发起连接时,使用这个外部网站的域名作为 SNI,并模拟主流浏览器的 TLS 指纹(
client-fingerprint), 看起来就像一次普通的网站访问。 - 客户端在握手中携带只有它才能生成的认证信息(基于服务端公钥和
short-id)。 服务端验证通过,就把这条连接当作代理连接处理。 - 如果验证不通过,比如有人直接访问这个端口,服务端会把连接原样转发给真实的外部网站,访问者看到的就是那个网站的正常内容。
正因如此,Reality 不需要自备域名和证书,对外表现也非常接近普通的网站访问。 它常与 xtls-rprx-vision 流控搭配使用,以减少在加密连接中再套一层加密所产生的特征与开销。
VMess + WebSocket + TLS 是怎么工作的
这是一套非常经典的组合:VMess 负责身份认证,WebSocket 把代理数据包装成网页常用的长连接,TLS 再在外层加密, 整体看起来是一条标准的 HTTPS + WebSocket 连接。它的优点是兼容性极好: 几乎所有客户端都支持,还可以通过 Nginx 等反向代理或 CDN 转发,部署灵活。代价是需要处理证书,并且要注意系统时间同步。
Reality 与 VMess + WS + TLS 对比
| 对比项 | VLESS + Reality | VMess + WS + TLS |
|---|---|---|
| 需要自备域名 / 证书 | 不需要 | 需要证书(正规证书或自签证书) |
| 可经过 CDN / 反向代理 | 不可以 | 可以,WebSocket 天然适合 |
| 客户端兼容性 | 需要较新的内核(Mihomo、sing-box、Xray) | 几乎所有主流客户端都支持 |
| 配置参数 | 较多:公钥、short-id、servername、指纹、flow | 较少:UUID、端口、WS 路径、TLS |
| 对系统时间敏感 | 一般不敏感 | 敏感,时间偏差大会认证失败 |
| 对外表现 | 接近访问一个真实的普通网站 | 标准的 HTTPS + WebSocket 连接 |
| 技术成熟度 | 较新,仍在持续演进 | 成熟稳定,资料丰富 |
普通用户该怎么选
- 使用订阅服务:协议由服务商选定,你需要关心的是节点是否稳定、客户端能否直接导入。 无论哪种协议,订阅都会自动生成完整配置,不需要手动理解每个参数。
- 自建节点、没有域名:Reality 省去了域名与证书,是很受欢迎的选择。 不过参数较多,配错时客户端通常只报 EOF,可参考 Clash 连接失败排查指南中的 Reality 核对清单。
- 需要经过反向代理或 CDN:选择 WebSocket 类传输,Reality 无法经过 CDN。
- 需要照顾多种设备和客户端:VMess + WS + TLS 的兼容性优势明显,旧版客户端也能使用。
supernet.day 为什么选择 VMess + WS + TLS
supernet.day 的用户分布在 Windows、macOS、Linux、Android 和 iOS 等多个平台,使用的客户端也各不相同。 我们目前采用 VMess + WebSocket + TLS,主要考虑的是 兼容性与稳定性:Clash Verge Rev、Clash Meta for Android、Shadowrocket 都能直接导入订阅,无需额外设置。唯一需要注意的是保持系统自动时间同步,避免因时间偏差导致认证失败。
如果你还在纠结用哪个客户端,可以参考 Clash vs sing-box 选型对比。
常见问题 FAQ
VLESS Reality 一定比 VMess 更快吗?
不一定。协议本身的开销差异在日常使用中很小,实际速度主要取决于线路质量、服务器负载和网络环境。Reality 的优势更多在于无需自备域名和证书、对外表现更接近普通网站访问,而不是绝对速度。
Reality 需要自己买域名和证书吗?
不需要,这正是 Reality 的特点之一。服务端借用一个真实外部网站的 TLS 握手,客户端只需要配置公钥、short-id 和对应的 servername 即可。
为什么 VMess 对系统时间那么敏感?
VMess 的身份认证包含时间戳校验,客户端与服务端时间相差过大(约 90 秒以上)就会认证失败,常见表现是连接后立刻报 EOF。开启系统的自动时间同步即可避免。
Reality 节点能套 CDN 吗?
不能。Reality 依赖客户端与服务器直接完成特殊的 TLS 握手,中间经过 CDN 会破坏这一过程。需要通过 CDN 或反向代理转发的场景,通常选择 WebSocket 等传输方式。
supernet.day 使用的是什么协议?
supernet.day 目前使用 VMess + WebSocket + TLS,并以 Clash(Mihomo)格式提供订阅,Clash Verge Rev、Clash Meta for Android 与 Shadowrocket 均可直接导入使用,协议参数都已预先配置好。