Xray 内核与 V2Fly 内核差异:XTLS、REALITY 与配置兼容性

梳理 Xray 与 V2Fly 两个内核家族的由来,对比 XTLS Vision、REALITY 等特性的支持情况,并说明 v2rayNG 与 v2flyNG 应该怎么选。

本文速览

选内核先看节点要求,而不是客户端名称。普通 VMess、WebSocket 与 TLS 配置可能在两个家族间迁移;带有 REALITY 或 xtls-rprx-vision 的节点则需要匹配 Xray 的实现。本文按功能、字段和排错顺序说明差异,适合正在选择安卓客户端、切换桌面内核或处理“导入成功但无法连接”的用户。

一、Xray、V2Fly 与客户端分别负责什么

V2Ray 最初是代理工具项目及其核心程序的名称。V2Fly 社区继续维护 v2ray-core;Xray-core 于 2020 年从相关代码基础分支发展,随后形成自己的功能与配置演进路线。两者有共同历史,但不是同一个程序的两个显示名称,也不能按名称判断哪个版本更新。

内核负责协议握手、传输、DNS 和路由等实际工作。客户端提供订阅管理、节点编辑、启动开关与日志界面,并把界面中的字段转换成内核配置。节点能否使用,同时取决于客户端能否表达这些字段,以及内核是否实现对应能力。

订阅解析 字段映射 内核加载 远端握手 路由出站

例如,节点能出现在列表中,只说明订阅被解析成了记录。直到内核成功加载配置并完成远端握手,才能确认这条链路可用。导入成功不是兼容性测试的终点。

二、功能差异:重点看 Vision 与 REALITY

VMess、VLESS 是代理协议;WebSocket、TCP 是传输方式;TLS、REALITY 属于连接安全层的选择。XTLS Vision 则是配合特定连接组合使用的流控机制。它们不在同一层,不能用“把 VMess 改成 REALITY”描述一次完整配置变更。

能力Xray 内核V2Fly 内核选型检查
VMess支持支持继续核对传输、TLS 与认证字段
基础 VLESS支持相关版本具备支持不能由 VLESS 名称推断支持 Vision
WebSocket + TLS支持支持核对路径、Host、SNI 和证书
XTLS Vision支持对应流控不支持 Xray 的 Vision 流控检查 xtls-rprx-vision
REALITY支持不支持 Xray 的 REALITY检查安全层与服务端公钥参数
DNS 与规则路由具备具备具体字段与配置格式需要分别核对

Vision 的常见字段值是 xtls-rprx-vision。它不是旧式 XTLS 配置的别名,也不是任意传输都能附加的加速选项。常见部署是 VLESS、TCP 与 TLS 或 REALITY 的组合,客户端必须与服务端的流控设置对应。

REALITY 也不等于关闭证书验证。它采用不同的握手与身份验证机制,客户端通常需要服务端公钥、允许的服务器名称、short ID 和指纹等信息。不能把普通 TLS 节点的安全层改成 REALITY 后期待直接连接。

结论:按节点必需功能选择内核

节点参数出现 security=reality 或 flow=xtls-rprx-vision 时,优先确认 Xray 配置链路;普通 VMess + WebSocket + TLS 则应先检查字段一致性,不必仅为名称差异切换内核。

三、两类节点的关键字段对照

下面两张卡片用于核对字段关系,不是可直接导入的节点。示例端口和路径只说明它们各自的用途;真实值必须从节点提供方取得。服务端监听 443 并不能证明它使用了 TLS,更不能证明它使用了 REALITY。

VLESS + REALITY + Vision

传输
TCP
安全层
REALITY
流控
xtls-rprx-vision
身份字段
UUID、服务端公钥、short ID
握手字段
serverName、fingerprint

使用支持该组合的 Xray 内核,并逐项对应服务端参数;short ID 是否为空也由服务端允许值决定。

VMess + WebSocket + TLS

传输
WebSocket
安全层
TLS
认证
UUID;现代配置通常使用 alterId=0
路径示例
/ws,大小写与服务端一致
域名字段
WebSocket Host 与 TLS serverName

两个内核家族均有相应能力;Host、连接地址和证书名称用途不同,不应不加区分地互相覆盖。

REALITY 分享链接里的 pbk 通常承载服务端公钥,sid 对应 short ID,sni 对应服务器名称,fp 对应客户端指纹标识。分享链接字段名、客户端编辑框名称和原生 JSON 键名未必相同,应由支持该格式的客户端正确映射。

四、配置兼容性:分享链接不等于原生 JSON

同一节点可以表现为分享链接、订阅条目或原生 JSON,但三者不是等价文件。分享链接主要描述节点参数;原生配置还可能包含本地入站、DNS、路由、日志与多个出站。把一个完整配置压缩成节点链接,往往无法保留全部行为。

  1. 先区分配置来源。vmess:// 与 vless:// 是分享链接前缀;以对象结构组织的 JSON 可能是完整内核配置,也可能只是服务提供方的接口响应。
  2. 再识别 JSON 方言。V2Fly 的不同配置格式以及 Xray 的字段演进不能混为一谈。即使顶层都有 inbounds 和 outbounds,嵌套字段仍可能不同。
  3. 逐层比较出站。先看协议与用户认证,再看传输、安全层和流控。缺少 REALITY 的专用设置时,不要用普通 TLS 设置补齐。
  4. 最后迁移环境设置。检查本地监听地址、端口、DNS、路由标签和规则顺序。节点握手成功但分流异常,通常不应继续改 UUID 或公钥。

原生 JSON 从 Xray 换到 V2Fly,不能仅替换可执行文件。某个内核可能直接拒绝未知取值,也可能在特定解析路径下忽略部分字段;两种情况都不能算迁移成功。应先通过目标内核的配置检查,再执行一次真实代理请求。

xray version
xray run -test -config client.json
v2ray version

以上命令用于桌面命令行环境:前两行分别查看 Xray 版本与检查已有的 client.json,第三行查看 V2Fly 版本。文件需要先准备好;不同发行包的命令参数可能不同,应先查看 help。配置检查只能发现解析及部分初始化问题,不能代替网络连接验证。

五、v2rayNG 与 v2flyNG 怎么选

安卓端按节点能力选客户端,比按名字猜测更可靠。若提供方明确要求 VLESS + REALITY + Vision,选择 v2rayNG 的 Xray 路径,并确认客户端及内置内核能处理订阅中的字段。若已有 V2Fly 原生配置,则先确认 v2flyNG 的配置入口和内核版本是否适配该格式。

没有统一的“Xray 一定更快”或“V2Fly 一定更稳”。节点位置、网络丢包、服务器负载、传输方式和路由都会影响体验。比较内核时,应保持同一服务器、同一协议组合、同一测试目标及相近时段;否则测到的差异可能来自线路,而不是内核。

六、导入成功但无法连接的排查顺序

先把“本地代理入口”和“远端服务器端口”分开。下面是一个排错环境的数字示例,不是所有客户端的默认值,也不是速度测试结果。本地端口以实际设置为准,远端端口以节点资料为准。

443
示例远端 TCP 监听端口
10808
示例本地 SOCKS 入口端口
127.0.0.1
桌面本机代理监听地址
  1. 确认正在运行的内核。启动当前节点后读取最新日志,记录内核家族、版本和第一条错误。不要仅查看安装包名称。
  2. 处理配置加载失败。出现未知协议、安全层或流控取值时,先核对功能支持;如果内核尚未成功启动,反复更换 DNS 没有作用。
  3. 处理网络不可达。确认服务器地址可解析、远端端口正确、网络允许建立连接。TCP 端口可达只证明传输入口可访问,不证明认证成功。
  4. 处理握手错误。普通 TLS 检查设备时间、serverName 和证书链;REALITY 检查服务端公钥、short ID、允许的服务器名称及指纹设置;Vision 再核对流控。
  5. 处理请求未走代理。桌面检查系统代理或应用代理配置,安卓检查 VPN 授权及分应用规则。连接已建立但目标未经过代理时,继续改协议字段会扩大问题。

桌面端若确认本地 SOCKS 入口确实是 127.0.0.1:10808,可用下面的命令明确指定代理访问本站。socks5h 会将目标域名交给 SOCKS 代理侧解析,便于与本地 DNS 路径区分。

curl --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://v2rayid.com/

命令有响应,只能说明这个目标在当前规则下能经本地入口完成请求;如果内核规则把它直连,仍不能证明远端代理出口正常。应结合访问日志确认出站,再用可信的出口 IP 查询服务核对结果。单次超时也不能直接判定内核不兼容,要回看失败发生在本地连接、远端握手还是目标访问阶段。

结论:一次只改一层

先让内核加载配置,再验证远端握手,最后检查 DNS 与路由。每次只改一个字段并保留前后日志,才能分清是功能缺失、参数错误还是流量没有进入代理。

七、常见兼容性问题

VLESS 节点一定要用 Xray 吗?

不一定。基础 VLESS 与 VLESS + REALITY + Vision 不是同一套能力要求。应查看传输、安全层和 flow,而不是只看链接以 vless:// 开头。若带有 Xray 专用特性,就应选择对应实现。

开启 allowInsecure 能修复 REALITY 错误吗?

不能把它当作修复方法。跳过普通 TLS 证书验证既不能补上缺失的 REALITY 支持,也不能纠正错误公钥、short ID 或流控。应恢复正常验证设置,依据日志核对连接所需参数。

切换内核后,国内外分流会保持不变吗?

不保证。路由标签、规则顺序、域名解析策略和地理数据文件都可能影响结果。迁移时先保留一条明确的代理测试路径,确认节点可用后再逐步恢复原有规则,并检查每类目标的实际出站。

下载客户端