跳到正文
别再把 VLESS、REALITY 和 Xray 当成一件事:代理栈分层
别再把 VLESS、REALITY 和 Xray 当成一件事:代理栈分层

别再把 VLESS、REALITY 和 Xray 当成一件事:代理栈分层

VMess、VLESS、Trojan、TLS、REALITY、XTLS 和 Xray 经常被放在一张对比表里,但它们不在同一层。先把实现、协议、传输和握手拆开,选型才不会混乱。

速读#

网上讨论代理方案时,经常把这些名字并排比较:V2Ray、Xray、VMess、VLESS、Trojan、XTLS、REALITY。问题是它们并不属于同一层。

  • Xray、V2Ray 是实现与工具。
  • VMess、VLESS、Trojan 是代理协议。
  • TCP、WebSocket、gRPC 等是传输方式。
  • TLS、REALITY 处理握手、加密或外观。
  • Vision 是流控方式,不是另一个独立协议。

一句“我用 REALITY”其实没有说完整。只有把整条组合写出来,端口、证书、CDN 和客户端兼容性才有办法讨论。

为什么这些名字总被混在一起#

这套生态不是一次设计完再发布的。项目分支、协议演进和社区习惯叠在一起,新名字不断出现,旧教程又长期留在搜索结果里。于是同一个词有时指软件,有时指配置方案,有时只是某个流行组合的简称。

早期文章常按时间线写成“VMess 之后有 Trojan,VLESS 又取代 VMess,后来 XTLS 和 REALITY 更先进”。这种叙述适合了解历史,却容易让人误以为后一个名字和前一个在同一维度竞争。

更稳定的理解方式不是背版本史,而是把一次连接拆成几层。

第一层:谁在运行配置#

Xray Core、V2Ray Core 属于实现层。它们负责读取配置、监听端口、建立出站连接,并实现一种或多种协议与传输。

这和 Nginx 支持 HTTP、TLS、反向代理类似:Nginx 是软件,HTTP 是协议。不能问“Xray 和 VLESS 哪个更快”,因为一个是程序,一个是程序支持的协议。

项目历史和组织关系会变化,但这个判断不变:先确认客户端与服务端运行的核心及版本,再讨论它们共同支持哪些能力。 同名配置项在旧版本里不存在,照抄新教程自然会失败。

第二层:客户端和服务端怎样表明身份#

VMess、VLESS、Trojan 更接近协议层,但设计取向不同。

名称可以怎样理解选型时真正要看什么
VMessProject V 生态较早的协议现有客户端兼容、旧配置迁移
VLESS更轻的认证与代理协议,本身不负责完整加密必须和 TLS 或 REALITY 等安全层一起看
Trojan建立在 TLS 使用方式之上的代理协议证书、域名和 TLS 部署边界

这里最容易产生一句误导:“VLESS 不加密,所以不安全。”VLESS 自己不重复造一层加密,不等于完整连接没有安全层;实际配置通常把加密与握手交给 TLS 或 REALITY。评价安全性必须看整套组合,不能只截取协议名称。

同样,“Trojan 看起来就是 HTTPS”也只是简化描述。流量外观、服务行为和是否能被区分,不由协议名字单独保证,错误配置更不会因为选了某个名字就自动消失。

第三层:数据从哪种通道通过#

协议之下还要有传输。常见的 TCP、WebSocket、gRPC 不只是配置表里不同的 network 值,它们决定了中间设施能不能理解和转发这条连接。

传输特点常见边界
TCP路径直接,额外封装少需要端到端 TCP 可达
WebSocket能经过理解 HTTP Upgrade 的反代多一层 HTTP 封装与反代配置
gRPC基于 HTTP/2,适合对应代理链上游必须正确支持 HTTP/2 与 gRPC

这就是为什么“挂到 Cloudflare 域名下”不能回答能否使用。Cloudflare 的普通 Web 代理理解 HTTP/HTTPS,不会自动转发任意原始 TCP;使用 WebSocket 和直接 TCP,入口边界完全不同。

第四层:TLS、REALITY 和证书#

TLS 是标准安全协议,通常需要域名与证书。REALITY 是 Xray 生态中的一种握手与认证方案,它不是 VLESS 的新名字,也不是通用 TLS 证书服务。

常见组合可以写成:

Xray Core
-> VLESS
-> TCP
-> REALITY
-> Vision flow
-> 服务器端口

每一行回答一个独立问题:谁执行、用什么协议、走什么传输、如何完成握手、怎样处理流量、从哪个端口进入。

REALITY 常与 VLESS 一起出现,只说明这套组合流行,不代表两者绑定。讨论端口时也一样:443 属于入口选择,不是 REALITY 的协议要求。端口是否可达、是否被 Nginx 占用,仍要单独检查。

第五层:XTLS 和 Vision 在哪里#

XTLS 这个名字在不同阶段指过一组围绕 TLS 流量处理与性能优化的设计。今天配置里更常直接遇到的是 xtls-rprx-vision 这类 flow。

把它理解为流控层更合适:它不能替代 VLESS 的认证,也不能替代 REALITY 的握手,更不是一个单独监听端口的服务。客户端和服务端必须同时支持并保持参数一致。

旧教程里一些 XTLS 结论可能对应已经变化的实现。看到发布日期较早的文章,先核对当前核心文档和版本,不要只把配置字段复制进新版本。

一份配置应该怎样说清楚#

以后记录方案时,我不会再只写“VLESS 节点”或“REALITY 节点”,而是至少写出:

核心:Xray Core <version>
协议:VLESS
传输:TCP
安全:REALITY
流控:Vision
入口:公网 TCP <port>
前置:无 CDN / 无 HTTP 反代

如果是 WebSocket + TLS + CDN,也应完整写出来。这样排障时才能逐层问:核心是否兼容、认证是否一致、传输是否到达、握手是否通过、入口是否正确转发。

不按“谁更新”选,按约束选#

我会按下面的顺序做决定:

  1. 所有设备是否有稳定、持续维护的客户端。
  2. 网络入口允许原始 TCP,还是只能经过 HTTP 代理。
  3. 443 是否已被网站占用,是否真的值得增加四层分流。
  4. 是否已有域名和证书维护链路。
  5. 出问题时能否从监听、传输、握手和认证逐层观察。

对已经稳定工作的旧方案,不必因为新名字出现就立刻迁移。安全更新停止、客户端兼容变差或现有入口不再适配时,再做有回滚路径的变更。

真正该淘汰的不是某个协议名,而是“能连上就不再理解”的配置。把代理栈按层写清楚之后,很多争论会自动消失:它们原本就在回答不同问题。

版权许可

CC BY-NC-SA 4.0 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

相关文章

s1oopX

登录 s1oopX