Xray 与 V2Fly 内核差异梳理:v2rayNG 和 v2flyNG 如何取舍

梳理 Project V 生态里 V2Fly 与 Xray 两条内核分支的来历,对比 VLESS、REALITY 等协议支持和配置兼容性,帮助判断安卓端该选 v2rayNG 还是 v2flyNG。

本文速览

安卓端先按节点要求选择内核,再比较客户端设置。订阅含 VLESS、REALITY 或指定 XTLS Vision 时,优先使用搭载 Xray 的 v2rayNG;已有 VMess 配置且由 V2Fly 环境生成时,可以保留 v2flyNG。本文从协议字段、订阅导入和分流迁移三个层面说明检查方法,不把“能导入”误当成“能连接”。

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

Project V 是相关代理技术与工具的生态背景,V2Ray 是其中的重要项目。V2Fly 社区延续维护 v2ray-core;Xray-core 则是在这一技术基础上于 2020 年分出的内核项目。两者有共同的配置传统,但后续功能、字段解释和发布节奏各自演进,不能把它们理解为只换了名称的同一个程序。

内核负责连接协议、传输、安全握手、DNS 与路由执行;客户端负责订阅管理、节点编辑、启动服务和调用系统网络接口。安卓端的 v2rayNG 使用 Xray 内核,v2flyNG 使用 V2Fly 内核。客户端界面里出现一个选项,不代表任意年代的内核都支持该选项;反过来,内核支持某项能力,界面也未必已经提供相应输入框。

排查时分别记录应用版本与内核版本。先查看应用“关于”页面,再检查服务启动日志中的版本信息;若页面只显示应用版本,不要据此推断内核版本。桌面端 v2rayN 也有客户端与内核两层,跨设备对照时应比较当前节点实际使用的内核,而不是只比较应用名称。

协议兼容:逐项看 VLESS、REALITY 与传输

协议名称只是第一层。一个节点还包含传输方式、安全层以及附加参数,例如 VMess 配合 WebSocket 与 TLS,或 VLESS 配合 REALITY 和指定的 flow。客户端必须同时理解这些层次,才能正确建立连接。下表用于选型,不替代对具体版本的功能检查。

配置需求 Xray / v2rayNG V2Fly / v2flyNG 核对重点
VMess + WebSocket + TLS 常见支持组合 常见支持组合 UUID、路径、Host、SNI 与安全设置
VLESS 基础连接 常见支持组合 不能仅凭协议名断言不可用,需核对内核及界面实现 传输、安全层与可用字段是否一致
VLESS + REALITY 优先选择,并核对内核版本 不能作为可直接替换的同等方案 serverName、公钥参数、shortId 与指纹设置
XTLS Vision 按服务端要求填写 flow 不能通过复制 flow 字段获得同等支持 是否明确要求 xtls-rprx-vision
自定义 JSON 配置 按 Xray 配置规范检查 按 V2Fly 配置规范检查 配置格式、字段层级、出站标签和资源文件

VLESS 与 REALITY 不是同义词:VLESS 是代理协议,REALITY 是连接使用的安全机制;Vision 则涉及特定的数据流处理。把安全方式改成 TLS、删除 flow,或清空 REALITY 参数,并不是“转成兼容模式”,而是改变了握手条件。如果服务端没有提供对应入口,改完仍然无法连接。

结论:按完整参数组合选内核

节点要求 REALITY 或 xtls-rprx-vision 时,先选 v2rayNG,并确认当前内核支持该组合;只有 VMess 等共同能力时,再比较订阅解析与本机设置,不必为了换名称迁移。

安卓端选型:主力与备选的适用条件

一般新配置优先从 v2rayNG 开始,原因是它与 Xray 的常见 VLESS、REALITY 配置路线对应,遇到这类订阅时减少了参数转换。这个推荐针对兼容需求,不代表所有网络下速度都更快。延迟和吞吐还受到服务端负载、运营商路径、传输方式与设备性能影响,不能仅凭内核名称给出固定排名。

v2rayNG:Xray 路线

推荐

用于订阅中含 VLESS、REALITY 或要求 Vision 的配置。导入后继续核对传输、安全设置和 flow,不依赖节点名称判断协议。

适合:安卓日常主力、明确要求 Xray 特性的节点

v2flyNG:V2Fly 路线

用于已有 V2Fly 配置流程、当前连接稳定且协议参数受支持的环境。保留现有配置前提是能确认维护来源与服务端要求。

适合:沿用 V2Fly 配置、验证共同协议的兼容性

如果目前 v2flyNG 中的 VMess 节点正常工作,没有新协议需求,可以先保留。若订阅后来新增 REALITY 节点,只在新配置上使用 v2rayNG 做验证,不必先删除旧应用与原有分流。两个应用可以分别保存配置,但 Android 通常只允许一个应用占用当前 VPN 连接,测试时应先停止另一个应用的连接。

订阅迁移:列表出现不等于配置完整

订阅链接是获取配置的入口,不是跨内核兼容保证。返回内容可能包含单节点分享链接、编码后的链接集合,或某种专用配置格式。解析器能够读出名称和服务器地址,也可能漏掉较新的安全参数;因此“节点列表有内容”和“内核成功握手”必须分别验证。

  1. 保留原配置:记录当前协议、传输、安全方式、DNS 和分应用规则。订阅地址可能包含访问令牌,备份时不要放进公开截图或日志。
  2. 添加订阅分组:在 v2rayNG 的“订阅分组设置”中新增条目,填写原订阅地址后保存,再回主界面执行“更新订阅”。不同版本的菜单位置可能调整,以同名功能为准。
  3. 打开节点编辑页:逐项核对地址、端口、UUID、传输类型与安全设置。WebSocket 要检查路径和 Host;TLS 要检查 SNI;REALITY 还要检查公钥相关参数与 shortId。
  4. 检查 flow:服务端明确要求 Vision 时,确认客户端保留了 xtls-rprx-vision。不要为了消除提示而随意把该字段清空。
  5. 启动并读取日志:先确认配置能够加载,再检查握手是否完成,最后测试实际网页与需要代理的应用。每轮只改一个字段,避免同时更换 DNS、路由和协议。

端口与认证:用具体字段定位错误

本地代理端口、服务端监听端口和协议认证参数属于不同层次。下面用两个示例端口与一个 VMess 参数作区分:端口是示例,不是所有安装的默认值;实际配置必须服从客户端设置与服务端提供的信息。

443
服务端 TLS 入口示例端口
10808
本机 SOCKS 监听示例端口
0
VMess AEAD 常用 alterId 值

假设本机 SOCKS 入口是 127.0.0.1:10808,它仅供本机应用连接,不能填进远端节点的“服务器端口”。同样,服务端使用 443 也不等于它一定是 TLS:端口号只是监听位置,实际安全方式仍由配置决定。使用 Android VPN 模式的应用流量通常不需要逐个填写这个 SOCKS 地址。

VMess AEAD 配置通常使用 alterId=0。旧教程里的非零值不能随意沿用,应按服务端提供的现代配置重新导入。这个值只与 VMess 有关,不能加到 VLESS 上作为“兼容参数”。

分流与双端:配置可复用的边界

两种内核都可以按域名、IP 等条件执行路由,但同名规则不保证整份文件可以原样迁移。规则引用的出站标签必须存在,域名与 IP 数据资源必须能读取,DNS 的解析策略也会影响最终匹配结果。迁移时先用最小配置确认节点可连接,再恢复分流,比把所有规则一次性导入更容易定位故障。

迁移方案:先对齐节点,再恢复本机规则

桌面端:v2rayN
  • 记录当前节点使用的协议、传输与内核。
  • 核对系统代理或 TUN 的实际接管范围。
  • 单独保存自定义 DNS 和路由设置。
安卓端:v2rayNG 或 v2flyNG
  • 导入同一订阅后,复核安全与传输字段。
  • 在“设置”→“分应用代理”检查应用范围。
  • 先测试最小规则,再恢复域名与 IP 分流。

同一订阅可以提供相同节点信息,但不会自动同步系统代理、VPN 权限、分应用名单和全部本地路由。

分应用代理尤其需要重新确认:选择“只代理选中应用”与“绕过选中应用”,效果正好相反。若新客户端已连接而浏览器未走预期路径,先看名单模式和浏览器是否被选中,再检查域名规则。测试过程中停止旧客户端的 VPN 服务,避免把系统当前连接状态误认成新内核的表现。

结论:没有新协议需求,不必只为名称换内核

现有 V2Fly 配置稳定时保留原方案;需要 REALITY 或 Vision 时转向 v2rayNG。迁移完成的判断标准是参数完整、握手成功、目标应用与路由符合预期,而不是订阅列表成功显示。

下载客户端