先看节点的协议、传输、安全层与 flow,再决定使用哪种内核。需要 REALITY 或 XTLS Vision 时选择支持对应功能的 Xray;已有 VMess、WebSocket 与 TLS 节点则按实际配置核对兼容性。本文说明桌面端与安卓端的选择方法、JSON 迁移边界,以及切换后无法连接时的排查顺序。
先分清客户端、内核与节点协议
v2rayN、v2rayNG、v2flyNG 是客户端,负责订阅管理、配置编辑、日志展示与连接开关。内核负责实际建立代理连接、执行路由规则和处理流量。节点列表中显示的 VMess、VLESS 是协议名称,不是客户端名称;把客户端界面换成另一种,也不会自动改变服务端接受的协议。
V2Fly 社区维护 V2Ray 项目,本文用“V2Fly 内核”指代这一实现。Xray 是从 V2Ray 项目分支发展而来的独立内核。两者有共同历史,但今天不能按“同一个程序的两个名称”处理。协议扩展、配置字段与版本演进都可能不同。
- 桌面端:v2rayN 管理节点并调用所配置的内核。界面能填写某个字段,不代表当前运行的内核一定接受它。
- 安卓端:v2rayNG 使用 Xray 内核;v2flyNG 使用 V2Fly 内核。应按节点要求选择应用,不把二者视为任意切换内核的同一个外壳。
- 服务端:决定协议、监听端口、身份参数、传输方式与安全层。客户端必须与这些参数匹配。
协议支持:VLESS 不等于 REALITY,XTLS 不等于 TLS
比较内核时,最容易混淆的是把协议与安全层捆成一个概念。VLESS 负责代理协议层;TCP、WebSocket 等属于传输选择;TLS、REALITY 属于连接安全相关设置;xtls-rprx-vision 是需要相应实现支持的 flow 值。读懂一条节点配置,需要把这些层次分别核对。
| 配置能力 | Xray 内核 | V2Fly 内核 | 选择要点 |
|---|---|---|---|
| VMess | 支持常用配置组合 | 支持常用配置组合 | 继续核对传输、TLS 与服务端参数 |
| 基础 VLESS | 支持 | 存在相应实现,需核对版本与配置格式 | 不能由“支持 VLESS”推导出支持全部扩展 |
| XTLS Vision | 在支持该功能的版本中使用 | 不能作为 Xray Vision 配置的直接替代 | 看到 xtls-rprx-vision 时选择匹配的 Xray |
| REALITY | 在支持该功能的版本中使用 | 不直接兼容 Xray 的 REALITY 节点配置 | 公钥、serverName、shortId 等参数必须匹配 |
| WebSocket + TLS | 支持常用组合 | 支持常用组合 | 核对 Host、路径、SNI 与证书验证 |
基础 VLESS 本身不提供传输加密。不能看到 VLESS 就省略安全层设置,也不能把 REALITY 下拉框改成 TLS 当作兼容处理。服务端要求 REALITY 时,客户端必须使用对应实现并填写服务端给出的参数。
XTLS 的历史配置与现行 Vision 配置也不能混用。旧教程中的 flow 值、传输名称或安全字段可能已经不适用于当前版本。迁移时以节点提供方给出的完整参数和内核日志为准,不沿用“名字相近就可替换”的判断方法。
客户端选择:按实际节点确定 Xray 或 V2Fly
下面的推荐限定在“需要 REALITY 或 Vision”这一场景,不表示某个内核在所有线路、所有硬件上都更快。若服务端已经提供一份可用的 V2Fly 配置,而且业务没有新增功能需求,保留现有组合通常比直接替换内核更容易控制变量。
Xray 内核
推荐用于节点明确要求 REALITY、XTLS Vision 等能力的情况。桌面端在 v2rayN 中核对当前协议对应的内核设置;安卓端选择 v2rayNG,并确认内置内核版本能处理节点参数。
适合:VLESS + REALITY、明确指定 Vision 的节点
V2Fly 内核
用于已按 V2Fly 配置格式部署并验证过的连接。常见 VMess、WebSocket、TLS 组合可以按服务端参数核对,不必因订阅名称变化而迁移。
适合:已有 V2Fly 配置、常规协议与传输组合
- 查看字段:打开节点编辑页,检查是否存在
security=reality或flow=xtls-rprx-vision。存在时优先按 Xray 配置处理。 - 核对桌面设置:v2rayN 中进入「设置」→「参数设置」,查找当前版本的内核相关选项;支持按协议指定内核的版本,应核对该节点协议的映射。不同界面版本的选项位置可能变化。
- 核对运行结果:保存节点并设为活动服务器,查看日志中的内核名称、版本与启动错误。不要只看设置页上的选择结果。
- 核对安卓应用:在 v2rayNG 或 v2flyNG 的节点列表中长按目标节点,进入编辑界面查看参数。应用无法表达必需字段时,应换用匹配的客户端,而不是删除字段。
配置兼容:分享链接能导入,不代表 JSON 能直接互换
订阅导入与完整配置迁移是两件事。分享链接通常只表达某一个出站节点;客户端解析链接后,还会生成本地入站、DNS、路由和其他设置。完整 JSON 则可能包含面向特定内核的扩展字段。即使两端都能导入同一条 VMess 链接,也不代表两份完整 JSON 可以直接覆盖使用。
迁移方案:区分节点参数与完整运行配置
节点链接或订阅
- 保留原始地址与访问参数。
- 重新导入后检查协议、端口和安全层。
- 核对客户端是否忽略了不认识的字段。
- 本地监听与路由按新客户端单独设置。
完整 JSON 配置
- 先备份原配置,再建立独立测试副本。
- 逐项检查 inbounds、outbounds 与 routing。
- 核对 DNS 格式、标签引用及扩展字段。
- 确认目标内核支持相应配置格式后再启动。
优先迁移可核对的节点参数;完整配置必须按目标内核重新验证,不能只改程序文件名。
例如下面三个字段来自 Xray 的 REALITY 与 Vision 配置语境,仅展示辨识方法,不是一份可运行配置,也不能据此拼装节点:
"protocol": "vless"
"security": "reality"
"flow": "xtls-rprx-vision"
迁移失败时先区分“配置解析失败”和“远端握手失败”。日志出现未知字段、未知安全类型或不支持的 flow,说明问题还在本地配置阶段;能够启动但握手失败,才继续检查地址、端口、身份参数、安全层与系统时间。不要用关闭证书验证代替定位错误。
性能取向:用相同条件测试,不按内核名称排名
Xray 的 Vision 针对特定 TLS 流量处理路径做了优化,但这不是所有协议和所有负载都会获得相同收益的承诺。线路拥塞、服务端负载、传输封装、设备 CPU 和网络切换,都可能比内核差异更明显。拿两个不同节点的延迟比较,无法得出内核性能结论。
先对齐测试入口。下面是排查时可采用的端口示例,不是客户端默认值:实际数字以设置页和启动日志为准。远端使用 443 也不代表它必然是普通 TLS 服务。
- 固定连接:使用相同设备、网络、服务器和双方均支持的协议组合,再比较内核。不要一端使用 WebSocket,另一端使用不同传输。
- 固定负载:每组测试 3 次,每次下载同一份测试内容 30 秒,记录中位吞吐、CPU 占用与错误次数。此处是测试方法,不是本站实测成绩。
- 区分指标:TCP 握手延迟只反映连接入口;真连接测试还受目标站点与安全握手影响;下载吞吐才更接近持续传输能力。
- 控制后台:暂停订阅自动更新和其他下载。安卓端尽量保持相同电源模式,避免把系统限频误判为内核差异。
如果只有 REALITY 节点可用,就没有“保持同一协议、切到 V2Fly”的有效对照条件。此时应该评估 Xray 在当前设备上的连接稳定性和资源占用,而不是为了做比较修改服务端协议。
切换后排查:先看内核启动,再看路由与 DNS
内核可以正常启动,不代表应用流量已经进入代理。桌面系统代理只影响遵循该设置的应用;安卓 VPN 连接与分应用范围则决定哪些应用被接管。切换内核同时改动路由、DNS 和代理模式,会让问题难以复现,建议一次只改一项。
- 检查启动日志:先排除配置解析失败与
address already in use。如果示例端口 10808 已被旧进程占用,先停止旧实例,再启动新配置。 - 确认流量入口:桌面端检查系统代理或应用手动代理地址;安卓端确认已授权 VPN,并检查分应用名单中是否包含测试应用。
- 核对路由标签:自定义配置中的出站标签必须存在。迁移后若规则仍引用旧标签,可能发生启动失败或流量未按预期分配。
- 检查 DNS:核对解析服务器的访问路径,以及域名规则与域名解析策略之间的关系。DNS 查询失败不能简单归因于 VMess 或 VLESS。
- 复测单一节点:暂时避开自动选择与复杂分流,先用明确的代理出站访问固定目标。恢复后再逐条加回路由规则。
需要理解域名、IP 与出站规则的关系,可查看协议详解中的路由说明。需要重新设置代理入口,则按入门指南检查客户端配置,不要直接覆盖整份运行配置。
常见问题:订阅、握手与安卓端选择
同一条订阅,为什么 v2rayNG 能用,v2flyNG 不行?
先在节点编辑页检查安全层与 flow。如果是 REALITY 或 Vision 节点,应使用支持它们的 v2rayNG。若是双方都支持的 VMess 组合,再比较导入后的传输、Host、路径与 TLS 参数,并查看启动日志,不能仅凭节点数量相同判断配置一致。
把 VLESS 改成 VMess,能让旧配置连上吗?
不能只改单侧协议。协议由服务端入站与客户端出站共同决定,身份参数结构也可能不同。恢复原值,向节点提供方索取明确支持 VMess 的独立配置,再通过订阅导入或手动新增节点。
更新客户端后还是提示不支持 flow,怎么查?
先停止连接,再重新启动并查看日志中的实际内核版本。桌面端检查 v2rayN 当前协议调用的内核是否仍是旧文件;安卓端检查所用应用是否匹配节点要求。随后对照服务端给出的 flow 值,排除把旧教程参数带入新节点的情况。
REALITY 公钥填了,为什么还是握手失败?
同时检查地址、端口、UUID、serverName、shortId 与指纹设置,确认没有复制空格或使用另一台服务器的参数。校准设备时间,再查看日志。不要随意把 shortId 清空,也不要把安全层切成 TLS 试图绕过不匹配。
最终选择可以归纳为两步:先让客户端和内核满足节点的协议要求,再在相同条件下验证连接与性能。REALITY、Vision 是明确的功能选择依据;常规 VMess 或基础 VLESS 配置则应继续核对传输、安全层和配置格式,而不是只按内核名称作决定。