订阅里同时出现 VMess、VLESS、Trojan、WebSocket、gRPC 与 REALITY 节点时,真正决定节点能否启动的并不只是客户端名称,而是客户端调用的核心程序、核心支持的传输与安全层,以及订阅转换后生成的配置字段。Xray 与 V2Fly 有大量共同基础,但它们不是可以任意互换的两个文件。
本文速览
本文适合正在选择 v2rayN、v2rayNG 或 v2flyNG,或遇到“同一订阅在一台设备可用、另一台设备报错”的用户。重点是识别节点依赖的协议字段,判断 XTLS Vision 与 REALITY 的内核要求,并在迁移配置前完成兼容性检查。
同源分叉:两套内核的关系
V2Ray 最初形成了由入站、出站、路由、DNS、策略和传输层组成的配置模型。项目后续进入社区维护阶段,V2Fly 延续这套模型并继续维护 V2Ray Core。Xray 则从相同技术基础分叉,保留大量配置对象与常见协议,同时围绕 VLESS、XTLS、REALITY、传输实现和性能路径持续扩展。
因此,两者更接近“共享基础语法、分别扩展能力”的关系,而不是一个简单替代另一个。VMess over TCP、VMess over WebSocket、常规 VLESS over TCP、SOCKS 入站和按域名路由等配置通常很相似;涉及 Xray 专属安全层或流控字段时,兼容边界就会明显出现。
Xray 内核
推荐覆盖 VLESS、XTLS Vision 与 REALITY 等常见新节点组合,v2rayN 和 v2rayNG 的主流配置链路较完整。
适合:日常主力、REALITY 节点、混合协议订阅
V2Fly 内核
延续 V2Ray 配置体系,适合 VMess、WebSocket、gRPC、常规 TLS 与已有 V2Fly 配置。
适合:既有节点、V2Fly 服务端、配置一致性优先
- 共同基础:均采用 JSON 配置思想,包含 inbounds、outbounds、routing、dns、policy 等主要对象。
- 分叉重点:Xray 增加并维护 XTLS 与 REALITY 相关能力,部分字段只由 Xray 解析。
- 选择原则:先看节点需要什么能力,再看客户端默认调用什么内核,不能只按“新旧”判断。
判断动作:先展开节点参数
看到 security=reality、flow=xtls-rprx-vision 或 REALITY 公钥字段时,直接按 Xray 节点处理;只有 VMess、WebSocket 与普通 TLS 时,再根据现有服务端和配置维护习惯选择。
协议与安全层差异:XTLS、REALITY、VLESS
VMess 是两套内核都能处理的基础协议之一。只要地址、端口、用户标识、传输方式、TLS 参数与服务端一致,VMess over TCP 或 WebSocket 通常可以在两边生成结构接近的出站配置。这里的“接近”并不意味着整份配置可以直接复制,因为日志、DNS、传输细节和实验性字段仍可能不同。
VLESS 本身是一种轻量协议。普通 VLESS 与 TLS 的组合不等同于 XTLS Vision;订阅中出现 VLESS 也不代表一定需要 Xray。真正需要关注的是 flow 字段、安全层名称和对应设置对象。流控值为 xtls-rprx-vision 时,应使用支持该流控的 Xray 核心,并确保客户端没有在导入过程中丢弃 flow。
REALITY 位于传输安全层。客户端除了地址、端口和用户标识,还要取得 serverName、fingerprint、公钥、shortId 等参数。典型服务端监听端口是 443,但端口并非协议判据;部署者也可以使用其他端口。仅凭端口号无法判断一个节点是否为 REALITY。
443
常见 TLS 与 REALITY 服务端口
10808
桌面端常见本地 SOCKS 端口
10809
桌面端常见本地 HTTP 端口
2 套
需分别验证的核心配置
| 能力或配置 | Xray 内核 | V2Fly 内核 | 操作判断 |
|---|---|---|---|
| VMess + TCP/WebSocket | 支持 | 支持 | 核对传输路径、Host、TLS 与端口 |
| 普通 VLESS + TLS | 支持 | 需按当前核心能力与配置检查 | 不要把普通 TLS 与 Vision 混为一项 |
| VLESS + XTLS Vision | 支持 | 不解析 Xray 专属流控 | 选择 Xray,并保留 flow 字段 |
| VLESS + REALITY | 支持 | 不支持对应安全层 | 使用 v2rayN 或 v2rayNG 的 Xray 核心 |
| 路由与 DNS 基础对象 | 结构相近 | 结构相近 | 逐项检查字段,不整份盲目覆盖 |
配置兼容性:哪些字段可以复用
两套核心都使用分层配置。inbounds 接收来自本机应用的流量,outbounds 定义远端节点或直连出口,routing 根据域名、IP、端口与网络类型选择出口,dns 决定查询方式。仅使用这些基础对象时,配置迁移通常有较高成功率。
风险主要来自扩展字段。Xray 的 REALITY 配置会在 streamSettings 中声明 security 为 reality,并使用 realitySettings 保存服务器名称、客户端指纹、公钥与短标识。XTLS Vision 则常在 VLESS 用户对象内出现 flow。V2Fly 遇到无法识别的关键配置时,可能在启动阶段直接报字段或安全层错误,也可能由客户端在生成配置时拒绝创建节点。
通用检查路径
outbounds → protocol → settings → 用户与服务器参数
outbounds → streamSettings → network → 传输方式
outbounds → streamSettings → security → 安全层
outbounds → streamSettings → tlsSettings / realitySettings
VLESS 用户参数 → encryption / flow
订阅链接本身也不是核心配置文件。服务端通常返回分享链接列表或订阅数据,客户端解析后再生成运行时 JSON。同一条订阅在 v2rayN 与 v2flyNG 中呈现不同结果,可能是解析器没有对应字段,也可能是底层核心不支持节点要求。排查时应先比较单个节点详情,而不是反复删除并重新添加整条订阅。
可以优先复用的部分
- 路由规则中的 domain、ip、port、network 与 outboundTag 等基础条件。
- VMess 节点的地址、端口、用户标识、alterId、传输方式和常规 TLS 参数。
- SOCKS 与 HTTP 本地入站端口,但迁移后要确认没有被其他进程占用。
- 常规 DNS 服务器地址和查询策略,但需重新确认对应版本接受的字段名称。
必须重新核对的部分
- security 是否为 reality,以及是否存在 realitySettings。
- VLESS 用户对象是否包含 xtls-rprx-vision 流控。
- 传输层是否使用目标核心当前支持的网络类型与参数。
- 路由规则引用的 outboundTag 是否在目标配置中真实存在。
- DNS 出站、直连出站和阻断出站的标签是否与规则保持一致。
迁移结论:复制参数,不复制假设
地址、端口和用户信息可以逐项迁移;安全层、流控、DNS 与路由对象必须按目标核心重新生成。这样比直接替换整份 JSON 更容易定位报错字段。
客户端选择:v2rayN、v2rayNG 与 v2flyNG
v2rayN 是桌面端配置管理器,可以维护订阅、节点、路由与多个核心。面对同时包含 VMess、VLESS Vision 和 REALITY 的订阅,优先保留 Xray 作为相关节点的运行核心。常见检查路径是「设置」→「参数设置」→「Core 类型设置」,确认 VLESS 与相关节点类型没有被指定到不兼容的核心。
运行节点后,可在日志区确认实际启动的核心名称。若本地 SOCKS 端口使用 10808、HTTP 端口使用 10809,还要检查系统代理是否指向当前端口。端口被浏览器扩展、旧核心进程或其他网络工具占用时,节点配置本身即使正确也无法正常接管流量。
v2rayNG 面向安卓设备,使用 Xray 内核,适合导入 REALITY、VLESS Vision、VMess 和常见订阅。导入后进入节点编辑页,重点核对传输协议、伪装域名、指纹、公钥、shortId 与流控。长按节点执行真实连接测试前,应先启动服务并确认状态栏中的实时流量发生变化。
v2flyNG 面向需要 V2Fly 内核的安卓环境,适合与 V2Fly 服务端和既有 VMess 配置保持一致。若订阅同时包含 REALITY 节点,应将这类节点留给 v2rayNG,而不是尝试删除字段后连接。删除 security、flow 或公钥不会把 REALITY 节点转换成普通 TLS 节点,因为服务端握手方式并未改变。
推荐方案:按节点能力分配客户端
桌面端 v2rayN
- REALITY 与 Vision 节点使用 Xray
- 本地端口固定后再设置系统代理
- 更新订阅后检查核心日志
安卓端客户端
- v2rayNG 处理 Xray 节点
- v2flyNG 处理 V2Fly 既有配置
- 分别执行一次真实流量验证
订阅可以相同,但不要求每个客户端都运行其中全部节点;按核心能力筛选比强行转换配置更稳定。
v2rayN 的实际检查顺序
- 打开订阅分组,更新一次节点列表,确认目标节点没有被解析成空地址或零端口。
- 进入「设置」→「参数设置」→「Core 类型设置」,检查 VLESS 对应的核心选择。
- 双击节点,核对 security、flow、serverName、fingerprint、公钥与 shortId。
- 启动节点并打开日志,确认核心成功监听 10808 或自定义本地端口。
- 启用系统代理后访问实际目标,再观察上下行字节是否增长。
安卓端的实际检查顺序
- 在 v2rayNG 或 v2flyNG 中更新订阅,记录无法导入的节点类型。
- 打开单个节点详情,对照服务提供方给出的协议与传输参数。
- 启动服务后执行连接测试,避免只依赖订阅列表中的延迟数字。
- 若连接失败,先查看日志中的首条核心错误,再处理 DNS 或路由问题。
性能与稳定性:内核名称不是唯一变量
相同服务器、相同网络和相同传输方式下,两套核心的日常吞吐差异通常没有协议是否匹配重要。服务器负载、线路丢包、往返延迟、拥塞控制、TLS 握手、DNS 查询路径和客户端设备性能都会影响结果。仅用一次延迟测试给内核排序,结论容易失真。
建议固定一个节点,在同一网络下连续测试三轮。记录连接建立时间、网页首包时间、持续下载速度和失败次数。例如往返延迟约 53 毫秒、丢包低于 1% 时,VMess over WebSocket 的差异可能主要来自线路波动;如果使用 REALITY 节点,则选择 V2Fly 根本无法形成可比测试,因为协议能力不匹配。
3 轮
同节点重复测试下限
53 ms
示例线路往返延迟
<1%
稳定线路丢包参考值
- 先验证协议:核心必须完整支持节点使用的协议、安全层和流控。
- 再统一条件:固定服务器、测试时间、网络接入方式和 DNS 配置。
- 最后看日志:区分握手失败、超时、DNS 错误、路由误分流与端口占用。
常见问题:导入、报错与切换处理
多数兼容问题都能从“订阅解析、核心启动、握手建立、流量接管”四个阶段定位。先找到失败发生在哪一层,再修改对应参数,效率高于连续切换节点或重装客户端。
同一条订阅在 v2rayNG 能用,v2flyNG 为什么连不上?
打开节点详情检查 security 和 flow。若为 REALITY 或 xtls-rprx-vision,该节点依赖 Xray 能力,应保留在 v2rayNG;不要删除字段后尝试连接。
v2rayN 导入 VLESS 后提示核心启动失败怎么办?
进入「设置」→「参数设置」→「Core 类型设置」确认 VLESS 使用 Xray,再检查节点的地址、端口、公钥、shortId、serverName 与 flow。随后重启核心并读取第一条错误日志。
把 Xray 配置里的 realitySettings 删除,能改成 TLS 吗?
不能。客户端与服务端必须采用相同握手方式。要使用普通 TLS,需要服务端另行提供对应入站及完整节点参数,客户端单方面删字段不会完成协议转换。
VMess 老节点应该固定使用 V2Fly 吗?
不必按节点年龄决定。先在当前核心下核对地址、端口、用户标识、传输路径和 TLS;若现有 V2Fly 配置长期稳定,可继续使用,混合订阅则可由 Xray 统一处理常见节点。
节点显示延迟但浏览器没有流量怎么查?
确认核心正在监听本地端口,再检查系统代理是否指向 127.0.0.1:10809 或当前 HTTP 端口。随后查看路由是否把目标误送到直连或阻断出口,并验证 DNS 查询是否成功。
最终选择清单
- 订阅含 REALITY 或 XTLS Vision:选择 Xray 核心。
- 使用 v2rayNG:按 Xray 节点参数核对订阅内容。
- 使用 v2flyNG:优先运行与 V2Fly 能力匹配的既有节点。
- 使用 v2rayN:按协议设置核心,不要只替换可执行文件。
- 迁移路由和 DNS:逐项检查标签、字段与目标版本支持范围。
- 测试性能:至少连续三轮,并同时记录日志、丢包和真实流量。
最终结论:节点能力决定内核
REALITY 与 XTLS Vision 直接选择 Xray;已有 V2Fly 服务端与稳定 VMess 配置可继续使用 V2Fly。客户端名称只是管理入口,协议字段和运行日志才是兼容性判断依据。