2026-08-12 · 内核解析 · 约 9 分钟

Xray 内核与 V2Fly 内核差异:XTLS、REALITY 支持与配置兼容性对照

从项目渊源、协议支持、配置字段兼容性三方面对比 Xray 与 V2Fly 内核,说明 v2rayNG 与 v2flyNG 各自适合的使用场景。

本文速览

节点包含 REALITY 或 xtls-rprx-vision 时,应选择支持这些能力的 Xray 内核;只有 VMess、常规 VLESS 与 TLS 时,再按传输方式和具体字段确认兼容性。本文适合需要选择安卓客户端、切换桌面内核或排查订阅导入错误的用户,重点说明协议名称之外还要检查哪些参数,以及怎样区分配置错误与网络故障。

项目渊源与客户端分工

Xray-core 与 V2Fly 维护的 v2ray-core 具有共同的项目渊源,但已经形成不同的功能演进路线。Project V 是理解这套代理工具体系的背景;V2Fly 维护其社区延续的 v2ray-core,Xray 则沿独立路线发展。两者都属于处理代理连接、路由与 DNS 等工作的核心程序,不是客户端界面本身。

客户端负责订阅管理、节点编辑、启动内核和展示日志。内核负责读取最终配置并处理连接。因此,“界面能导入一个节点”与“内核能运行这个节点”是两件事。订阅解析器可以识别某些字段,却未必能将它们交给当前内核执行。

订阅解析 配置生成 内核加载 路由匹配 出站握手

排查时应同时记录客户端版本与正在运行的内核版本。升级界面程序不一定意味着已有内核文件同步更新;同样,替换内核也不代表客户端编辑器已经能生成所有新字段。

协议支持与 XTLS、REALITY 对照

REALITY 与 XTLS Vision 不是 VMess、VLESS 的同义词。VLESS 是代理协议;REALITY 位于传输安全配置层;Vision 是与特定连接组合配套的流控方式。订阅里同时出现 VLESS、REALITY、Vision,表示需要检查多个配置层,而不是只确认“支持 VLESS”就结束。

能力或组合Xray 内核V2Fly 内核核对重点
VMess支持支持认证方式、传输与 TLS 参数
常规 VLESS支持支持不能据此推导支持 Vision
WebSocket + TLS支持常见组合支持常见组合路径、Host、SNI 与证书
REALITY支持不支持 Xray 的 REALITY 配置服务端公钥信息、shortId、serverName
xtls-rprx-vision支持适用组合不支持该流控流控值、传输与安全层组合
完整 JSON 配置按 Xray 配置语法解析按 V2Fly 对应配置格式解析不能保证整份文件互换

这里的 XTLS 重点指当前常见的 Vision 用法。旧教程中的 xtls-rprx-direct 等历史流控值,不应直接替换为 xtls-rprx-vision 后便视作完成迁移。服务端也必须采用兼容组合;客户端单方面修改流控,可能导致握手失败。

选择结论:先检查安全层与流控

在节点编辑页发现 security=reality 或 flow=xtls-rprx-vision 时,先选择 Xray 路线,再核对传输参数;不要通过删除这些字段来迁就 V2Fly 内核。

REALITY 与 Vision 的连接作用

REALITY 让客户端在握手过程中验证服务端持有的密钥材料,并配合目标站点相关参数呈现 TLS 握手特征。它不是把全部代理流量转交给目标网站,也不是取消身份认证。服务端仍需正确设置密钥、目标与允许的名称,客户端仍需匹配相应参数。

Vision 主要处理代理隧道承载 TLS 流量时的识别与数据转发路径,在满足条件时减少重复包装和处理开销。它不意味着所有连接都跳过加密,也不能消除物理线路的拥塞、跨地区往返时间或运营网络丢包。网页打开速度是否改善,仍要结合实际业务判断。

VLESS + REALITY + Vision

代理协议
VLESS
传输方式
TCP 类传输,名称依配置版本确认
安全层
REALITY
流控
xtls-rprx-vision
认证信息
用户标识、公钥信息与 shortId 等

按服务端给出的完整参数填写,不能将 REALITY 参数当作普通 TLS 证书选项。

VMess + WebSocket + TLS

代理协议
VMess
传输方式
WebSocket
安全层
TLS
路径示例
/ws,须与服务端一致
名称参数
分别检查 WebSocket Host 与 TLS SNI

两种内核均有常见实现;路径示例不是通用默认值,实际以节点配置为准。

配置兼容性与字段迁移

两种内核的传统 JSON 配置有不少相似结构,例如 inbounds、outbounds 与 routing。但“字段看起来一样”不代表全部取值、默认行为和子字段都相同。V2Fly 的不同配置格式也有区别,迁移前要先确认当前文件采用哪一种格式。

以常见的传统 JSON 路由规则为例,下面片段表达“私有地址走 direct 出站”。它只展示路由部分,不是能够独立启动的完整配置。实际文件必须存在标签为 direct 的出站,并准备好规则所需的数据文件。

routing.json · 配置片段
{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      }
    ]
  }
}

还要区分配置成功加载与参数真正生效。未知字段有时会触发错误,有时可能被忽略。仅看到进程已启动不足以证明迁移成功,应检查日志、实际出站和目标应用的连接结果。更多字段关系可结合协议配置说明逐项核对。

端口检查与故障定位顺序

连接失败时,先把本地接入和远端握手分开。下面给出两个用于说明检查方法的端口,不代表所有客户端的默认值。应以当前入站配置和节点端口为准,不要为了照抄教程而修改正常运行的监听设置。

10808
本地 SOCKS 入站示例端口
443
远端 TLS 服务示例端口
  1. 确认应用是否进入客户端。如果本地 SOCKS 入站监听 127.0.0.1:10808,应用必须使用对应地址、端口与代理类型。系统代理开关不能保证所有应用都遵循该设置。
  2. 确认内核是否正常加载。启动即退出、日志提示字段无法解析或流控不支持时,优先查内核选择与配置格式,不要先改 DNS。
  3. 确认远端是否可达。本地入站正常但远端连接超时,应检查节点地址、实际服务端口、网络路径与服务端状态。端口可达也不等于认证成功。
  4. 确认握手参数。REALITY 重点对照公钥信息、shortId、serverName 与时间设置;常规 TLS 则检查 SNI、证书有效期与信任链。不要通过关闭证书验证掩盖错误。
  5. 确认路由和解析。只有部分域名失败时,检查域名解析结果和命中的出站。测试期间每次只改一组参数,保留可恢复的原配置。

排查结论:先启动,再握手,最后分流

先用一个已知参数完整的节点验证基础连接,再恢复自定义路由与 DNS。这样能区分内核能力不足、认证参数错误与分流规则问题,避免同时修改多处后失去故障线索。

客户端选择与订阅迁移

安卓端已有 REALITY 或 Vision 节点时,优先使用 v2rayNG。节点为常规 VMess 或 VLESS,并且服务端说明针对 V2Fly 配置时,可选择 v2flyNG。桌面端使用 v2rayN 时,应先确认节点需要的能力,再选择相应内核;界面名称不能替代兼容性检查。

迁移订阅建议使用新分组,保留旧分组作为回退。先导入一个节点并核对参数,再批量更新,最后迁移路由设置。订阅更新可能覆盖手动修改的节点字段;若导入后缺失流控或安全层,应先检查订阅格式与客户端解析能力,而不是反复手填。

同一个 VMess 节点在两个客户端中都能用,是否代表配置完全通用?

只能说明该节点当前使用的协议与传输组合能被两边处理。DNS、路由、入站监听和其他节点的安全层仍可能不同。导出整份 JSON 后,仍需逐项检查,不能把单节点连通性当成完整配置兼容的证据。

删除 flow 或把 REALITY 改成 TLS,能否继续连接原节点?

通常不能。客户端与服务端必须使用兼容的协议组合。删除参数不会让服务端自动切换模式;需要服务端明确提供另一套可用配置,或者改用支持原组合的内核。

订阅导入成功但全部连接失败,应先更换内核吗?

先查看日志并抽查一个节点。若日志指向不支持的协议、流控或安全层,再处理内核选择;若是超时、认证失败或证书错误,应分别检查网络、账号参数与名称配置。订阅管理流程可参考订阅导入教程。

客户端下载平台与安装包选择