· 进阶知识 · 约 10 分钟

Xray 内核与 V2Fly 内核有什么不同:协议支持与配置写法对照

从 Project V 分支历史讲起,对比 Xray 与 V2Fly 在 VLESS、XTLS、REALITY 支持和配置字段上的差异,帮助判断 v2rayNG 与 v2flyNG 该选哪款。

本文速览

选内核先看服务端要求,不先比较名称。需要 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 外形,但不能据此认为每个配置字段都能互换。

订阅配置 客户端解析 内核加载 路由匹配 服务端连接

这条链路也解释了“订阅能导入,却不能连接”的原因:导入成功只说明客户端读懂了部分数据,不能证明内核支持所有功能,更不能证明服务端地址、认证信息与传输参数相互匹配。

协议支持对照: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"
      }
    }
  }
}

迁移时最稳妥的做法是重新导入服务方提供的完整订阅,再核对生成结果。手动搬运整份 JSON 只适合明确了解来源版本、目标版本和配置格式的情况;即便能通过语法检查,也仍需验证字段是否被真正采用。

端口与路由:不要把本地入口当作远端能力

内核负责路由,但连接要先进入内核。系统代理只影响遵循该设置的应用;TUN 通过虚拟网络接口接管相应流量,通常需要额外权限。两者都不等于“已经选好代理出站”,进入内核后的请求还要按路由规则分配。

443
常见远端 TLS 端口,非固定要求
10808
本地代理端口示例,以设置为准
127.0.0.1
本机回环地址,不是远端服务器

这些数字是地址和端口示例,不是性能测试结果,也不是所有客户端的统一默认值。假设应用填写 127.0.0.1:10808,就应确认客户端确实在本机该端口监听,并且入口协议与应用要求一致。HTTP 代理和 SOCKS 入口不能仅凭端口号判断。

  1. 在 v2rayN 的「设置」→「参数设置」中核对本地监听与相关选项;不同版本的分组名称可能不同,应以当前界面为准。
  2. 确认系统代理或应用代理指向实际监听地址,避免仍指向旧客户端的端口。
  3. 检查当前路由模式与命中的规则。geosite:cn 是域名分类引用,geoip:cn 是 IP 分类引用,二者依赖对应数据文件。
  4. 迁移到另一内核后,核对规则文件位置、标签名称和出站标签是否仍对应,不能只复制路由条目。

“直连网站正常、代理网站失败”往往说明请求已进入某条规则,但代理出站仍有问题;“所有应用都不受切换影响”则更值得先检查入口与接管方式。应按链路定位,不要直接归因于内核速度。

安卓怎么选:按订阅要求做一次小范围验证

如果现有节点明确要求 Xray REALITY 或 Vision,选择支持相应功能的 v2rayNG 更直接。如果现有服务提供的是与 V2Fly 配套验证过的配置,v2flyNG 也可以继续使用。没有这些专有需求时,应优先考虑配置能否完整导入、日志是否便于检查,以及现有路由能否保留。

  1. 记录环境:记下客户端版本、内核版本、协议、传输、安全层和是否开启 TUN。不要只记录一个“最新版”。
  2. 保留旧配置:迁移前备份订阅分组与自定义路由,敏感订阅地址不要发布到公开讨论中。
  3. 只导入一个测试条目:对照原始参数检查端口、SNI、路径、Flow 和 REALITY 相关字段;缺少关键字段时先停止测试。
  4. 避免同时接管:测试另一客户端前,先停止原客户端的代理或虚拟网络连接,减少入口冲突。
  5. 一次只改一项:保持同一网络、同一服务端和同一目标请求,再比较连接结果;不要同时更换 DNS、节点和路由模式。

结论:协议匹配优先于单次延迟

先确认目标组合能完整加载并稳定连接,再比较同条件下的体验。一次延迟数字不能证明某个内核普遍更快,更不能替代协议与配置兼容性检查。

常见问题:导入成功、握手失败与更新顺序

订阅导入成功,为什么仍提示不支持的配置?

客户端可能识别了分享链接的协议头,却没有完整转换其扩展参数。检查当前调用的内核、实际生成的配置,以及日志中第一个配置加载错误。遇到未知字段或不支持的传输时,先核对版本,不要靠删除报错字段让配置勉强启动。

REALITY 连接失败,是否应关闭证书验证?

不应把关闭验证当作通用修复。应先核对客户端与服务端版本、用户 ID、公钥信息、SNI、short ID、指纹与系统时间。REALITY 的认证机制不同于普通 TLS,随意套用普通 TLS 的排障开关,可能既不能修复问题,也掩盖了真正的参数错误。

客户端和内核应该先更新哪个?

先阅读当前客户端支持的内核范围与更新说明,再使用它提供的更新方式。若界面还不能生成新字段,单独替换内核也未必获得新功能。保留可回退的配置,每次更新后先用原有节点验证,再尝试新的协议组合。

VMess 换成 VLESS,只改协议名称可以吗?

不可以。服务端必须提供对应入站,认证与协议专属字段也需匹配。VLESS 本身不提供内容加密,实际部署通常还要配合合适的安全传输;不能把名称替换当作完整迁移,更不能凭空给已有订阅添加 REALITY 参数。

下载v2rayN按平台选择客户端