节点包含 REALITY 或 xtls-rprx-vision 时,应选择支持这些能力的 Xray 内核;只有 VMess、常规 VLESS 与 TLS 时,再按传输方式和具体字段确认兼容性。本文适合需要选择安卓客户端、切换桌面内核或排查订阅导入错误的用户,重点说明协议名称之外还要检查哪些参数,以及怎样区分配置错误与网络故障。
项目渊源与客户端分工
Xray-core 与 V2Fly 维护的 v2ray-core 具有共同的项目渊源,但已经形成不同的功能演进路线。Project V 是理解这套代理工具体系的背景;V2Fly 维护其社区延续的 v2ray-core,Xray 则沿独立路线发展。两者都属于处理代理连接、路由与 DNS 等工作的核心程序,不是客户端界面本身。
客户端负责订阅管理、节点编辑、启动内核和展示日志。内核负责读取最终配置并处理连接。因此,“界面能导入一个节点”与“内核能运行这个节点”是两件事。订阅解析器可以识别某些字段,却未必能将它们交给当前内核执行。
- v2rayNG:安卓客户端,使用 Xray 内核,适合需要 REALITY、XTLS Vision 或已有 Xray 配置的场景。
- v2flyNG:安卓客户端,使用 V2Fly 内核,适合服务端采用 V2Fly 常规配置、且不要求 Xray 专属能力的场景。
- v2rayN:桌面客户端。实际可用能力取决于所选内核及其版本,不能仅凭客户端名称判断协议支持。
排查时应同时记录客户端版本与正在运行的内核版本。升级界面程序不一定意味着已有内核文件同步更新;同样,替换内核也不代表客户端编辑器已经能生成所有新字段。
协议支持与 XTLS、REALITY 对照
REALITY 与 XTLS Vision 不是 VMess、VLESS 的同义词。VLESS 是代理协议;REALITY 位于传输安全配置层;Vision 是与特定连接组合配套的流控方式。订阅里同时出现 VLESS、REALITY、Vision,表示需要检查多个配置层,而不是只确认“支持 VLESS”就结束。
| 能力或组合 | Xray 内核 | V2Fly 内核 | 核对重点 |
|---|---|---|---|
| VMess | 支持 | 支持 | 认证方式、传输与 TLS 参数 |
| 常规 VLESS | 支持 | 支持 | 不能据此推导支持 Vision |
| WebSocket + TLS | 支持常见组合 | 支持常见组合 | 路径、Host、SNI 与证书 |
| REALITY | 支持 | 不支持 Xray 的 REALITY 配置 | 服务端公钥信息、shortId、serverName |
| xtls-rprx-vision | 支持适用组合 | 不支持该流控 | 流控值、传输与安全层组合 |
| 完整 JSON 配置 | 按 Xray 配置语法解析 | 按 V2Fly 对应配置格式解析 | 不能保证整份文件互换 |
这里的 XTLS 重点指当前常见的 Vision 用法。旧教程中的 xtls-rprx-direct 等历史流控值,不应直接替换为 xtls-rprx-vision 后便视作完成迁移。服务端也必须采用兼容组合;客户端单方面修改流控,可能导致握手失败。
选择结论:先检查安全层与流控
在节点编辑页发现 security=reality 或 flow=xtls-rprx-vision 时,先选择 Xray 路线,再核对传输参数;不要通过删除这些字段来迁就 V2Fly 内核。
REALITY 与 Vision 的连接作用
REALITY 让客户端在握手过程中验证服务端持有的密钥材料,并配合目标站点相关参数呈现 TLS 握手特征。它不是把全部代理流量转交给目标网站,也不是取消身份认证。服务端仍需正确设置密钥、目标与允许的名称,客户端仍需匹配相应参数。
Vision 主要处理代理隧道承载 TLS 流量时的识别与数据转发路径,在满足条件时减少重复包装和处理开销。它不意味着所有连接都跳过加密,也不能消除物理线路的拥塞、跨地区往返时间或运营网络丢包。网页打开速度是否改善,仍要结合实际业务判断。
VLESS + REALITY + Vision
- 代理协议
- VLESS
- 传输方式
- TCP 类传输,名称依配置版本确认
- 安全层
- REALITY
- 流控
xtls-rprx-vision- 认证信息
- 用户标识、公钥信息与 shortId 等
按服务端给出的完整参数填写,不能将 REALITY 参数当作普通 TLS 证书选项。
VMess + WebSocket + TLS
- 代理协议
- VMess
- 传输方式
- WebSocket
- 安全层
- TLS
- 路径示例
/ws,须与服务端一致- 名称参数
- 分别检查 WebSocket Host 与 TLS SNI
两种内核均有常见实现;路径示例不是通用默认值,实际以节点配置为准。
配置兼容性与字段迁移
两种内核的传统 JSON 配置有不少相似结构,例如 inbounds、outbounds 与 routing。但“字段看起来一样”不代表全部取值、默认行为和子字段都相同。V2Fly 的不同配置格式也有区别,迁移前要先确认当前文件采用哪一种格式。
以常见的传统 JSON 路由规则为例,下面片段表达“私有地址走 direct 出站”。它只展示路由部分,不是能够独立启动的完整配置。实际文件必须存在标签为 direct 的出站,并准备好规则所需的数据文件。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
}
]
}
}
- 先迁移出站:逐项核对协议、用户认证、传输、安全层与流控。含 REALITY 的出站不能原样交给 V2Fly。
- 再迁移路由:保持规则顺序,确认每个
outboundTag都能找到同名出站。标签只是引用名,不会自动创建直连或代理能力。 - 最后迁移 DNS:检查解析策略、域名规则和数据文件路径。不要把客户端界面中的 DNS 选项名直接当成内核 JSON 字段。
- 区分订阅与完整配置:节点分享链接通常只携带单个出站所需信息,不会完整搬运本地入站、DNS、路由和日志设置。
还要区分配置成功加载与参数真正生效。未知字段有时会触发错误,有时可能被忽略。仅看到进程已启动不足以证明迁移成功,应检查日志、实际出站和目标应用的连接结果。更多字段关系可结合协议配置说明逐项核对。
端口检查与故障定位顺序
连接失败时,先把本地接入和远端握手分开。下面给出两个用于说明检查方法的端口,不代表所有客户端的默认值。应以当前入站配置和节点端口为准,不要为了照抄教程而修改正常运行的监听设置。
- 确认应用是否进入客户端。如果本地 SOCKS 入站监听
127.0.0.1:10808,应用必须使用对应地址、端口与代理类型。系统代理开关不能保证所有应用都遵循该设置。 - 确认内核是否正常加载。启动即退出、日志提示字段无法解析或流控不支持时,优先查内核选择与配置格式,不要先改 DNS。
- 确认远端是否可达。本地入站正常但远端连接超时,应检查节点地址、实际服务端口、网络路径与服务端状态。端口可达也不等于认证成功。
- 确认握手参数。REALITY 重点对照公钥信息、shortId、serverName 与时间设置;常规 TLS 则检查 SNI、证书有效期与信任链。不要通过关闭证书验证掩盖错误。
- 确认路由和解析。只有部分域名失败时,检查域名解析结果和命中的出站。测试期间每次只改一组参数,保留可恢复的原配置。
排查结论:先启动,再握手,最后分流
先用一个已知参数完整的节点验证基础连接,再恢复自定义路由与 DNS。这样能区分内核能力不足、认证参数错误与分流规则问题,避免同时修改多处后失去故障线索。
客户端选择与订阅迁移
安卓端已有 REALITY 或 Vision 节点时,优先使用 v2rayNG。节点为常规 VMess 或 VLESS,并且服务端说明针对 V2Fly 配置时,可选择 v2flyNG。桌面端使用 v2rayN 时,应先确认节点需要的能力,再选择相应内核;界面名称不能替代兼容性检查。
迁移订阅建议使用新分组,保留旧分组作为回退。先导入一个节点并核对参数,再批量更新,最后迁移路由设置。订阅更新可能覆盖手动修改的节点字段;若导入后缺失流控或安全层,应先检查订阅格式与客户端解析能力,而不是反复手填。
同一个 VMess 节点在两个客户端中都能用,是否代表配置完全通用?
只能说明该节点当前使用的协议与传输组合能被两边处理。DNS、路由、入站监听和其他节点的安全层仍可能不同。导出整份 JSON 后,仍需逐项检查,不能把单节点连通性当成完整配置兼容的证据。
删除 flow 或把 REALITY 改成 TLS,能否继续连接原节点?
通常不能。客户端与服务端必须使用兼容的协议组合。删除参数不会让服务端自动切换模式;需要服务端明确提供另一套可用配置,或者改用支持原组合的内核。
订阅导入成功但全部连接失败,应先更换内核吗?
先查看日志并抽查一个节点。若日志指向不支持的协议、流控或安全层,再处理内核选择;若是超时、认证失败或证书错误,应分别检查网络、账号参数与名称配置。订阅管理流程可参考订阅导入教程。