Project V 生态图解:V2Fly、Xray 内核与 v2rayN、v2rayNG 的关系

本文梳理 Project V 从单一项目到 V2Fly、Xray 两个内核分支的演变,并说明各图形客户端分别调用哪个内核、彼此如何分工。

本文速览

Project V 是项目体系,V2Fly 与 Xray 是不同的维护路线,v2rayN、v2rayNG、v2flyNG 则是操作配置的客户端。本文适合正在选客户端、辨认节点要求或准备切换内核的用户:先分清界面、内核和协议,再按服务端参数核对兼容性。

Project V、V2Fly 与 Xray:先分清项目层级

结论是:这些名称不是同一款软件的不同皮肤。Project V 最初围绕 V2Ray 构建网络代理工具体系;日常交流中的“V2Ray”既可能指项目,也可能特指负责处理连接的内核。安装和排错时,必须把这两种含义分开。

2020 年前后,原项目的社区维护逐渐由 V2Fly 承接。V2Fly 延续 V2Ray 内核的开发;Xray 则在 2020 年从 V2Ray 代码基础上分出,沿独立路线演进。两者有共同来源,但发布节奏、功能和配置支持并不完全相同,不能把其中一个的文档当成另一个的当前规范。

Project V / V2Ray 项目体系
└─ V2Ray 代码基础
   ├─ V2Fly:延续维护 V2Ray 内核
   └─ Xray:2020 年分出的独立内核路线

图形操作层
├─ v2rayN:桌面端,按版本与节点类型调用受支持内核
├─ v2rayNG:安卓端,主要使用 Xray 内核
└─ v2flyNG:安卓端,使用 V2Fly 的 V2Ray 内核

上图表达代码沿革和职责,不表示三个客户端受同一个项目统一发布。客户端版本与内核版本也是两套编号。更新界面程序,不一定意味着当前运行的内核已经同步更新;应在启动日志中确认实际版本,而不是只看窗口标题。

客户端与内核:界面设置如何变成网络连接

图形客户端负责订阅、节点列表、参数编辑、系统代理和进程管理;内核负责本地监听、协议握手、DNS 与路由执行。点击“连接”后,客户端通常先生成运行配置,再启动或调用内核。安卓端还会通过系统 VPN 服务接入设备流量,这与远端节点采用什么协议是两件事。

名称主要职责核对位置
v2rayN桌面节点管理、订阅、系统代理与内核调度;支持范围随版本变化「设置」→「参数设置」及启动日志
v2rayNG安卓节点管理,主要调用 Xray,借助系统 VPN 服务接管流量侧边菜单「设置」「日志」
v2flyNG安卓节点管理,调用 V2Fly 内核应用设置与内核启动日志
V2Fly / Xray解析配置、建立连接、执行 DNS 与路由规则实际运行配置与内核日志

v2rayN 属于多内核客户端,具体可选项应以当前发行版为准。需要切换时,先查看「设置」→「参数设置」中与 Core 或内核相关的项目;各版本的子页名称可能变化。不要仅把一个可执行文件改名为另一个内核的文件名,这不会转换配置格式,也不会补齐协议能力。

VMess、VLESS 与 REALITY:协议支持不等于整套参数兼容

VMess、VLESS 是代理协议名称,不是客户端名称。WebSocket、gRPC 等属于传输方式;TLS 与 REALITY 涉及连接的安全层配置。一个节点是否能使用,取决于协议、传输、安全层及具体版本的组合,而不只是“列表里有 VLESS”这一项。

尤其要区分 VLESS 和 REALITY。VLESS 本身不负责加密,实际部署需要配合适当的安全传输。遇到 VLESS + REALITY 节点,应使用明确支持该组合的内核,并完整保留 serverName、publicKey、shortId 及服务端要求的 flow 等参数。不能把它当成普通 VLESS + TLS 直接导入后补一个开关。

Xray 内核

推荐

当服务端明确提供 VLESS + REALITY 或要求 Xray 特定功能时,优先选择匹配版本的 Xray。推荐依据是节点参数兼容性,不是对所有网络环境的速度承诺。

适合:服务端明确要求 Xray、需要 REALITY 配置的节点

V2Fly 的 V2Ray 内核

适合已经按 V2Fly 文档部署和验证的配置。已有 VMess 等节点应先核对传输方式及版本支持,不需要仅因内核名称不同就更换服务端。

适合:已有 V2Fly 部署、需要保持配置与文档一致的环境

结论:先取完整参数,再决定内核

向服务提供方确认协议、传输方式、安全层和最低内核要求。四项信息齐全后再导入客户端,比反复切换内核并猜测缺失字段更容易定位问题。

订阅、JSON 与路由:哪些内容能迁移

订阅是批量获取节点信息的入口,不是另一种代理协议。订阅内容可能是分享链接集合,也可能是某种完整配置。客户端能否识别,取决于内容格式及其解析器。Base64 只是一种编码方式,不会自动让不同客户端的配置互相兼容。

  1. 在 v2rayN 的「订阅分组」→「订阅分组设置」中检查订阅地址;在 v2rayNG 中从侧边菜单进入「订阅分组设置」。不同版本的文字可能略有差异。
  2. 更新后打开一个节点的编辑窗口,逐项检查地址、端口、用户标识、传输类型及 TLS 参数,不要只确认节点名称出现。
  3. 遇到“无法解析”,先确认返回的是订阅内容,而不是登录页、到期提示或网页错误信息。订阅链接含有访问凭据,不应公开粘贴到论坛。
  4. 从完整 JSON 迁移时,先确认目标内核与配置模式。订阅解析成功不代表自定义 DNS、路由和本地入站设置也会一并迁移。

在常见的 V2Ray / Xray JSON 配置中,inbounds 定义本地入口,outbounds 定义连接出口,routing.rules 决定流量匹配后走哪个出口。下面仅展示路由片段,含义是把来自 local-socks 的流量交给 proxy 出站;它不是一份可以独立启动的完整配置。

{
  "routing": {
    "rules": [
      {
        "type": "field",
        "inboundTag": ["local-socks"],
        "outboundTag": "proxy"
      }
    ]
  }
}

配套配置必须存在 tag 为 local-socks 的入站,以及 tag 为 proxy 的出站。标签拼写不同,路由意图就无法正确实现。完整字段与路由规则可继续查阅路由分流配置参考;若切换到不同配置体系的内核,不要直接复制这段 JSON。

系统代理、TUN 与端口:连接路径如何核对

桌面上的系统代理,是让遵循系统代理设置的应用把流量交给本地监听端口;TUN 则通过虚拟网络接口接入流量,需要客户端和对应内核共同支持。两者既不等于 VMess 或 VLESS,也不是订阅导入后一定自动启用的功能。

以下三个端口仅用于说明一条连接路径,不是对所有版本默认值的承诺。先在实际设置中读取本地监听端口,再对照应用代理和远端节点端口;不要把远端的 443 填进浏览器的本地代理端口栏。

10808
示例:本地 SOCKS 入站端口
10809
示例:独立 HTTP 入站端口
443
示例:远端 TLS 服务端口

客户端选型与切换:常见问题

选型顺序应当是平台、节点参数、内核支持,最后才是界面偏好。桌面优先核对 v2rayN 当前发行版的内核支持;安卓根据节点要求在 v2rayNG 与 v2flyNG 之间选择。迁移前备份订阅分组和自定义规则,测试时一次只改一项。

装了 v2rayN,还要另装一个 V2Ray 界面吗?

通常不需要。先启动已安装的 v2rayN,选择节点后查看日志中实际启动的内核名称与版本。如果提示内核文件缺失,按当前发行版说明补齐对应组件;不要重复安装多个界面来解决同一个缺失文件问题。

v2rayNG 和 v2flyNG 只是名称不同吗?

不是。两者分别围绕 Xray 与 V2Fly 内核运行,支持能力会随版本变化。拿到 REALITY 节点时先核对 Xray 支持;已有 V2Fly 配置则先在对应内核上验证,不要仅按应用图标或名称相似程度选择。

同一条订阅在桌面能用,安卓为什么超时?

先比较两个端的节点编辑详情,特别是传输类型、服务器名称和安全层参数;再查看各自日志的内核版本。若参数一致,继续检查安卓的 VPN 权限、分应用设置、设备时间与当前网络,不要直接认定订阅失效。

切换内核后,需要把所有规则重新写一遍吗?

先区分客户端管理的规则与手写 JSON。前者可能由客户端重新生成,仍要检查实际运行结果;后者必须按目标内核文档逐项验证。先测试一个节点和一条明确的路由,再恢复复杂分流,能减少同时出现多个错误的情况。

最终应保留三项记录:客户端版本、日志显示的内核版本、脱敏后的节点参数。反馈问题时附上这三项和相关错误行,比只写“V2Ray 连不上”更有助于判断故障位于界面、配置、协议还是网络层。

客户端平台下载