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 或内核相关的项目;各版本的子页名称可能变化。不要仅把一个可执行文件改名为另一个内核的文件名,这不会转换配置格式,也不会补齐协议能力。
- 客户端无法打开:先查运行环境、目录权限和程序日志,问题可能尚未进入内核层。
- 内核启动后退出:查配置解析、字段支持和监听端口占用。
- 内核运行但节点超时:再查远端地址、端口、传输层、TLS 与认证参数。
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 只是一种编码方式,不会自动让不同客户端的配置互相兼容。
- 在 v2rayN 的「订阅分组」→「订阅分组设置」中检查订阅地址;在 v2rayNG 中从侧边菜单进入「订阅分组设置」。不同版本的文字可能略有差异。
- 更新后打开一个节点的编辑窗口,逐项检查地址、端口、用户标识、传输类型及 TLS 参数,不要只确认节点名称出现。
- 遇到“无法解析”,先确认返回的是订阅内容,而不是登录页、到期提示或网页错误信息。订阅链接含有访问凭据,不应公开粘贴到论坛。
- 从完整 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 填进浏览器的本地代理端口栏。
- 本地路径:应用 →
127.0.0.1:10808的 SOCKS 监听 → 内核。若客户端使用混合入站,HTTP 与 SOCKS 可能共用端口,应以当前设置为准。 - 远端路径:内核 → 节点地址与远端端口 → 目标网站。更改本地监听端口不会改变服务端监听端口。
- 安卓路径:应用流量 → 系统 VPN 服务 → 客户端内核。看到 VPN 图标只说明本地接管已建立,不能单凭图标判断节点可达。
- TUN 排错:查虚拟接口、权限、DNS 与路由接管,再查节点握手。不要把 TUN 开关臆写成所有内核通用的 JSON 字段。
客户端选型与切换:常见问题
选型顺序应当是平台、节点参数、内核支持,最后才是界面偏好。桌面优先核对 v2rayN 当前发行版的内核支持;安卓根据节点要求在 v2rayNG 与 v2flyNG 之间选择。迁移前备份订阅分组和自定义规则,测试时一次只改一项。
装了 v2rayN,还要另装一个 V2Ray 界面吗?
通常不需要。先启动已安装的 v2rayN,选择节点后查看日志中实际启动的内核名称与版本。如果提示内核文件缺失,按当前发行版说明补齐对应组件;不要重复安装多个界面来解决同一个缺失文件问题。
v2rayNG 和 v2flyNG 只是名称不同吗?
不是。两者分别围绕 Xray 与 V2Fly 内核运行,支持能力会随版本变化。拿到 REALITY 节点时先核对 Xray 支持;已有 V2Fly 配置则先在对应内核上验证,不要仅按应用图标或名称相似程度选择。
同一条订阅在桌面能用,安卓为什么超时?
先比较两个端的节点编辑详情,特别是传输类型、服务器名称和安全层参数;再查看各自日志的内核版本。若参数一致,继续检查安卓的 VPN 权限、分应用设置、设备时间与当前网络,不要直接认定订阅失效。
切换内核后,需要把所有规则重新写一遍吗?
先区分客户端管理的规则与手写 JSON。前者可能由客户端重新生成,仍要检查实际运行结果;后者必须按目标内核文档逐项验证。先测试一个节点和一条明确的路由,再恢复复杂分流,能减少同时出现多个错误的情况。
最终应保留三项记录:客户端版本、日志显示的内核版本、脱敏后的节点参数。反馈问题时附上这三项和相关错误行,比只写“V2Ray 连不上”更有助于判断故障位于界面、配置、协议还是网络层。