Project V 是理解这套工具的起点,V2Fly 与 Xray 对应不同的内核发展路线,v2rayN、v2rayNG、v2flyNG 则负责面向用户的配置与连接管理。本文按项目、内核、客户端、协议四层拆开说明,并给出桌面和 Android 的选择方法。适合已经拿到订阅,却不确定该装哪个客户端、该用哪种内核的用户。
Project V、V2Fly 与 Xray:先分清项目关系
Project V 围绕网络通信工具与模块化代理能力展开,V2Ray 是其中的核心项目。日常交流中的“V2Ray”有时指内核程序,有时泛指整套工具生态。排查问题时需要缩小范围:运行的是哪个客户端,客户端调用了哪个内核,内核实际使用了哪份配置。
V2Fly 是继续维护和发展 V2Ray 的社区,通常所说的 V2Fly 内核就是其维护的 v2ray-core。Xray-core 则从 v2ray-core 分支发展而来,此后形成独立的功能演进路线。两者共享一部分历史和配置概念,但不能据此认定新功能、字段或默认行为始终一致。
- Project V:项目背景与技术体系,不是需要额外安装的一款桌面客户端。
- V2Fly:社区及其维护路线;讨论连接能力时,应进一步指明 v2ray-core。
- Xray:独立发展的内核项目,REALITY 与 XTLS Vision 等能力需要按其实际支持情况配置。
- v2rayN 等客户端:把服务器信息、订阅分组和路由设置转换成内核可执行的配置。
客户端与内核:界面设置如何变成实际连接
客户端主要负责交互和管理:保存订阅地址、展示服务器列表、设置系统代理、生成配置、启动和停止内核。内核负责监听本地入口、匹配路由、执行协议握手并转发数据。界面可以正常打开,而内核仍可能因为端口冲突或配置错误启动失败。
| 客户端 | 主要平台 | 内核关系 | 选择重点 |
|---|---|---|---|
| v2rayN | Windows、macOS、Linux | 桌面多内核管理,包含 Xray 等支持路线;具体选项随发行版变化 | 核对安装包平台、架构及当前配置调用的内核 |
| v2rayNG | Android | 使用 Xray 内核,Android 侧负责界面与流量接管 | 核对节点参数、应用代理范围及 VPN 授权 |
| v2flyNG | Android | 使用 V2Fly 的 v2ray-core 路线 | 核对节点所需功能是否由该内核实现 |
v2rayN 的跨平台桌面界面与 Windows WPF 界面是另一层区别。界面技术决定窗口、托盘与平台集成方式,不直接决定远端握手使用 VMess 还是 VLESS。切换界面版本,也不能替代对内核及节点参数的检查。
Android 上的流量接管同样不只由协议内核完成。v2rayNG 与 v2flyNG 通常利用系统 VPN 接口接入应用流量,再交给内核处理。系统显示 VPN 已连接,只说明接管通道已建立,不能单独证明远端节点握手成功。
判断方法:先记录客户端,再记录内核
提交问题前,同时记录客户端名称、客户端版本、运行日志中的内核版本与节点协议。只写“V2Ray 连不上”,无法区分界面、接管、配置和远端服务四类问题。
VMess、VLESS、TLS 与 REALITY:不能混成一个名称
一条连接配置至少涉及代理协议、传输方式和安全设置。VMess 与 VLESS 是代理协议名称;WebSocket 是传输方式;TLS 与 REALITY 属于连接安全配置层面的选项。它们不是可以互相替换的同类开关,也不是名称越长性能就越好。
- VMess:V2Fly 与 Xray 都有相关实现。是否连通仍取决于用户标识、传输、安全设置及服务端配置是否匹配。
- VLESS:协议本身不提供载荷加密,需要结合适当的安全层使用。不能把 VLESS 简写成“自动加密的 VMess”。
- REALITY:不能作为通用 TLS 选项照搬到所有内核。拿到 VLESS + REALITY 参数时,应选择明确支持该组合的实现。
- Vision:属于 XTLS 相关流控能力,不是独立订阅格式;服务端和客户端的流控设置需要一致。
例如,订阅提供的是 VLESS + REALITY,实际需要核对服务器地址、端口、用户标识、服务器名称、公钥、短 ID 和流控等字段。字段是否必填以及具体名称,以该配置及内核文档为准。不能仅把协议下拉框改为 VLESS,就期待其余参数自动补齐。
按节点要求选择 v2rayN、v2rayNG 或 v2flyNG
选型先看操作系统,再看节点要求。桌面用户可以用 v2rayN 统一管理订阅分组与路由;Android 用户则需要在 v2rayNG 和 v2flyNG 之间核对内核能力。下面的推荐针对需要 Xray 特性的 Android 配置,不是对所有使用场景的性能排名。
v2rayNG
推荐Android 端采用 Xray 内核。节点明确要求 REALITY 或 Vision 时,应优先核对这条路线的支持情况与实际内核版本。
适合:Android,节点明确依赖 Xray 特性。
v2flyNG
Android 端采用 V2Fly 内核。已有配置围绕 V2Fly 的功能与行为维护时,可沿用这条路线,但仍需核对具体传输与安全选项。
适合:Android,已有可验证的 V2Fly 配置。
v2rayN
桌面端管理订阅、系统代理和路由分流。选择与 Windows、macOS 或 Linux 及处理器架构相符的安装包,再检查运行时调用的内核。
适合:桌面环境,需要集中维护订阅与路由。
不能仅凭客户端名称推断速度。网络路径、服务端负载、传输设置和本地接管方式都会影响结果。对比时保持同一个服务器、同一网络与同一测试目标,一次只改一个变量;否则即使结果不同,也无法归因到内核。
v2rayN 核对步骤:从设置入口查到运行日志
以下流程用于确认“当前配置究竟交给哪个内核执行”。不同发行版的选项可能移动;若界面没有对应项目,应先确认客户端版本和界面类型,不要用其他版本的截图猜测设置位置。自定义配置也可能绕过普通服务器配置的默认选择。
-
记录版本
在「帮助」→「关于」记录客户端版本,并记录所用平台和界面类型。内核版本另从启动日志核对,不把客户端版本当成内核版本。
-
核对内核
进入「设置」→「参数设置」,检查「Core 类型」相关选项;如按协议分配内核,核对当前节点协议对应的项目。名称或位置不同的版本,以实际设置页为准。
-
检查节点
打开当前服务器的编辑窗口,核对协议、地址、远端端口、传输与 TLS 或 REALITY 参数。保留订阅原始设置,不为消除报错随意修改用户标识或安全参数。
-
查看日志
重新启动当前配置,查看主界面日志中的内核启动信息及错误。先确认配置已被接受、监听已建立,再判断远端连接是否成功。
一次内核切换成功,不代表订阅中的所有节点都适用。不同节点可能使用不同协议或传输。应按节点的实际要求核对,而不是为整个订阅分组套用“同一家提供的就完全一样”的假设。
本地端口、系统代理与路由分流的边界
为了把入口和出口分开理解,可以用两个明确的本地端口作示例。下列数字是讲解用的手动配置值,不是对任何发行版默认端口的声明。只有实际设置了相应监听,应用才能使用这些地址。
例如将 SOCKS 入口设为 127.0.0.1:10808、HTTP 入口设为 127.0.0.1:10809 后,应用还要使用正确的代理类型。把 HTTP 代理请求发到仅支持 SOCKS 的入口,会在本地协议阶段出错,尚未涉及远端服务器。部分版本使用混合入口,此时应按实际监听类型填写。
- 系统代理:把代理地址告知读取系统设置的应用,不保证所有程序都会采用。
- TUN:通过虚拟网络接口接入流量,仍受路由、DNS 和排除规则影响,不等于所有连接都转发到代理服务器。
- 内核路由:对已进入内核的流量决定直连、代理或阻断;未进入内核的流量不会由这份规则处理。
- 远端端口:是服务器的监听端口,与本地示例的 10808、10809 无需相同。
排查顺序:先确认流量进入,再检查出口
应用访问失败时,先看日志是否出现对应连接。没有记录就检查应用代理设置与接管方式;已有记录再检查路由目标、DNS 和握手错误,避免反复更换无关的订阅地址。
开源许可:客户端与内核分别核对
网络协议和开源许可是两件事。VMess、VLESS 描述通信方式;MIT、MPL-2.0、GPL-3.0 描述代码使用与分发条件。能够互相通信,不代表两个项目采用相同许可;客户端调用某个内核,也不意味着所有附带组件都只适用一个许可证。
| 项目 | 主要许可标识 | 核对范围 |
|---|---|---|
| V2Fly v2ray-core | MIT | 内核自身及依赖附带的许可声明 |
| Xray-core | MPL-2.0 | 受许可覆盖的文件及修改、分发条件 |
| v2rayN | GPL-3.0 | 客户端代码、分发包与附带组件 |
| v2rayNG | GPL-3.0 | Android 客户端及集成内核的独立声明 |
| v2flyNG | GPL-3.0 | Android 客户端及其依赖许可 |
上表用于识别项目的主要许可,不替代具体发行包的 LICENSE、NOTICE 和依赖清单。普通用户安装使用时,重点是下载与平台、架构和节点需求相符的客户端;准备修改或重新分发时,则应逐项阅读实际代码版本的许可条件,不能只看界面的项目名称。
最终可以把选择过程压缩成三步:先确定平台,再确定节点要求的协议与安全组合,最后核对客户端实际运行的内核。订阅负责提供资料,客户端负责管理,内核负责执行,路由负责选择出口;把这几层分开,版本升级和连接排障都会更有依据。