本文速览

REALITY 负责代理连接的安全握手与认证,Vision 负责识别流量并优化传输,两者不是同一个开关。本文适合已经拿到 VLESS 节点、准备核对配置的用户:先看重复加密发生在哪里,再逐项检查 flow、SNI、公钥和 shortId,最后用对照测试判断提速是否真实。

先分清 VLESS、REALITY 与 Vision 的职责

常见的“VLESS + TCP + REALITY + Vision”是一组配置组合,不是四个可互换的协议名称。VLESS 处理代理请求与用户标识;TCP 提供传输连接;REALITY 提供安全层能力;Vision 则是通过 xtls-rprx-vision 指定的流控模式。只填对 UUID,并不代表安全层和流控也已经匹配。

配置层常见值主要职责
代理协议VLESS传递目标地址、请求信息与用户标识
传输TCP / RAW承载字节流,新旧界面名称可能不同
安全层REALITY完成握手、服务端身份验证与连接保护
流控xtls-rprx-vision识别内层 TLS,并在满足条件时优化传输

这里讨论的是 Xray 的实现路径。v2rayN 是桌面配置管理客户端,不等于某一种内核;使用此组合时,需要实际运行支持它的 Xray 内核。安卓端的 v2rayNG 使用 Xray 内核。v2flyNG 使用 v2fly 内核,不能因为同样能导入部分 VLESS 链接,就推定支持本文的整套组合。

TLS 嵌套:HTTPS 为什么还会被再加密一次

浏览器访问 HTTPS 网站时,浏览器与网站之间已经建立了一层 TLS。把这个请求交给代理后,普通的 TLS 代理隧道还会把这些密文字节再封装一次。因此,客户端到代理服务器这一段,可能承载着“外层 TLS 包着内层 TLS”的数据。

浏览器请求 网站 TLS 代理封装 外层 TLS 服务器转发

内层 TLS 在代理服务器之后仍然存在,直到目标网站才终止。代理服务器通常不掌握网站会话密钥,也不需要解密网页正文。外层 TLS 则保护客户端到代理服务器这段链路,防止未加密的代理请求及其他流量直接暴露。两层保护的端点不同,不能简单地把其中一层称为“毫无作用”。

这也解释了为什么“握手延迟低”不一定等于“下载速度高”。握手关注连接建立,持续下载还取决于带宽、丢包、拥塞控制和 CPU。重复加密只是其中一个变量。

Vision 如何减少重复加密,又保留什么保护

Vision 并不是把所有数据改成明文发送。它会识别内层 TLS 的握手与数据阶段,并对连接初期的流量进行填充处理。在识别到符合条件的内层 TLS 1.3 流量后,可以切换到更直接的转发路径,避免持续给这些已经受 TLS 保护的数据重复套外层加密。

TLS 1.3
符合条件的内层 TLS 是优化前提
443
常见服务端端口示例,并非固定要求
10808
本地代理端口示例,以客户端实际设置为准

切换后,网页内容仍由浏览器与网站之间的 TLS 加密保护。对不符合识别条件的流量,不能套用“已经进入直接转发”的结论,仍需由相应的安全传输路径承载。特别是普通 HTTP、非 TLS 应用和 UDP 请求,不能仅凭节点设置了 Vision,就断言它们也获得同样的优化。

这里的“流控”也不是带宽限速。xtls-rprx-vision 不会把 100 Mbps 套餐变成更高带宽,更不会修复跨网拥塞。它的价值是减少特定流量的额外处理,并改善部分 TLS 嵌套特征;收益大小需要结合实际链路判断。

结论:先确认瓶颈,再比较流控

下载时若某个 CPU 核心持续接近满载,可以优先对照 Vision 的处理开销;若 CPU 余量充足、丢包却明显升高,应先检查线路和服务器负载,而不是反复改 flow。

REALITY 握手:公钥、SNI 与目标站点怎么配合

REALITY 关注的是安全握手和认证。它利用 TLS 握手结构,结合服务端密钥及客户端配置中的认证信息,让合法客户端验证服务器并建立受保护的连接。它不要求按传统网站 TLS 的方式,为代理入口自行申请并部署一张公开受信任证书。

这不等于“随便填一个域名就能使用”。服务端配置了目标站点及允许的服务器名称,客户端的 SNI 必须与服务端设置相容;公钥则需要与服务端私钥配对。SNI 是握手中的名称信息,不是节点服务器的替代地址,也不能把任意网站变成代理服务器。

  1. 连接地址:客户端先连接节点提供的 IP 或域名及端口,例如服务商实际分配的 443,而不是直接连接 SNI 对应的网站。
  2. 握手参数:客户端带上指定的服务器名称、指纹及 REALITY 认证所需信息。各字段应取自同一份节点配置。
  3. 认证分支:服务端识别合法请求并建立代理连接;不符合认证条件的连接,可按 REALITY 的机制转向所配置的目标站点。
  4. 代理请求:安全层建立后,再校验 VLESS 用户并处理目标连接;配置 Vision 时还会涉及后续流量识别。

客户端填写要点:两组字段分别核对

优先导入提供方给出的完整链接或订阅,再核对字段。手动录入时,v2rayN 可从「服务器」→「添加 VLESS 服务器」进入配置;已有节点可打开编辑窗口。v2rayNG 可通过右上角「+」进入手动输入 VLESS 配置。不同版本的文字和入口可能调整,应按字段含义对应,不能只认窗口位置。

代理与流控字段

协议
VLESS
地址与端口
节点提供方给出的服务器地址及端口
用户 ID
分配给该节点的 UUID
传输
TCP / RAW,按内核及界面命名对应
Flow
xtls-rprx-vision

flow 必须与服务端用户配置匹配,不能单方面开启。

REALITY 安全字段

安全类型
REALITY
服务器名称
提供方指定的 SNI
公钥
与服务端私钥配对的客户端参数
Short ID
服务端允许的 shortId
指纹
例如 chrome,以提供方要求为准

部分新版本对公钥认证字段的界面命名有所调整,应核对链接解析结果与内核文档。

shortId 是十六进制字符串,通常至多 16 个十六进制字符,长度应为偶数;是否允许空值取决于服务端配置。不要自行补零,也不要把 UUID 填进这里。客户端只需要服务端对应的公钥认证参数,服务端私钥不应交给客户端。

速度对照测试:不要用延迟数字代替吞吐

要验证“减少重复加密能否提速”,需要可比较的条件。最好由同一服务器提供两份配置,只改变要观察的变量。若同时换了服务器地区、传输方式和路由,测到的差异就无法归因于 Vision。没有服务器控制权时,测试结果只能代表两条节点的整体体验。

  1. 固定路径:使用同一设备、同一网络、同一下载目标;明确该请求命中代理规则,避免一次直连、一次代理。
  2. 固定入口:两组测试都使用同一个本地代理端口,先停掉其他下载任务,避免后台流量争抢带宽。
  3. 重复取样:每组连续测试 3 次,每次持续 60 秒,交替测试顺序。分别记录平均吞吐、CPU 使用率和失败次数。
  4. 统一单位:100 Mbps 的理论换算是 12.5 MB/s,实际还受协议开销影响。不要直接拿这两个单位的数值比较。
  5. 保留日志:记录测试时间、内核版本、节点配置类型和错误信息,分享前移除 UUID、订阅地址及其他访问凭据。

上述次数和时长是建议的测试方法,不是本站实测结果。若吞吐相近但 CPU 降低,仍说明资源开销可能改善;若只降低了首次连接耗时,则不能据此宣称持续下载更快。更多握手与字段背景可查阅协议参考中的 REALITY 说明。

REALITY 与 Vision 常见问题

节点能测出 TCP 延迟,为什么网页还是打不开?

TCP 探测通常只证明端口可达,不证明 REALITY 认证或 VLESS 请求成功。先打开客户端核心日志,再依次核对 SNI、公钥认证参数、shortId、UUID 和 flow;随后检查系统时间是否准确。每次只改一项,保留原配置方便回退。

只把 flow 改成 Vision,就能给旧节点提速吗?

不能。客户端与服务端必须支持并配置相同的流控,传输组合也要符合要求。先向提供方确认是否支持 xtls-rprx-vision,再导入对应完整配置;旧节点若使用 WebSocket,不应直接照搬本文的 TCP 组合。

证书报错时,可以打开“允许不安全”解决吗?

不要把跳过证书验证当成 REALITY 的修复步骤。先确认安全类型确实选中 REALITY,再核对客户端认证参数与服务端配置。若界面仍出现传统证书错误,还应检查是否导入成了普通 TLS 节点,或实际启动了另一份配置。

换成 REALITY 后速度没变化,是否说明配置无效?

不一定。先通过日志确认连接确实走了目标节点,再按前面的 3 次、每次 60 秒方法比较吞吐与 CPU。若瓶颈原本是运营商线路或服务器出口,减少加密处理不会自动抬高带宽上限。连接问题可继续查阅常见问题中的连接排查。