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

同属 Project V 生态,两条内核分支在协议支持、传输方式与配置字段上各有取舍。本文梳理两者的主要差异,以及 v2rayNG 与 v2flyNG 的选择依据。

本文速览

节点含 REALITY 或 xtls-rprx-vision 时,优先确认 Xray 支持;普通 VLESS、VMess 与 Trojan 节点则要继续核对传输方式和配置字段。本文适合准备切换内核、选择 Android 客户端或排查订阅兼容性的人阅读,重点是把协议名称拆成可核对的连接参数,而不是按内核名称判断速度。

内核与客户端:先区分职责

Xray-core 与 V2Fly 维护的 V2Ray-core 是不同的内核项目。两者有共同的技术渊源,但已经各自演进。内核负责处理入站连接、匹配路由规则、建立代理出站;客户端负责订阅管理、界面操作和生成配置。客户端能显示一个节点,不等于当前内核能执行该节点的全部字段。

订阅解析 配置生成 内核加载 路由匹配 出站连接

v2rayN 是桌面客户端,实际连接能力取决于选用的内核及其版本。Android 上,本文按 v2rayNG 使用 Xray 内核、v2flyNG 使用 V2Fly 内核的路径讨论。安装包版本与内核版本是两组信息,排查问题时应分别记录,不要把客户端的版本号当作协议支持依据。

这三层可以分别失败。例如客户端导入成功,但生成的配置没有带上 REALITY 公钥;也可能内核已启动,但服务端的 shortId 与客户端不一致。因此,“列表里有节点”和“节点可以连接”需要分开验证。

协议对照:VLESS 不等于 REALITY

VLESS 是代理协议名称,XTLS Vision 是特定流控机制,REALITY 是 Xray 的安全层方案。它们不在同一层。只看到订阅链接以 vless:// 开头,无法判断 V2Fly 是否能使用;还要读出传输、安全层和 flow。

能力或组合XrayV2Fly核对重点
VMess支持常用组合支持常用组合传输方式、TLS、客户端与服务端版本
基础 VLESS支持支持基础协议不能据此推断扩展能力相同
Trojan支持支持TLS 名称、密码与具体传输组合
VLESS + Vision支持,需匹配版本与配置不支持 Xray 的 Vision flowxtls-rprx-vision
VLESS + REALITY支持,需匹配版本与配置不支持 Xray 的 REALITY公钥、serverName、shortId、指纹
WebSocket + TLS支持常用配置支持常用配置path、Host、serverName 不能混为一项

这里的“支持”不是任意配置可以互换的承诺。某个协议在两边都存在,只能说明存在共同能力;新增传输、配置格式和扩展参数仍须按实际版本确认。尤其不要把 Xray 的新传输字段直接复制到 V2Fly 配置中。

结论:按完整组合选内核

先查 security 与 flow,再查传输。发现 REALITY 或 xtls-rprx-vision,就按 Xray 路径验证;只有普通 TLS 和共有协议时,再评估 V2Fly 的配置兼容性。

XTLS、Vision 与 REALITY:配置名称的边界

旧教程中的 XTLS 与当前常见的 Vision 配置不能机械对应。历史 flow 名称如 xtls-rprx-direct 不应照抄到新配置。常见的 Vision 组合使用 flow: xtls-rprx-vision,安全层可以是 TLS,也可以是 REALITY;并不是只有 REALITY 才能使用 Vision。

REALITY 不是把 TLS 证书检查关掉。客户端要核对服务端提供的公钥、允许的 serverName、shortId 和指纹等参数。服务端私钥只应保留在服务端,不能作为订阅字段发给客户端。普通 TLS 则通常依赖证书链与名称验证,遇到证书错误时应先查名称和系统时间。

VLESS + REALITY + Vision

传输
TCP/raw,名称依版本而定
安全层
REALITY
Flow
xtls-rprx-vision
认证参数
公钥、shortId、serverName
内核路径
Xray

以服务端提供的组合为准,字段名称需按所用 Xray 版本核对。

VMess + WebSocket + TLS

传输
WebSocket
安全层
TLS
路径示例
/ws
名称示例
example.com
内核路径
Xray 或 V2Fly,逐项验证

路径与名称仅作教学示例;是否经过中转取决于服务端部署。

不要给 WebSocket 节点随手加上 Vision flow,也不要把 TLS 节点的 security 改为 REALITY 后期待自动兼容。这样的修改改变了连接协议,服务端必须提供对应配置。订阅信息不完整时,应取得缺失参数,而不是从另一个节点复制公钥或 shortId。

配置迁移:端口相同也不代表配置相同

切换内核前,应保留原配置并先验证一个节点。订阅链接、客户端保存的节点记录和内核 JSON 是三种不同的数据形态。即使都是 JSON,也可能采用不同的配置格式。V2Fly 的不同配置格式与 Xray 常见的 JSON 配置不能仅靠文件扩展名判断兼容。

443
示例服务端 TLS/REALITY 端口
10808
示例本地 SOCKS 入站端口
127.0.0.1
示例本地监听地址

以上数字是排查用的配置示例,不是所有版本的默认值。服务端端口 443 与本地端口 10808 分属不同方向。报本地端口占用时,改服务端端口通常没有作用;服务端没有在 443 提供对应服务时,本地入站正常也无法完成代理连接。

  1. 记录原环境:记下客户端版本、启动日志中的内核版本、节点传输和安全层,保留可恢复的配置。
  2. 先测共同协议:用参数完整的 VMess + WebSocket + TLS 等共同组合建立基线,不要先批量迁移扩展节点。
  3. 核对生成配置:检查 protocol、传输设置、TLS 名称和出站标签;日志对外分享前移除凭据。
  4. 再查规则依赖:确认 geosite.dat、geoip.dat 可被实际内核找到,规则引用的分类存在。
  5. 逐项恢复功能:依次恢复 DNS、路由分流和 TUN,避免把多个变量的错误叠在一起。

路由与 DNS 也不是附件。相同域名可能因解析位置、IPv6 可用性或规则顺序而走不同出站。比较内核时,应固定这些设置;否则出现速度变化,可能只是从代理改成了直连,不能据此判断协议效率。更多规则说明可参阅进阶配置中的 DNS 设置。

客户端选择:v2rayNG 与 v2flyNG 怎么取舍

选择 Android 客户端时,先看现有订阅需要什么,再看操作习惯。含 REALITY 或 Vision 的节点应选择可提供对应 Xray 能力的 v2rayNG 版本;已有 V2Fly 配置、使用共有协议并希望继续沿用该内核路径时,可以评估 v2flyNG。不能用节点数量或界面相似程度替代协议核对。

有些节点手动补齐字段后能连接,而同一订阅导入失败,问题可能在客户端解析层,不一定在内核。反过来,界面能保存所有字段,但内核报不支持该 flow,也不是订阅地址本身的问题。区分两者,可以避免反复重装却没有改变真正的错误点。

结论:先验证一个节点,再迁移订阅

保留原客户端的可用配置,用一个参数完整的节点验证新客户端。连接、DNS 和分流都符合预期后,再导入其余分组;不要在切换内核时同时重写全部规则。

排查顺序:从字段到握手再到网络

“启动失败”和“启动后无法访问”是不同问题。前者优先查配置格式、字段支持和端口占用;后者再查地址解析、握手参数与路由。错误信息的原文很重要,下面列的是常见含义,不是各版本一定会输出的固定句子。

现象优先检查下一步
加载配置时报未知字段或不支持的 flow内核版本、字段名称与协议组合确认是否把 Xray 扩展交给了 V2Fly
本地监听失败127.0.0.1:10808 是否已被占用关闭重复进程,或同步修改入站与使用方端口
TLS 名称或证书验证失败serverName、证书有效期、系统时间修正参数,不把关闭验证当作长期方案
REALITY 握手失败公钥、shortId、serverName、指纹与服务端日志逐项与服务端给出的配置核对
超时但没有配置错误域名解析、服务端端口、路由与网络可达性先确认连接是否到达正确地址,再检查协议参数
一部分域名能访问DNS 策略、IPv6、规则次序与出站标签固定同一测试目标,检查实际命中的规则

测速也要固定条件。TCP 握手成功,只能说明目标端口在当时可达,不代表 VLESS 认证、TLS 或 REALITY 握手完成。比较 Xray 与 V2Fly 时,应使用双方都支持的同一协议组合、同一出口和同一测试地址;分别记录真实请求延迟与下载吞吐,不能混成一个“速度”分数。

最后的选择原则很简单:需要 REALITY 或 Vision,走 Xray 路径;使用共同协议,按配置兼容性和现有维护方式选择。内核名称不直接决定稳定性,完整参数、匹配版本以及正确的 DNS 与路由,才是可复现连接的基础。

下载v2rayN查看平台与安装包