VLESS REALITY 是一台藏在别的网站 TLS 握手背后的 VLESS 代理服务器。VLESS 是 Xray 项目的一种轻量代理协议,REALITY 则取代了它通常使用的 TLS 层:服务器会像一个真实、无关的网站那样作出应答,因此不需要自己的域名和证书,只有持有其公钥和 Short ID 的客户端才能连到代理。它通常与 Vision 流控(xtls-rprx-vision)搭配使用。
本文逐一介绍这几个组成部分、它们如何配合,以及各自的局限。
VLESS 是什么?
VLESS 是一种无状态的代理协议。每个连接都以一段简短的头部开始:版本号、用户 ID(一个 UUID)、命令(TCP 或 UDP)和目标地址,之后就是你的数据。
协议内容基本就这么多。VLESS 没有内置加密。它的前身 VMess 会自己加密每个数据包;VLESS 则把这件事交给下层,通常是 TLS 或 REALITY。不重复加密,手机和服务器都能省下一些开销。
VLESS 于 2020 年在 V2Ray 社区提出,如今在 Xray 中持续开发,sing-box 和 Mihomo 也支持它。想并排比较这两种协议,请阅读 VMess 和 VLESS 的区别。
传输方式
VLESS 可以直接跑在 TCP 上,也可以放进一种承载连接的传输方式里:
- WebSocket、HTTP Upgrade 和 gRPC,常用来经过 CDN。
- XHTTP(原名 SplitHTTP),Xray 基于 HTTP 的传输方式,在 Xray 中取代了 HTTP/2 和 QUIC。
REALITY 可用于无传输方式、gRPC 或 XHTTP。
XTLS Vision 是什么?
当你通过 TLS 代理打开一个 HTTPS 网站时,浏览器的 TLS 连接会在代理的 TLS 连接里传输。这种“TLS 套 TLS”有可识别的形态:内层握手的大小和时序会透过外层加密显现出来。
Vision 流控(xtls-rprx-vision)正是为此而设计。它会填充内层 TLS 握手的最初几个数据包,让它们的大小不那么容易暴露。内层连接加密之后,Vision 可以直接放行其数据,不再加密第二遍。
Vision 要求 VLESS 不使用传输方式,并搭配 TLS 或 REALITY。它的一个变体 xtls-rprx-vision-udp443 还允许发往 443 端口的 UDP(QUIC)。旧的 XTLS 流控,如 xtls-rprx-direct,已从 Xray 中移除。
REALITY 是什么?
普通的 TLS 代理需要域名和证书。配置起来麻烦,而且一台域名和网站内容都很单薄的服务器可能会显得很突兀。
REALITY 于 2023 年加入 Xray,思路完全不同。服务器会配置一个目标(target),也就是它借用的一个真实网站,比如 www.example.com。然后:
- 你的客户端以目标网站的域名作为 SNI 发起 TLS 1.3 握手,握手的形态与真实浏览器一致。
- 握手中藏着一个值,只有持有服务器公钥和有效 Short ID 的客户端才能生成。
- 如果这个值校验通过,服务器会自己完成握手,你的客户端则用同一个共享密钥验证服务器。VLESS 连接就在其中运行。
- 如果校验不通过,比如有人在探测这台服务器,服务器会把连接转发给真正的目标网站。访问者拿到的是真实网站和它的真实证书。
因此服务器始终不需要自己的证书,而探测者看到的只是一个普通网站。
公钥、Short ID、SNI 和指纹
REALITY 服务器会给你四项设置,每一项都必须与服务器一致。
| 设置 | 链接参数 | 含义 |
|---|---|---|
| 公钥 | pbk |
服务器的 X25519 公钥,一个 43 个字符的 Base64 字符串。私钥部分留在服务器上。 |
| Short ID | sid |
服务器接受的一个短十六进制字符串,最多 16 个字符。服务器可以列出多个,每个用户或设备一个。 |
| 服务器名称(SNI) | sni |
服务器借用的网站。它必须是服务器允许的名称之一。 |
| 指纹 | fp |
要模仿哪种浏览器的 TLS 握手,如 chrome、firefox 或 safari。 |
指纹之所以重要,是因为 TLS 库的握手和浏览器的握手看起来不一样。模仿浏览器,才能让握手与服务器所假扮的网站保持一致。
VLESS Encryption
2025 年,Xray 加入了 VLESS Encryption,这是 VLESS 自己的一层可选加密。它使用后量子密钥交换(ML-KEM-768 搭配 X25519),客户端的值以 mlkem768x25519plus 开头。它可以不带 TLS 运行,也可以运行在 TLS 之上,包括搭配 Vision。
它仍然很新,你遇到的大多数服务器用的都是 TLS 或 REALITY,并设置 encryption=none。导入链接、订阅或 Xray 配置时,Potatso 会保留这项设置。支持的模式见 VLESS 参考。
优点和缺点
优点:
- 不需要域名和证书。 REALITY 借用真实网站的握手。
- 抵抗主动探测。 没有密钥的客户端会被转给真实网站。
- 轻量。 VLESS 几乎不增加开销,Vision 也避免了重复加密。
- 灵活。 同一个协议可以跑在裸 TCP、WebSocket、gRPC 或 XHTTP 上,搭配 TLS 或 REALITY。
缺点:
- 更难检测,但不是无法检测。 流量特征仍然可以被分析。而且如果服务器的 IP 地址明显不属于所借用的网站,也可能显得格格不入。
- 目标网站要选得用心。 它必须支持 TLS 1.3,选得不好可能让服务器变得显眼,甚至无法工作。
- REALITY 不能套 CDN。 与 TLS 上的 WebSocket 不同,REALITY 服务器必须直连。
- 设置必须完全一致。 公钥、Short ID 或 SNI 填错时,表现为超时或打开了一个普通网站,没有明确的错误提示。
- UDP 需要手动开启。 许多客户端(包括 Potatso)默认为 VLESS 关闭 UDP,需要你自己打开。
VLESS REALITY 与其他协议对比
| VLESS + REALITY | VLESS + TLS | Trojan | VMess | Hysteria 2 | |
|---|---|---|---|---|---|
| 加密 | REALITY(TLS 1.3) | TLS | TLS | 内置加密,可选 TLS | QUIC 中的 TLS 1.3 |
| 需要域名和证书 | 否 | 是 | 是 | 仅使用 TLS 时 | 是,或固定的自签名证书 |
| 能否经过 CDN | 否 | 能,搭配 WebSocket、gRPC、XHTTP | 能,搭配 WebSocket 或 gRPC | 能,搭配 WebSocket 或 gRPC | 否 |
| 运行于 | TCP | TCP | TCP | TCP | UDP(QUIC) |
| 面对探测时的应答 | 所借用的网站 | 你自己的网站(如有配置) | 回落网站(如有配置) | 取决于配置 | 伪装网站(如有配置) |
想看更完整的对比,请阅读代理协议对比,或者了解 Trojan 和 Hysteria 2。
VLESS REALITY 链接长什么样
服务商通常会给你一个 vless:// 链接。下面是一个使用 REALITY 和 Vision、借用 www.example.com 的例子:
vless://3971e1b2-18a3-4f83-8fa6-bf9b142ee258@vless.example.com:443?security=reality&sni=www.example.com&fp=chrome&pbk=Z84J2IelR9ch3k8VtlVhhs5ycBUlXA7wHBWcBrjqnAw&sid=0123abcd&type=tcp&flow=xtls-rprx-vision#REALITY-Vision
从左往右看:
3971e1b2-…是你的用户 ID。vless.example.com:443是服务器和端口。security=reality启用 REALITY。sni=www.example.com是所借用的网站。fp=chrome是指纹。pbk和sid是公钥和 Short ID。type=tcp表示无传输方式,flow=xtls-rprx-vision启用 Vision。#REALITY-Vision是这台服务器在 App 中显示的名称。
使用普通 TLS 的链接则是 security=tls,并且没有 pbk 和 sid。所有参数都列在 VLESS 参考中。
在 iPhone 上使用 VLESS REALITY
Potatso 是一款适用于 iPhone 和 iPad 的免费代理客户端,支持带 REALITY、Vision、XHTTP 和 VLESS Encryption 的 VLESS,并已在 Xray 和 sing-box 服务器上测试。按照 iPhone 配置 VLESS REALITY 教程导入你的链接,几分钟就能连上。
常见问题
- VLESS REALITY 用一句话说是什么?
- 它是一台用 REALITY 代替普通 TLS 的 VLESS 代理服务器。服务器出示的是一个真实、无关网站的 TLS 握手,所以它不需要自己的域名和证书,只有知道其公钥和 Short ID 的客户端才能连到代理。
- VLESS 有加密吗?
- VLESS 本身没有内置加密,它依靠下层的 TLS 或 REALITY 来加密你的流量。Xray 较新的 VLESS Encryption 为它增加了一层可选的自有加密,但大多数服务器仍在用 TLS 或 REALITY。
- xtls-rprx-vision 是什么?
- 它就是 Vision 流控,用于不带额外传输方式、搭配 TLS 或 REALITY 的 VLESS。它会填充你经代理打开的 TLS 连接的开头部分,让代理 HTTPS 流量中“TLS 套 TLS”的特征更难被识别。
- VLESS REALITY 能做到完全无法检测吗?
- 没有哪种协议是无法检测的。REALITY 让服务器很难通过主动探测被识别出来,因为陌生访问者看到的是一个真实网站;但流量分析和其他信号,比如 IP 地址明显不属于所借用的网站,仍可能暴露它。
- iPhone 上能用 VLESS REALITY 吗?
- 可以,只要客户端 App 支持 REALITY。Potatso 是一款适用于 iPhone 和 iPad 的免费代理客户端,可以导入带 REALITY 和 Vision 的 vless:// 链接,并连接 Xray 和 sing-box 服务器。