选择内核先看节点参数,不先看客户端名称。含有 REALITY 或 xtls-rprx-vision 的节点应使用支持对应特性的 Xray;VMess、WebSocket 与常规 TLS 则需要继续核对传输字段和配置格式。本文适合准备在 v2rayN、v2rayNG 与 v2flyNG 之间迁移配置的读者,重点区分协议、传输、安全层与客户端导入能力,并给出从启动日志到本地端口的验证顺序。
一、Xray 与 V2Fly:内核分支和客户端不是同一层
V2Ray 是代理工具及其配置生态的名称。V2Fly 社区延续维护 V2Ray 内核;Xray 则由 V2Ray 代码分支发展而来,后续形成自己的协议扩展、传输实现与配置演进路径。两者有共同来源,但不能据此推断新字段始终互通,更不能把完整 JSON 文件直接视为通用格式。
客户端负责订阅管理、节点编辑、系统代理和启动内核。内核负责解析运行配置、建立入站与出站、执行路由。客户端能显示一条节点,并不等于所带内核能够运行它;订阅导入成功与协议握手成功是两个不同检查点。
- v2rayN:桌面客户端。检查实际启动日志中的内核名称与版本,不以程序图标或订阅分组名称判断运行内核。
- v2rayNG:安卓客户端,使用 Xray 内核。REALITY 等参数仍需客户端编辑界面、订阅解析器与内核共同支持。
- v2flyNG:安卓客户端,使用 V2Fly 内核。应按其实际内核和导入格式选择节点,不把它当作 v2rayNG 的同名替代品。
二、VLESS、XTLS、REALITY 支持边界对照
VMess 与 VLESS 属于代理协议;TCP、WebSocket 属于传输方式;TLS、REALITY 属于连接安全层相关配置。XTLS Vision 则通过特定流控方式参与连接处理。这些名称不在同一层,不能简单排列成一组可任意替换的“协议选项”。
| 项目 | Xray 内核 | V2Fly 内核 | 迁移检查点 |
|---|---|---|---|
| VMess | 支持 | 支持 | 核对 UUID、加密设置、传输与 TLS 参数 |
| VLESS | 支持,常与 Vision、REALITY 配合 | 历史版本有实现,具体以所用版本与配置格式为准 | 不能从支持 VLESS 推导出支持 Xray 扩展 |
| WebSocket + TLS | 支持 | 支持 | 核对 path、Host、serverName 与证书验证 |
| XTLS Vision | 支持对应的 VLESS 流控配置 | 不支持 Xray 的 Vision 方案 | 检查 flow 是否为 xtls-rprx-vision |
| REALITY | 支持 | 不支持 Xray 的 REALITY 方案 | 检查安全层、公钥、serverName、shortId 等参数 |
| 完整运行 JSON | 按 Xray 配置规范解析 | 按对应 V2Fly 配置版本解析 | 配置结构相似不代表可直接互换 |
VLESS 本身不提供与 TLS 等价的传输加密。看到 VLESS 节点时,需要继续检查安全层,而不是仅凭协议名称判断连接保护方式。历史 VLESS 实现的存在,也不意味着 V2Fly 可以接收含有 REALITY 或 Vision 的订阅节点。
旧教程中的 security: "xtls" 与当前常见的 flow: "xtls-rprx-vision" 不是同一写法。不要通过把字符串改成 TLS 来“修复”旧配置;服务端监听方式、流控和客户端能力必须同步匹配。
三、按节点参数选择内核,而不是按速度标签选择
内核选择的第一道门槛是配置可执行,之后才是连接质量。延迟受线路、服务端负载、DNS、路由和网络环境共同影响,不能把某一内核直接等同于固定的速度增益。下面的推荐仅针对明确带有 REALITY 或 Vision 参数的节点。
Xray 内核
推荐节点含有 REALITY、xtls-rprx-vision 或其他明确要求 Xray 的配置时,选择支持这些字段的 Xray 版本,并确认客户端完整保留参数。
适合:VLESS + REALITY、Vision,以及服务端明确要求 Xray 的节点。
V2Fly 内核
已有按 V2Fly 配置规范部署的 VMess 等节点时,可延续对应内核与配置流程;迁移前单独检查传输、DNS 与路由结构。
适合:现有 V2Fly 配置维护、VMess 节点及不依赖 Xray 扩展的环境。
以常见的 VLESS + TCP + REALITY 节点为例,需要逐项检查地址、端口、UUID、流控、安全层、服务端名称、公钥与 shortId。指纹参数也应按提供方要求填写。shortId 允许的取值由服务端决定,不能从另一个节点复制,更不能假设必须填写固定长度。
- 在节点编辑界面确认协议为 VLESS,传输类型与服务端一致。
- 检查安全层为 REALITY;只有服务端要求 Vision 时,才填写
xtls-rprx-vision。 - 核对公钥与服务端名称,不能将连接地址、WebSocket Host 和 serverName 一律填成同一个值。
- 启动后查看日志,先确认配置被接受,再判断握手与应用访问是否成功。
四、配置兼容性:先分清分享链接与运行 JSON
分享链接描述节点,客户端将其转换成运行配置;完整 JSON 则可能同时包含本地监听、DNS、路由和多个出站。前者导入成功,只能证明解析器接受了链接;后者复制成功,也不代表另一内核认识其中每个字段。
下面是用于识别 Xray 安全层的配置片段,不是可独立运行的配置。它没有包含服务端地址、用户身份与 REALITY 连接参数,不应直接保存为完整配置后启动。
{
"streamSettings": {
"network": "tcp",
"security": "reality"
}
}
- 协议层:检查
protocol及对应settings;不能只替换协议名而保留原有用户结构。 - 流控层:在 Xray 常见 VLESS 出站配置中,
flow位于用户项中,不是任意添加到streamSettings的字段。 - 传输层:检查
streamSettings.network与对应传输设置。新传输名称和旧名称的兼容性需要查看实际内核版本。 - 安全层:检查
security与相关设置对象,不能将realitySettings原样交给不支持它的内核。 - 路由层:核对
outboundTag是否存在;节点可以握手,但规则指向错误出站时,应用仍可能无法访问。
五、本地端口与握手日志的验证顺序
测试时先固定本地入口,再测试远端连接。下面三个数字是排查示例:10808、10809 需要与本机实际监听配置一致;443 只是常见远端 TLS 端口,不是所有节点的固定要求,也不能据此判断服务使用哪一种协议。
- 确认启动:日志中若出现未知协议、未知传输或配置解析失败,先修正配置或匹配内核,不进入线路测速环节。
- 确认监听:检查本地地址与端口。出现
address already in use时,查找占用进程,或修改本地端口并同步修改测试命令。 - 确认握手:内核已经启动但连接失败时,再核对远端端口、UUID、flow、serverName、公钥、shortId 和系统时间。
- 确认路由:命令行经代理可访问而浏览器不行时,检查系统代理、浏览器代理设置与分流结果,不先更换内核。
桌面环境已安装 curl、且 SOCKS 入口确为 127.0.0.1:10808 时,可用下面的命令验证一次显式代理请求。--socks5-hostname 让目标域名交给 SOCKS 代理侧处理;它不是对整个系统 DNS 或所有应用代理状态的证明。
curl --socks5-hostname 127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://v2ray88.com/
收到 HTTP 响应表示这一次目标请求完成了连接流程,不代表全部站点和规则均正常。若返回的是站点自身的访问限制响应,也要与代理握手失败区分。记录错误时保留时间与报错类型,分享日志前移除订阅链接、UUID 和其他敏感连接信息。
六、桌面端与安卓端的配置分工
同一个订阅源可以提供多种协议。两端导入相同链接后,列表也可能因解析器、过滤条件、更新时刻而不同。先选一条两端都能明确识别的节点验证,不要用“列表数量一样”代替兼容性检查。
方案:按节点特性分配客户端
桌面端:v2rayN
- REALITY 或 Vision 节点使用对应的 Xray 内核。
- 从启动日志确认实际执行的内核与版本。
- 先测试本地代理入口,再启用完整分流规则。
安卓端:按协议选择
- v2rayNG 用于匹配 Xray 特性的节点。
- v2flyNG 用于匹配 V2Fly 能力的节点。
- 切换客户端时先停止另一客户端的 VPN 连接。
结论:订阅来源可以相同,运行能力仍由各端客户端、内核与节点参数共同决定。
安卓端出现 VPN 授权提示时,需要按系统提示确认。更换客户端后还要检查分应用代理范围:某个应用被排除,可能表现为该应用无法访问,而其他应用正常。这类现象不能单独证明 REALITY 参数或内核实现有问题。
七、内核切换常见问题
订阅能导入,为什么启动后提示未知安全类型?
打开失败节点的编辑界面,查看是否选择 REALITY,再核对启动日志中的内核名称。若当前运行的是 V2Fly,改用支持对应字段的 Xray 环境;若已经是 Xray,继续确认内核版本与客户端生成的配置,不要只更新订阅。
把 REALITY 改成 TLS,就能在 v2flyNG 使用吗?
不能只改客户端。两种方式的握手与服务端配置不同。需要由服务端提供实际匹配的 TLS 节点,再按新参数导入;清空公钥或修改安全层名称,不会让原来的 REALITY 入口变成普通 TLS 入口。
VMess 节点在两个内核上都能用,还需要更换吗?
若现有节点、DNS 和分流运行正常,没有仅因名称不同就更换的必要。确需迁移时,先保留原配置,单独验证传输路径、TLS 服务端名称与证书验证,再逐步加入路由规则。
日志没有报错,浏览器仍打不开,先查哪里?
先用实际本地端口执行显式代理请求。命令成功后,在 v2rayN 的系统代理菜单检查当前代理状态,并检查浏览器是否另设代理;命令失败则回到内核日志,区分本地拒绝连接、远端超时与握手失败。
最终判断顺序是:节点要求什么特性、客户端是否完整解析、实际内核是否支持、生成配置是否正确、应用流量是否进入代理。需要进一步核对字段时,可查阅配置大全;首次建立可用连接时,按快速上手逐步操作,比同时调整多项参数更容易定位问题。