Xray 内核与 V2Fly 内核差异对照:VLESS、XTLS 与 REALITY 支持情况

梳理 Xray 与 V2Fly 两个内核分支的来历,对照两者在协议、传输与配置字段上的差异,帮助在 v2rayNG 与 v2flyNG 之间做选择。

本文速览

选择内核先看节点参数,不先看客户端名称。普通 VMess 与部分 VLESS 配置可由两个分支处理;带有 REALITY 或 xtls-rprx-vision 的节点则需要支持相应功能的 Xray。本文适合订阅导入后无法连接、准备更换安卓客户端或需要迁移配置的用户,重点说明协议兼容范围、字段核对顺序和切换后的验证方法。

一、Xray 与 V2Fly:内核不是客户端界面

V2Ray 是代理工具体系中的项目名称,也常被用作这类工具的泛称。V2Fly 是维护 V2Ray 的社区项目,内核承担入站接收、路由匹配、协议处理和出站连接。Xray 从 V2Ray 代码体系分支发展而来,两者具有共同历史,但已经形成独立的功能演进和配置约定。不能把 Xray 理解成给 V2Fly 换了一个名字。

客户端负责订阅管理、节点编辑和系统网络设置,内核负责执行实际连接。安卓端的 v2rayNG 使用 Xray 内核,v2flyNG 使用 V2Fly 内核。桌面端使用 v2rayN 时,则需要确认当前配置调用的具体内核,不能仅凭主窗口标题判断。更新客户端后,也应从启动日志核对实际加载的内核名称与版本。

订阅导入配置生成内核加载路由匹配远端握手

这条链说明了两种不同故障:节点出现在列表里,只代表客户端解析了订阅;内核能够加载配置并完成远端握手,才代表节点可用。界面能显示某个协议名称,并不保证当前内核理解该协议组合中的全部字段。

二、VLESS、XTLS、REALITY 支持边界

协议、传输和安全层是三个层次。VMess、VLESS 是代理协议;TCP、WebSocket 是承载数据的传输方式;TLS、REALITY 是连接安全相关方案。XTLS Vision 则通过特定流控处理优化符合条件的流量。节点备注里写着“VLESS”,仍不足以决定该用哪个内核,需要继续看安全层和 flow。

两个内核分支的常见能力对照
配置能力XrayV2Fly核对重点
VMess支持支持UUID、加密选项、传输和 TLS 参数一致
普通 VLESS支持存在支持实现检查实际版本与配置格式,不等同于支持所有 VLESS 扩展
TCP / WebSocket + TLS支持常见组合支持常见组合域名、证书验证、路径及 Host 必须对应服务端
XTLS Vision支持相应组合不支持 Xray 的 Vision 实现flow 为 xtls-rprx-vision 时选择兼容的 Xray
REALITY支持不支持 Xray 的 REALITY 方案核对服务名、公钥、shortId 与指纹

VLESS 本身不提供载荷加密,常见配置需要配合 TLS 或 REALITY 等安全方案。它与 VMess 不是“新版本替代旧版本”的简单关系。判断兼容性时,应把节点当作一整套组合,例如“VLESS + TCP + REALITY + Vision”,而不是只比较第一项。

结论:以 security 和 flow 决定内核

发现 security 为 reality 或 flow 为 xtls-rprx-vision,就优先使用支持该组合的 Xray;普通 VMess + WebSocket + TLS 则先核对参数,不必仅为更换内核而迁移。

三、两组配置:哪些字段必须成套核对

下面两张卡用于识别参数,不是可直接使用的节点。域名使用保留的示例域名,路径与端口也是说明值。实际连接必须采用服务端或订阅提供的参数。尤其不能把一个节点的 UUID、另一个节点的公钥和第三个节点的服务名拼在一起。

VLESS + REALITY + Vision

传输
TCP
安全层
reality
Flow
xtls-rprx-vision
指纹
chrome(示例)
认证参数
服务端对应公钥与 shortId

使用支持该组合的 Xray;服务名与认证参数均按节点资料填写。

VMess + WebSocket + TLS

传输
ws
路径
/proxy-ws(示例)
安全层
tls
服务名
node.example.com(示例)
VMess 加密
auto

两类内核均可处理常见组合;路径、Host 和证书域名仍须与服务端一致。

REALITY 客户端不填写服务端私钥。客户端持有服务端对应的公钥等认证信息,服务端私钥应留在服务端。shortId 采用十六进制表示,具体可用值由服务端决定;不要把它当成备注,也不要自行生成一个值替换订阅内容。服务名通常体现在 serverName 或链接参数 sni 中,需要符合服务端设置。

客户端中的“指纹”通常指 TLS ClientHello 的模拟特征,不是设备识别码。把 fingerprint 改成 chrome,并不能修复错误的公钥、UUID 或端口。REALITY 也不必然意味着开启 Vision,二者是不同配置项;只有服务端采用对应组合时,客户端才设置相应 flow。

四、配置迁移:相同 JSON 外观不代表通用

Xray 与 V2Fly 的传统配置都能看到 inbounds、outbounds、routing 等结构,但共同结构不代表所有字段互通。V2Fly 的不同配置格式也有差别。迁移时,应该先确认目标内核接受的配置格式,再检查具体协议和传输字段。将整份 Xray 配置直接交给 V2Fly,可能在加载阶段就失败。

下面展示的是 Xray 常见 VLESS + TLS + Vision 出站片段,用于定位 flow 所在层级。它不是完整配置,示例域名和全零 UUID 都是明显假值,无法用作实际节点。此例不包含 REALITY 参数,也不能通过单独把 tls 改为 reality 来完成转换。

{
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "node.example.com",
            "port": 443,
            "users": [
              {
                "id": "00000000-0000-0000-0000-000000000000",
                "encryption": "none",
                "flow": "xtls-rprx-vision"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls",
        "tlsSettings": {
          "serverName": "node.example.com",
          "allowInsecure": false
        }
      }
    }
  ]
}
  1. 先保存原设置。记录客户端版本、内核版本、当前节点和路由预设;备份文件可能含访问凭据,需要妥善保存。
  2. 先迁移一个节点。通过目标客户端支持的节点链接或订阅重新导入,检查生成配置,不先覆盖全部路由与 DNS 设置。
  3. 先确认内核启动。若日志提示未知协议、未知安全类型或不支持 flow,应修正配置或选择兼容内核,而不是反复测试网络延迟。
  4. 再恢复分流。核对规则引用的出站 tag、域名与 IP 数据文件,以及 DNS 处理方式。节点能连通,不代表旧规则已正确迁移。

五、v2rayNG 与 v2flyNG 的选择和验证

安卓用户已有 REALITY 或 Vision 节点时,通常选择 v2rayNG。已有 V2Fly 配置、节点为普通兼容组合且运行正常时,可以继续使用 v2flyNG。对桌面用户而言,v2rayN 是管理界面,核心判断仍是当前节点调用哪个内核、内核是否支持这套参数。

不要同时改内核、节点、DNS 和路由预设。一次只改一项,才能知道错误来自哪里。下面的数字用于说明各端口的角色,不是测速结果,也不表示所有客户端的默认值。端口是否采用这些数值,应以当前配置为准。

443
本文示例远端 TLS 端口
10808
排查示例本地 SOCKS 端口
53
传统 DNS 服务常用端口

远端 443 端口能建立 TCP 连接,只能证明这一层可达,不能证明 VLESS 认证、TLS 或 REALITY 握手成功。本地 10808 若被占用,则可能使内核无法启动,和远端协议是否兼容无关。DNS 请求也有独立路径:浏览器能解析域名,不代表内核使用的解析器同样可达。

六、常见问题:能导入、能启动、能连接的区别

V2Fly 支持 VLESS,为什么 REALITY 节点仍然不能用?

VLESS 是协议,REALITY 是另一层能力。支持前者不等于支持后者;同样也不意味着支持 Vision。应检查节点的完整组合,使用能够处理该安全层与 flow 的 Xray,而不是只删除 REALITY 字段。

换成 Xray 后一定会更快吗?

不一定。性能还受远端负载、网络路径、丢包、传输方式和客户端资源限制影响。Vision 的处理机制不等于所有请求都会获得固定幅度的提速。先保证功能兼容,再在同一网络条件下比较实际使用表现。

把 flow 留空可以兼容旧内核吗?

不能把它当成通用降级办法。服务端若要求 Vision,客户端留空可能导致连接失败。需要由服务端提供双方均支持的配置组合;单方面删字段,并不会让不兼容的服务端自动切换协议。

同一订阅可以同时用于两个安卓客户端吗?

取决于订阅格式和节点内容。能解析订阅不代表每个节点都兼容;普通 VMess 节点与 REALITY 节点可能混在同一分组中。分别核对导入后的协议、传输和安全参数,并避免两个客户端同时尝试接管 VPN 通道。

结论:先验证一条连接,再恢复整套配置

按“配置可加载、入口已接管、远端握手成功、分流结果正确”的顺序检查。只要定位到失败层级,就能决定是更换内核、修正参数,还是排查网络,而不是盲目重装客户端。

下载v2rayN