选内核先核对服务端协议、传输方式和安全参数,再看客户端能否完整表达这些字段。需要 VLESS、Vision 与 REALITY 组合时,优先选择支持该组合的 Xray 环境;已有 VMess 配置且运行正常时,不必只因名称不同而迁移。本文适合准备更换安卓客户端、切换桌面内核或导入自定义配置的用户,重点说明哪些内容可以复用,哪些必须重新核对。
分叉由来:项目、内核与客户端不是同一层
Project V 是理解这一生态的起点,V2Ray 是其中的代理软件。V2Fly 社区持续维护 v2ray-core;Xray-core 则在 2020 年从当时的 V2Ray 代码基础分出,随后独立演进。分叉意味着共享过代码和配置习惯,不意味着后续功能、配置格式与发布时间继续保持一致。
日常说的“V2Fly 内核”,通常指 V2Fly 维护的 v2ray-core;“Xray 内核”指 Xray-core。v2rayN、v2rayNG、v2flyNG 是客户端名称,负责节点管理、界面设置与启动内核。客户端版本和内核版本是两项信息,排查问题时应分别记录。
- 协议层:VMess、VLESS 等决定客户端和服务端如何交换代理请求。
- 传输与安全层:TCP、WebSocket、TLS、REALITY 等决定连接怎样承载、怎样建立安全会话。
- 内核层:解析配置,执行 DNS、路由、入站与出站逻辑。
- 客户端层:读取订阅、生成内核配置,并处理系统代理或安卓 VPN 接口。
因此,“客户端能导入链接”和“内核能建立连接”是两回事。链接解析器可能识别了 VLESS,却没有保留服务器要求的流控或安全字段;界面中出现一条节点记录,仍不足以证明配置完整。
能力差异:重点看 Vision 与 REALITY 组合
VMess 是两套内核的共同使用场景之一,但不能由此推出全部功能互通。VLESS 是代理协议,XTLS 是相关技术路线,Vision 是常见的流控模式,REALITY 是传输安全方案。这些名称不在同一层,不能当作四种互相替代的节点类型。
| 检查项 | Xray-core | V2Fly v2ray-core |
|---|---|---|
| VMess | 可用于兼容的 VMess 配置 | 可用于兼容的 VMess 配置 |
| WebSocket + TLS | 需核对路径、Host、服务器名称 | 同样需核对传输与 TLS 参数 |
| VLESS | 常见使用场景,仍需匹配传输与流控 | 不能只凭协议名判断;历史实现不等于兼容 Xray 扩展 |
| Vision | 支持相应的 XTLS Vision 用法 | 不能按 Xray Vision 配置直接替换 |
| REALITY | 支持相应的 REALITY 配置 | 不应作为 Xray REALITY 出站的替代内核 |
| 完整 JSON | 按 Xray 配置规范解析 | 按对应版本的 V2Fly 配置规范解析 |
如果提供方给出的组合是 VLESS + TCP + REALITY,且流控为 xtls-rprx-vision,就应按这一整组要求选择内核。把 REALITY 改成 TLS,或删除 Vision 字段,并不会自动得到一个可用的兼容节点;服务端也必须提供对应的接入方式。
结论:先抄全服务端参数,再选择内核
把协议、传输、安全方式和 flow 四项写在同一张检查单上。任意一项依赖 Xray 专有能力,就先使用兼容的 Xray 环境验证,不要通过删字段来碰运气。
配置兼容性:分享链接能迁移,完整配置不能盲搬
“同一个节点能不能用”和“同一份 JSON 能不能用”需要分开回答。前者主要涉及远端连接参数,后者还包含本地监听、DNS、路由规则、出站标签以及内核专属选项。两份文件看起来都有 inbounds、outbounds,也不代表可以逐字互换。
- 先迁移节点参数:地址、端口、用户标识、传输、安全参数应逐项对应。分享链接通常不携带客户端的全部本地设置。
- 再迁移路由意图:记录哪些域名直连、哪些走代理、哪些阻断。在目标客户端中重新建立规则,并确认匹配顺序。
- 单独处理 DNS:核对解析器地址、查询出口与域名匹配方式,不把远程 DNS 地址相同当作策略相同。
- 最后核对专属字段:旧教程中的 XTLS 字段、不同配置格式的传输名称、REALITY 参数字段,都应按实际内核版本重新确认。
以 WebSocket + TLS 为例,远端端口同为 443,并不能证明连接参数一致。WebSocket 路径属于 HTTP 升级请求,Host 属于请求头,TLS 服务器名称用于握手与证书验证;三者可能不同,不能在迁移时全部替换成服务器 IP。也不要把关闭证书验证当成常规修复步骤。
REALITY 的服务器名称、公钥相关参数、short ID 与指纹选项,应按提供方信息和当前客户端字段填写。不同版本的界面名、JSON 字段与分享链接参数名可能不同,不宜仅凭字面相似手工改名。需要分享配置排错时,应先移除订阅地址、用户标识和其他访问凭据。
客户端取舍:v2rayN、v2rayNG 与 v2flyNG
桌面端先在 v2rayN 中确认当前节点实际调用的内核,而不是只看窗口标题。普通节点通常由客户端生成配置;自定义配置则可能按文件原样交给指定内核运行。节点编辑表单没有暴露某项设置,也不等于内核不支持,反过来也一样。
Xray 路线:v2rayN / v2rayNG
推荐需要 VLESS + Vision + REALITY 时,优先核对 Xray 内核版本和客户端字段支持。安卓端使用 v2rayNG;桌面端在 v2rayN 中确认所选配置实际使用 Xray。
适合:服务端明确要求 Xray 扩展,或已有对应分享链接
V2Fly 路线:v2flyNG
安卓端需要继续使用 V2Fly 配置体系时,可选择 v2flyNG。已有 VMess 连接和路由策略运行正常,应先验证迁移收益,再决定是否更换内核。
适合:维护既有 V2Fly 配置,且节点不依赖 Xray 专属能力
推荐是基于本文讨论的协议需求,不是速度排名。同一条 VMess 线路上的下载表现,还受服务端负载、网络路径、拥塞控制和客户端策略影响。不能把两次不同时间的测速差异全部归到内核上,也不能承诺更换内核后延迟一定下降。
迁移方案:先建立最小连接,再恢复本地策略
桌面端:v2rayN
- 记录当前节点、路由模式与本地监听端口。
- 用一个测试节点确认内核和传输参数。
- 先验证显式代理,再检查系统代理设置。
安卓端:v2rayNG / v2flyNG
- 保存原客户端配置,再导入单个测试节点。
- 测试期间只启动一个 VPN 服务。
- 连接正常后再恢复分应用代理和 DNS 策略。
订阅可以提供相同的节点来源,但不会自动同步两端的 DNS、路由和分应用设置。
验证顺序:端口、语法与实际流量分开检查
排错时先建立一个可重复的基线。下面的端口是测试示例,不是所有客户端的默认值。假设服务端使用 443,本地 SOCKS 入站手动设为 10808,测试程序就必须连接实际配置的地址和端口。其他客户端版本若使用混合入站,应以界面或生成配置中的监听值为准。
若直接维护 JSON,可使用内核自带的测试子命令检查语法。下面分别对应 Xray 的常用命令格式和 V2Fly v5 的命令格式;可执行文件名称随系统安装方式变化。先在配置副本上检查,不要覆盖仍能工作的原文件。
# Xray:检查当前目录中的配置文件
xray run -test -config config.json
# V2Fly v5:检查当前目录中的配置文件
v2ray test -c config.json
语法检查通过只说明配置能被解析,不会证明远端可达、凭据有效或流量按预期出站。若命令选项不被识别,先运行对应程序的帮助命令,确认安装版本支持的用法;不要为了通过检查,直接删除不理解的配置项。
- 检查启动日志:先处理未知字段、配置格式错误与本地端口占用。此时尚未进入远端握手阶段。
- 检查网络连接:持续出现超时,先核对服务器地址、端口与网络可达性,不急于修改用户标识。
- 检查握手:TLS 或 REALITY 相关失败,应对照服务器名称、安全方式和密钥参数,同时确认设备时间准确。
- 检查实际请求:用明确指定代理的程序访问目标,再检查系统代理或安卓接管范围,避免把未经过代理的请求算作内核失败。
- 恢复路由与 DNS:最小连接正常后逐项恢复,每改一项就重测,才能定位是哪条策略改变了结果。
迁移前的最后检查:保留回退,不重复改动
如果两套内核都支持现有节点,选择应落在维护成本和配置可验证性上。能稳定运行的 VMess + WebSocket + TLS 配置,不需要仅为统一名称而改成 VLESS;服务端已经要求 REALITY 时,也不应为了继续使用旧环境而强行简化连接参数。
同一个订阅在 v2rayNG 能用,在 v2flyNG 不能用,先看哪里?
先比较实际导入的节点类型和参数,而不是只比较订阅地址。订阅中可能混合 VMess、VLESS 与不同传输组合;客户端对链接参数的解析也可能不同。选出同一条节点,核对 flow、安全方式和传输,再查看启动日志。依赖 Vision 或 REALITY 的条目应放在兼容的 Xray 环境测试。
更换内核会自动修复 DNS 或分流问题吗?
不会自动修复。内核变化可能改变配置解析和默认行为,但错误的域名规则、查询出口或客户端接管范围仍需处理。迁移后应重新确认 DNS 请求走向、直连目标是否仍然直连,以及代理目标是否命中正确出站。
排错时应保留哪些记录?
保留客户端版本、内核版本、操作系统、节点的协议组合,以及去除凭据后的错误日志。一次只更换内核或一项连接参数,使用相同目标重复测试。这样才能区分配置不兼容、服务端拒绝与本地接管失败。
- 原配置单独备份,测试配置单独命名,避免订阅更新覆盖手工修改。
- 确认应用停止后再启动另一套服务,避免本地监听端口冲突。
- 迁移成功后再清理旧配置,先保留一条已验证可用的回退路径。