选内核先看服务端要求,不先比较名称。需要 REALITY 或 XTLS Vision 时,应选择支持相应功能的 Xray 版本;使用常规 VMess、WebSocket 与 TLS 时,两条技术路线都有对应实现。本文适合已经拿到订阅、准备选择客户端或迁移配置的读者,重点解释协议层次、字段差异,以及如何检查导入后有没有丢失关键参数。
先区分客户端、内核与 Project V
内核负责实际建立连接、处理协议、查询 DNS 和执行路由;客户端负责把这些能力做成界面。v2rayN、v2rayNG、v2flyNG 是客户端名称,Xray-core 与 V2Fly 维护的 v2ray-core 则是内核。客户端版本号和内核版本号是两组信息,更新界面程序不一定等于已经切换到另一种内核。
Project V 是围绕 V2Ray 形成的工具与协议生态。V2Fly 社区延续了 v2ray-core 的开发;Xray-core 于 2020 年从相关代码基础分支发展,之后形成了不同的功能演进路线。两者有共同历史,因此能看到相似的 JSON 外形,但不能据此认为每个配置字段都能互换。
这条链路也解释了“订阅能导入,却不能连接”的原因:导入成功只说明客户端读懂了部分数据,不能证明内核支持所有功能,更不能证明服务端地址、认证信息与传输参数相互匹配。
- v2rayN:桌面客户端。具体可用内核与切换入口以安装版本为准,排查时应确认当前节点实际调用了哪个内核。
- v2rayNG:安卓客户端,本文按其 Xray 内核使用场景说明。
- v2flyNG:安卓客户端,使用 V2Fly 内核;不能因为界面相近,就按 Xray 专有字段配置。
协议支持对照:VLESS 不等于 REALITY
一个连接通常同时包含代理协议、传输方式和安全层。VLESS、VMess 属于代理协议;TCP、WebSocket 属于传输方式;TLS、REALITY 则涉及连接安全机制。XTLS Vision 对应特定流控与数据处理方案,不是把“TLS”开关换个名字。
| 功能 | Xray 路线 | V2Fly 路线 | 选择时检查 |
|---|---|---|---|
| VMess | 支持,常见于 TCP、WebSocket 与 TLS 组合。 | 支持,是常见的互通场景。 | 认证信息、传输参数和服务端配置必须一致。 |
| VLESS 基础协议 | 支持,并扩展出相应的流控与安全组合。 | 部分版本和配置体系提供支持,须核对实际构建与客户端入口。 | 不能仅凭 VLESS 名称判断整个节点可用。 |
| XTLS Vision | 支持相应版本中的 xtls-rprx-vision 流控。 | 不能按 Xray Vision 配置直接使用。 | 客户端和服务端均须支持该流控及其组合。 |
| REALITY | 支持相应版本中的 REALITY 配置。 | 不能直接使用 Xray 的 REALITY 配置。 | 核对服务端公钥信息、SNI、short ID 与指纹设置。 |
| WebSocket + TLS | 有对应实现。 | 有对应实现。 | 检查路径、Host、证书名称及配置格式。 |
结论:先找专有能力,再选客户端
订阅明确标注 REALITY 或 xtls-rprx-vision 时,安卓端优先选择支持这些参数的 v2rayNG。只有常规 VMess + WebSocket + TLS 时,再比较现有配置兼容性,不必为了名称迁移。
“V2Fly 不支持任何 VLESS”和“只要支持 VLESS 就能连 REALITY”都过于绝对。前者忽略版本与实现差异,后者混淆协议和安全层。旧资料里的 XTLS 原始流控也不能直接当作 Vision 使用,尤其不要把旧值照抄进新配置。
配置卡:两种常见组合分别检查什么
下面两张卡是字段核对表,不是可连接节点,也不包含服务端凭据。示例路径 /proxy 仅用于说明字段位置;真实路径必须照服务端填写。REALITY 卡采用常见的 VLESS + TCP + Vision 组合,不代表所有 VLESS 都需要开启 Vision。
VLESS + REALITY
- 代理协议
- VLESS
- 传输
- TCP
- 安全层
- REALITY
- Flow
xtls-rprx-vision- 认证与握手
- 用户 ID、服务端公钥信息、SNI、short ID
适合按 Xray 对应版本的字段定义核对,参数须与服务端逐项对应。
VMess + WebSocket + TLS
- 代理协议
- VMess
- 传输
- WebSocket
- 安全层
- TLS
- 路径示例
/proxy- 认证与握手
- 用户 ID、Host、SNI、有效证书
两条内核路线均有对应实现,但路径与域名字段不能随意省略或互换。
Host 与 SNI 经常相同,但用途不同。WebSocket 的 Host 是 HTTP 请求中的目标主机信息;SNI 是 TLS 握手时提供的服务器名称。连接地址又是另一个字段,它决定先向哪里建立网络连接。服务端要求三者不同时,不能为了“看起来整齐”全部改成同一个值。
JSON 写法:共同外形不代表整份配置通用
Xray 和 V2Fly 的常见配置里都能看到 inbounds、outbounds、routing 等名称。V2Fly 还有不同配置版本与结构;客户端也可能先读取分享链接,再生成自己的内核 JSON。因此,分享链接相同、界面字段相似、最终内核配置兼容,是三件不同的事。
下面是传统 JSON 写法中的 streamSettings 字段片段,只说明 WebSocket 与 TLS 的层次。example.com 是保留示例域名,不是可用服务地址。片段缺少完整入站、出站与认证设置,不能单独运行。
{
"streamSettings": {
"network": "ws",
"security": "tls",
"tlsSettings": {
"serverName": "example.com"
},
"wsSettings": {
"path": "/proxy",
"headers": {
"Host": "example.com"
}
}
}
}
- 传输字段:
network选择传输实现。文档中的 TCP、RAW 等名称存在版本演进,不能只按界面显示词推断底层 JSON 值。 - 安全字段:普通 TLS 使用对应的 TLS 配置;Xray REALITY 使用其专有配置结构,不能仅把
tls字符串换成reality就完成迁移。 - 流控字段:在常见 Xray VLESS 出站配置中,
flow属于用户配置项,不应随意放到streamSettings内。 - 版本字段:REALITY 客户端公钥相关参数在不同 Xray 版本的文档和界面中可能采用不同名称。旧示例中的
publicKey与较新文档中的password应结合实际内核版本核对,不能在未知版本上机械替换。
迁移时最稳妥的做法是重新导入服务方提供的完整订阅,再核对生成结果。手动搬运整份 JSON 只适合明确了解来源版本、目标版本和配置格式的情况;即便能通过语法检查,也仍需验证字段是否被真正采用。
端口与路由:不要把本地入口当作远端能力
内核负责路由,但连接要先进入内核。系统代理只影响遵循该设置的应用;TUN 通过虚拟网络接口接管相应流量,通常需要额外权限。两者都不等于“已经选好代理出站”,进入内核后的请求还要按路由规则分配。
这些数字是地址和端口示例,不是性能测试结果,也不是所有客户端的统一默认值。假设应用填写 127.0.0.1:10808,就应确认客户端确实在本机该端口监听,并且入口协议与应用要求一致。HTTP 代理和 SOCKS 入口不能仅凭端口号判断。
- 在 v2rayN 的「设置」→「参数设置」中核对本地监听与相关选项;不同版本的分组名称可能不同,应以当前界面为准。
- 确认系统代理或应用代理指向实际监听地址,避免仍指向旧客户端的端口。
- 检查当前路由模式与命中的规则。
geosite:cn是域名分类引用,geoip:cn是 IP 分类引用,二者依赖对应数据文件。 - 迁移到另一内核后,核对规则文件位置、标签名称和出站标签是否仍对应,不能只复制路由条目。
“直连网站正常、代理网站失败”往往说明请求已进入某条规则,但代理出站仍有问题;“所有应用都不受切换影响”则更值得先检查入口与接管方式。应按链路定位,不要直接归因于内核速度。
安卓怎么选:按订阅要求做一次小范围验证
如果现有节点明确要求 Xray REALITY 或 Vision,选择支持相应功能的 v2rayNG 更直接。如果现有服务提供的是与 V2Fly 配套验证过的配置,v2flyNG 也可以继续使用。没有这些专有需求时,应优先考虑配置能否完整导入、日志是否便于检查,以及现有路由能否保留。
- 记录环境:记下客户端版本、内核版本、协议、传输、安全层和是否开启 TUN。不要只记录一个“最新版”。
- 保留旧配置:迁移前备份订阅分组与自定义路由,敏感订阅地址不要发布到公开讨论中。
- 只导入一个测试条目:对照原始参数检查端口、SNI、路径、Flow 和 REALITY 相关字段;缺少关键字段时先停止测试。
- 避免同时接管:测试另一客户端前,先停止原客户端的代理或虚拟网络连接,减少入口冲突。
- 一次只改一项:保持同一网络、同一服务端和同一目标请求,再比较连接结果;不要同时更换 DNS、节点和路由模式。
结论:协议匹配优先于单次延迟
先确认目标组合能完整加载并稳定连接,再比较同条件下的体验。一次延迟数字不能证明某个内核普遍更快,更不能替代协议与配置兼容性检查。
常见问题:导入成功、握手失败与更新顺序
订阅导入成功,为什么仍提示不支持的配置?
客户端可能识别了分享链接的协议头,却没有完整转换其扩展参数。检查当前调用的内核、实际生成的配置,以及日志中第一个配置加载错误。遇到未知字段或不支持的传输时,先核对版本,不要靠删除报错字段让配置勉强启动。
REALITY 连接失败,是否应关闭证书验证?
不应把关闭验证当作通用修复。应先核对客户端与服务端版本、用户 ID、公钥信息、SNI、short ID、指纹与系统时间。REALITY 的认证机制不同于普通 TLS,随意套用普通 TLS 的排障开关,可能既不能修复问题,也掩盖了真正的参数错误。
客户端和内核应该先更新哪个?
先阅读当前客户端支持的内核范围与更新说明,再使用它提供的更新方式。若界面还不能生成新字段,单独替换内核也未必获得新功能。保留可回退的配置,每次更新后先用原有节点验证,再尝试新的协议组合。
VMess 换成 VLESS,只改协议名称可以吗?
不可以。服务端必须提供对应入站,认证与协议专属字段也需匹配。VLESS 本身不提供内容加密,实际部署通常还要配合合适的安全传输;不能把名称替换当作完整迁移,更不能凭空给已有订阅添加 REALITY 参数。