协议与内核技术参考

V2Ray 协议手册与客户端选型

理解 VMess、VLESS、Trojan、Shadowsocks 与 REALITY 的层次差异,再根据内核、设备和订阅能力选择客户端中的协议类型。

VMess VLESS Trojan Shadowsocks REALITY Xray V2Fly

本页用于系统查阅,重点解释协议为什么这样设计、各层如何组合以及选型时需要承担什么取舍。需要先完成安装、导入订阅和连接测试时,可先阅读快速上手教程;需要选择安装包时,可前往下载中心。完成基本连接后,再回到本手册核对协议、传输与内核会更清楚。

建立判断框架

先分清代理协议、传输方式与安全层

客户端里的一个节点,其实是多层组合

在 v2rayN、v2rayNG 或 v2flyNG 中看到一个节点时,界面往往把协议、地址、端口、传输方式和安全设置放在同一张编辑表单里。它们共同决定一条连接,但承担的任务并不相同。VMess、VLESS、Trojan 和 Shadowsocks 主要描述客户端如何认证、如何封装应用流量以及服务端怎样识别连接;TCP、WebSocket、gRPC 等传输项决定这些数据以什么承载形式送出;TLS 与 REALITY 则位于安全和握手相关的层次。把这些名称全部当作互相替代的“协议型号”,容易产生错误比较。例如,VLESS 可以与 TCP、gRPC 等传输组合,也可以配合不同安全设置;REALITY 通常不是单独填写地址就能工作的代理协议,而是与 VLESS 等入站、出站结构共同使用的安全层方案。

判断配置时可以从外向内阅读。先看服务器地址与端口,它们回答“连接去哪里”;再看传输方式,它回答“数据怎样抵达”;随后看安全层和握手参数,它们回答“连接怎样建立受保护的会话”;最后看用户标识、密码或加密方法,它们回答“服务端怎样识别和处理这名用户的数据”。客户端导入订阅后通常会替用户填好这些字段,因此日常使用不必逐项修改,但理解层次可以帮助识别导入不完整、协议类型选错或参数互相不匹配的问题。

名称相同,不代表组合完全相同

两个都标为 VLESS 的节点,实际表现可能明显不同。一个可能使用普通 TCP 与 TLS,另一个可能使用 gRPC 与 REALITY;它们的握手次数、连接复用方式、证书要求和可用内核都不一样。相反,VMess 与 VLESS 虽然认证结构不同,却可能使用相同的底层 TCP 或 WebSocket 传输,因此网络路径上的一部分行为会很接近。比较速度时只看协议名称,常常把线路质量、服务器负载、传输封装和安全层差异误算到协议本身。

协议选择也不是把所有开关都打开。每增加一层封装,通常都会带来额外头部、缓冲区和状态管理;每减少一层,又可能失去当前部署需要的握手能力或兼容性。正确做法是由服务端配置决定可用组合,再在这些组合中选择客户端内核能够完整解析、设备负担合适的一项。客户端中的协议字段必须与服务端一致,不能把一个 VMess 节点直接改名为 VLESS,也不能只打开 REALITY 选项而保留原有 TLS 参数。

延迟、带宽与稳定性是三个不同指标

客户端里的延迟测试通常只反映建立某类探测连接所需的时间,不等于持续下载速度。带宽取决于服务器出口、网络路径、拥塞控制和终端性能;稳定性则要观察一段时间内是否丢包、重连或出现速度大幅波动。某种协议在一次延迟测试中少了几毫秒,并不能直接证明它在长连接、视频传输或大量并发请求中更合适。进行选型时应先保证配置正确,再在同一设备、同一网络时段和同一路径下比较,避免把环境变化当成协议差异。

本手册后续使用“代理协议”“传输方式”“安全层”“内核”四个词分别描述不同职责。只要保持这套分层,客户端里看似密集的选项就会变成一条可追踪的连接链。遇到新名称时,也可以先问它位于哪一层、替代了什么、依赖什么,而不是先问它是否比另一个名称更快。

协议背景与边界

VMess、VLESS、Trojan、Shadowsocks 与 REALITY 的设计取舍

VMess:完整认证结构与成熟兼容范围

VMess 是 Project V 生态中较早形成完整客户端与服务端配合方式的协议。它以用户标识和时间相关信息参与认证,并对数据进行协议层封装。它的优点是历史配置资料多、V2Fly 与 Xray 家族均有广泛支持,很多旧订阅和既有部署仍以 VMess 为主。对于需要维持既有服务端、多个旧客户端同时接入的环境,VMess 的兼容价值通常高于追求最少封装的价值。

这套完整结构也意味着客户端需要处理更多协议逻辑。系统时间偏差过大时,认证可能失败;使用 WebSocket 等传输时,还要同时保证路径、Host 与安全层参数一致。VMess 并不是“打开即可自动适配”的通用格式,订阅中缺失传输字段时仍会连接失败。新建部署若没有旧客户端兼容需求,通常会同时评估结构更简化的 VLESS,但这不表示现有 VMess 节点必须迁移。稳定运行的配置是否需要调整,应由实际负载、维护成本和客户端覆盖决定。

VLESS:认证与加密职责分离

VLESS 将用户认证与传输安全职责分开处理,协议本身不再重复承担一套内容加密逻辑,而是把安全能力交给 TLS、REALITY 等外层。这样的设计让转发链更清楚,也便于 Xray 生态组合不同流控和安全方案。VLESS 常使用 UUID 类标识用户,但仅有标识并不足以构成完整节点;传输、安全层、服务器名称以及可选流控必须与服务端逐项对应。

职责分离的收益是减少不必要的重复处理,并让不同层可以独立演进。代价则是配置组合更依赖准确性。客户端界面可能允许选择 VLESS,却不代表当前内核支持订阅中携带的所有扩展字段。尤其当节点包含 REALITY、公钥、短标识或特定流控时,应优先使用能够完整识别这些字段的 Xray 系内核。手动删掉看不懂的参数,通常不会得到“兼容模式”,反而会破坏握手。

Trojan:以密码认证为核心的简洁结构

Trojan 使用密码进行用户认证,并通常与 TLS 配合。它的参数模型相对直观:服务器、端口、密码、服务器名称和证书相关设置构成主要部分。对需要清晰 TLS 部署、希望在多个支持 Trojan 的客户端之间迁移的人来说,这种结构便于理解。它仍然依赖服务端证书、域名和时间环境正常;证书名称不匹配、SNI 填写错误或系统时间异常,都可能在代理认证之前就让 TLS 握手终止。

Trojan 与 VLESS 并非简单的快慢关系。两者可以经过相近的网络路径,也可能都使用 TLS。真正差异更多来自认证结构、可组合扩展、服务端实现和客户端内核。若订阅提供方已经给出稳定的 Trojan 节点,客户端能完整导入,通常没有必要只因名称变化而转换协议。协议不能由客户端单方面转换,所谓“改成另一种类型”必须有相应服务端配置。

Shadowsocks:轻量的数据加密代理

Shadowsocks 常缩写为 SS,以服务器地址、端口、密码和加密方法构成主要参数。它的结构较轻,客户端与服务端实现广泛,适合配置链较短、设备资源有限或需要传统兼容性的场景。它的关键不是只记住“轻量”,而是确认双方支持完全相同的加密方法。旧方法与现代 AEAD 方法在兼容性和实现要求上不同,客户端下拉列表里存在某项,也不代表服务端使用同一项。

Shadowsocks 的分享链接通常能容纳核心参数,但插件或额外传输信息可能采用不同扩展写法。订阅转换过程中若只保留地址、端口和密码,附加参数就可能丢失。因此导入后应核对加密方法与插件字段,而不是看到节点名称出现就认为配置完整。它与 VMess、VLESS 一样,性能仍受网络路径和服务端实现支配,协议结构轻不等于任何环境都拥有更高吞吐。

REALITY:安全握手方案,不是孤立节点类型

REALITY 主要由 Xray 生态使用,处理的是安全握手与身份验证相关问题。实际配置常见 VLESS 与 REALITY 组合,因此客户端列表可能把 REALITY 突出显示,但底层代理协议仍需单独确认。典型参数包括服务器名称、公钥、短标识和可选指纹等,它们是服务端生成并下发的配套信息。公钥或短标识少一个字符、服务器名称选择不一致,都可能导致握手直接失败。

REALITY 的价值在于特定握手与部署模型,而不是替代所有 TLS 使用方式。它需要兼容的 Xray 内核和准确订阅字段;V2Fly 系内核不会因为节点名称中出现 REALITY 就自动获得相同能力。选它之前先看客户端实际使用的内核,再看订阅是否完整提供参数。想进一步理解握手开销与 XTLS Vision 的转发路径,可阅读REALITY 与 XTLS Vision 技术说明

性能判断

连接速度、吞吐与转发路径怎样比较

握手开销影响首次连接,不完全决定持续速度

打开一个新网页时,终端可能先完成域名解析、到服务器的 TCP 或其他传输连接、安全握手、代理认证,随后才开始发送目标请求。协议和安全层主要影响这条链的部分步骤。VMess 需要处理自身认证与封装;VLESS 的协议结构更简化,但若外层使用 TLS 或 REALITY,仍需完成对应握手;Trojan 通常依赖 TLS;Shadowsocks 则按所选加密方法建立数据处理状态。首次连接的差异常以毫秒计,网络往返距离较大时,路径延迟往往比本地协议处理更显著。

持续传输阶段更关注每个数据块经过多少次复制、加密、封装与缓冲。内核实现、操作系统网络栈和传输组合都会参与。某些流控方案尝试减少特定条件下的重复加密或数据复制,但只有客户端、服务端和外层条件全部匹配时才会生效。仅在客户端勾选一个流控名称,而服务端未配置相同能力,结果通常是连接失败,并不会自动回退成普通连接。

传输方式常比代理协议名称更能改变表现

普通 TCP 的封装链较短,适合追求直接转发的配置。WebSocket 增加帧与路径等字段,优势在于能与相应的 Web 服务部署结构配合,但额外封装和中间层会影响吞吐与延迟。gRPC 基于 HTTP/2,具有流与连接管理能力,在适合的服务端部署中便于组织长连接,但也需要正确的服务名和 HTTP/2 支持。比较节点时,如果一个使用 TCP、另一个使用 WebSocket,即使两者都写着 VLESS,测试结果也不能归因于 VLESS 本身。

连接复用也需要谨慎理解。复用可以让多个逻辑请求共享较少的底层连接,减少频繁握手;当底层连接发生拥塞或丢包时,多个请求也可能一起受到影响。浏览器和现代应用本身已经使用连接池或 HTTP/2,再叠加代理层复用不一定持续获益。建议以默认配置开始,在确实存在大量短连接且握手成本明显时再测试复用,并分别观察网页首开、持续下载和多任务并发,而不是只看一次延迟数字。

比较维度 主要影响因素 容易出现的误判
首次连接 网络往返、TCP 建连、安全握手、认证 把一次探测延迟当作全部应用速度
持续吞吐 线路容量、服务器负载、加密实现、数据复制 只按协议名称判断带宽上限
多任务并发 连接池、复用、流控、丢包恢复 认为复用开启得越多越快
长时间稳定 网络切换、空闲超时、重连与服务端限制 用短时测速替代长期观察

建立可重复的比较方法

有效测试需要控制变量。先在同一设备、同一网络和相近时间测试多个节点;若要比较协议,应尽量选择相同服务器位置、相近负载和相同传输方式。每项至少观察首次打开、持续传输和网络切换后的恢复。延迟测试可以筛除完全不可达或往返过高的节点,但最终仍应以实际应用为准。若结果波动很大,先重复测试并检查线路时段,不要立即修改 Mux、路由、DNS 和协议等多个选项,否则无法判断是哪项变化产生影响。

v2rayN 的桌面环境通常拥有更充足的处理器与内存,可以承受较复杂的规则和并发;Android 上的 v2rayNG、v2flyNG 则同时受到电池策略、后台限制和网络切换影响。桌面测试结论不能直接复制到移动端。发现整体速度下降时,可按节点、线路、本地设置三层检查,相关步骤见V2Ray 速度慢的分层排查。先确定问题属于连接建立、持续吞吐还是路由选择,再决定是否更换协议组合。

终端负担

资源占用、移动端电量与后台连接

处理器负担来自整条数据链

协议本身只占资源消耗的一部分。加密算法、安全握手、传输封装、DNS 查询、路由规则匹配、连接日志和图形界面都会使用处理器与内存。Shadowsocks 常因结构简洁而被视为轻量,但具体负担仍取决于加密方法及实现是否利用设备硬件能力。VLESS 减少协议层重复处理后,外层 TLS、REALITY 或传输仍需要计算。VMess 多一层协议逻辑,却不意味着在现代桌面设备上一定会形成可感知瓶颈。只有在高吞吐、低功耗设备或大量并发连接中,差异才更容易显现。

内存占用则与连接数量、缓冲区、路由规则规模和日志级别关系密切。一个包含大量域名规则和多组出站的配置,通常比单节点直连配置需要更多内存。打开详细日志会记录更多连接事件,也可能增加写入活动。排错结束后应把日志恢复为日常需要的级别,避免长期保留过密记录。客户端窗口占用与内核进程占用要分开看;v2rayN 的图形界面和实际代理核心是不同职责,界面关闭到托盘后,核心仍可能继续处理系统代理流量。

移动端电量主要受唤醒频率和网络状态影响

Android 设备上的耗电不只看“是否加密”。维持长期连接会让网络模块周期性活动,频繁短连接会增加握手和唤醒次数,网络信号较弱时无线模块还会提高发送功率。应用在 Wi-Fi 与移动网络之间切换后,旧连接失效并重新建立,也会产生额外消耗。若系统将 v2rayNG 或 v2flyNG 限制在后台,连接可能被暂停;当用户重新打开应用时集中重连,体感上既不稳定,也可能出现短时间资源峰值。

协议选型对电量的影响需要在相同流量下观察。轻量封装可以减少一部分计算,但若节点不稳定导致持续重连,节省的计算很快会被网络唤醒抵消。长期保持稳定连接的方案,往往比理论上处理步骤更少、实际却频繁断开的方案更省电。连接复用有时能减少底层连接数量,但若共享连接在移动网络切换后恢复不佳,也可能造成多项请求一起重试。因此移动端建议保持规则集适中、使用服务端明确支持的默认传输,先稳定运行,再逐项调整。

v2rayNG 与 v2flyNG 的资源差异应连同内核能力判断

v2rayNG 使用 Xray 内核,适合订阅中包含 VLESS、REALITY 或 Xray 扩展能力的情况;v2flyNG 使用 v2fly 内核,更适合以 VMess、Shadowsocks 等 V2Fly 兼容配置为主的使用环境。两者不能只按安装包大小或某次后台占用判断优劣。若 v2flyNG 无法解析节点所需的 REALITY 字段,即使空闲占用较低,也无法完成目标连接;反过来,订阅只有基础 VMess 时,复杂扩展能力并不会自动改善速度。

观察移动端资源时,至少覆盖屏幕点亮、屏幕关闭、网络切换和持续传输四种状态。系统电量统计适合查看一段时间的总趋势,不适合用几分钟样本下结论。还要区分代理产生的流量和具体应用自身产生的流量:视频播放、云同步和大文件更新本就会显著使用网络,客户端只是转发这些数据。若待机耗电异常,先检查是否有应用持续请求、节点是否循环重连、订阅是否配置了过于频繁的更新,再检查协议和内核。

桌面设备

更适合复杂路由、大规则集和多任务并发,但仍应避免长期保留排错级日志。

Android 设备

稳定连接、后台策略和网络切换通常比细微的协议计算差异更影响电量。

低资源环境

减少规则规模、并发和额外封装,通常比仅更换协议名称更直接。

降低资源占用的调整顺序

先关闭不需要的详细日志和重复测速,再减少失效节点、过密订阅更新与过大的路由规则;随后观察是否存在频繁重连;最后才比较传输和协议组合。每次只调整一项,并保持足够长的观察周期。如果设备只是空闲时内存较高,但系统没有回收压力、连接也稳定,不必为了数字好看频繁重启核心。现代系统会把可用内存用于缓存,真正需要关注的是持续增长、卡顿、异常发热和连接循环。

内核家族

V2Fly 与 Xray 的关系、能力边界和配置兼容

共同来源不等于功能同步

V2Fly 与 Xray 都延续了 Project V 生态中的配置模型和多协议转发思路,因此很多基础概念相同:入站负责接收本地或外部连接,出站负责把流量送往目标,路由根据域名、地址、端口等条件选择出站。VMess、Shadowsocks、SOCKS、HTTP 等常见结构在两边存在较大的理解共性。用户从一个内核转到另一个内核时,通常不需要重新学习“入站—路由—出站”这套框架。

不过,两者已经是独立演进的内核家族。新功能的加入时间、字段名称、默认值和扩展协议并不保证一致。Xray 侧常见 VLESS、REALITY、XTLS Vision 等组合;V2Fly 侧则按自身路线维护协议、传输与配置能力。看到 JSON 外观相似,不能直接推断每个字段都可互换。客户端能显示节点,也不意味着当前选择的内核能启动该节点;有些客户端会先保存未知字段,真正启动核心时才返回不支持或解析失败。

三款客户端与内核的对应关系

v2rayN 是 Windows、macOS 与 Linux 的桌面客户端,承担订阅管理、系统代理、路由编辑和核心调用等工作,桌面场景优先从它开始。它可以围绕不同核心能力组织配置,但具体节点是否可用仍取决于当前打包和选择的核心。v2rayNG 是 Android 上以 Xray 内核为主要基础的客户端,适合使用 VLESS、REALITY 及相关 Xray 配置。v2flyNG 则面向 v2fly 内核,是 Android 上需要 V2Fly 对应能力时的备选。

图形客户端不是协议本身。客户端负责把订阅或表单转换成核心配置、启动进程并调整系统网络入口;真正解析协议和转发数据的是内核。遇到“同一节点在一个客户端可用、另一个客户端不可用”时,应先比较两边使用的内核家族和配置字段,而不是只比较界面名称。若两个客户端使用相同家族但结果不同,再检查导入过程、版本所支持的字段和系统网络权限。

项目 V2Fly 家族 Xray 家族
共同配置思路 入站、出站、路由、传输分层 入站、出站、路由、传输分层
常见基础兼容 VMess、Shadowsocks 等 VMess、Shadowsocks 等
典型扩展方向 按 V2Fly 路线维护的协议与传输 VLESS、REALITY、XTLS Vision 等
Android 客户端 v2flyNG v2rayNG
判断依据 核对官方配置字段和订阅内容 核对 flow、公钥、短标识等扩展字段

配置兼容可分为语法、字段和行为三层

第一层是语法兼容,即 JSON 是否能被解析。一个文件语法正确,只能说明括号、引号和数据类型基本合法。第二层是字段兼容,即内核是否认识协议名称和具体键值。第三层是行为兼容,即同名字段在两个实现中的默认值、边界条件和组合限制是否一致。迁移时只通过第一层检查远远不够。最稳妥的方法是让目标客户端根据订阅重新生成配置,而不是把旧核心的完整运行配置直接复制过去。

下面的片段展示 VLESS 出站的基本分层方式,仅用于理解字段位置。示例地址和用户标识用于文档演示,不能直接连接。真实节点还需按服务端要求补齐传输与安全设置。

{
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "example.com",
            "port": 443,
            "users": [
              {
                "id": "11111111-1111-1111-1111-111111111111",
                "encryption": "none"
              }
            ]
          }
        ]
      }
    }
  ]
}

这里的 protocol 只确定出站协议,不能替代传输和安全层。导入 REALITY 节点时,还会出现服务器名称、公钥、短标识、指纹和流控等信息。若目标内核不支持这些字段,不应通过删除字段强行启动。正确选择是换用支持该组合的 Xray 内核客户端,或使用服务端另行提供的兼容节点。需要比较桌面客户端形态时,可继续阅读v2rayN 桌面版与 WPF 版区别

数据交换

订阅格式、分享链接与配置字段兼容

订阅是节点清单,不是统一协议标准

客户端订阅通常由一个地址返回节点列表,内容可能是编码后的多行分享链接,也可能是某种结构化配置。订阅解决的是批量分发与更新问题,不负责消除各内核之间的功能差异。同一个订阅地址可以同时包含 VMess、VLESS、Trojan 和 Shadowsocks 节点;客户端会逐项识别,再转换为自身的数据模型。无法识别的协议可能被跳过,部分识别的节点则可能保留名称但丢失扩展字段。

因此,“订阅更新成功”只说明客户端取得并处理了响应,不等于列表里的每个节点都适配当前内核。更新后应观察节点数量是否合理、协议类型是否显示、关键参数是否存在。若订阅原本含 REALITY 节点,而 v2flyNG 中没有对应能力,这属于内核边界,并非反复更新就能解决。相同订阅导入 v2rayNG 后能够识别,也进一步说明差异位于内核能力或转换层。

分享链接能携带什么,取决于协议和扩展约定

常见链接使用协议名称作为开头,例如 vmess://vless://trojan://ss://。链接正文会携带服务器、端口、身份凭据以及一部分传输参数。VLESS 与 Trojan 常把额外参数放在查询字符串中,节点备注则放在末尾;VMess 的传统分享形式常把一组结构化字段编码后放入链接;Shadowsocks 链接则围绕加密方法、密码、地址和端口组织。不同客户端对扩展参数的命名和解码容错可能不同。

手工复制链接时,应从协议开头完整复制到末尾,不能只保留地址和用户标识。链接中的问号、井号、斜杠和百分号都有结构含义,经聊天工具或文本编辑器处理后可能被截断或替换。二维码也只是链接的图形表示,扫描成功不代表内容完整。导入后应打开节点详情,对照服务端提供的信息检查传输、安全层、SNI、路径、服务名、公钥、短标识和流控。

常见字段怎样对应到连接层次

字段或界面名称 所属层次 核对重点
address、port 网络目标 地址完整、端口为服务端实际监听值
id、password、method 认证或协议数据 字符完整,加密方法双方一致
network、type 传输方式 TCP、WebSocket、gRPC 等不能随意互换
host、path、serviceName 传输附加信息 大小写、斜杠和服务名按原值保留
security、sni 安全层 安全类型与服务器名称对应
publicKey、shortId、flow Xray 扩展能力 需要兼容内核,不能缺项或自行改写

订阅更新与本地修改之间的关系

很多客户端在更新订阅时会用远端内容覆盖同一订阅组中的节点。用户若直接修改订阅节点,下一次更新后改动可能消失。需要长期保留本地调整时,应先确认客户端是否支持复制为本地节点、为订阅设置独立规则,或由服务端修正源数据。不要把关键修复只留在订阅节点的临时编辑中。路由规则、系统代理设置和客户端偏好通常属于本地配置,不一定随节点更新覆盖,但仍需按客户端界面实际说明判断。

订阅无法更新时,先确认系统时间、网络与订阅地址是否正常,再检查客户端日志中的 HTTP 状态和解析提示。节点更新后突然全部失效,应比较更新前后协议、地址、端口和安全字段,而不是立即重装客户端。若只有少数节点失效,问题更可能集中在这些节点的参数或服务端状态。具体排查顺序可参考节点超时与无法连接的逐项检查

跨客户端迁移应优先使用原始订阅

从 v2rayN 迁移到 v2rayNG,或在 v2rayNG 与 v2flyNG 之间切换时,优先导入原始订阅或完整分享链接,让目标客户端按自己的内核生成配置。直接复制某个客户端导出的运行 JSON,可能带入本地端口、平台路径、专有路由和不受支持的字段。迁移完成后先选一个基础节点测试,再导入复杂规则。这样可以把“节点兼容”和“本地路由兼容”拆开验证,避免一次引入多个变量。

选择路径

按设备、订阅能力和使用场景选择协议

先由服务端能力划定可选范围

协议不能由客户端单方面决定。服务端只提供 VMess 时,客户端把类型改成 VLESS 不会产生可用连接;订阅没有 REALITY 公钥和短标识时,也不能通过打开选项补出这些参数。因此第一步不是在所有名称中挑一个理论最优项,而是列出服务端实际提供、当前客户端内核完整支持的组合。只有位于这个交集中的节点,才值得继续比较速度、资源与维护成本。

第二步看是否有旧设备或多个客户端共同使用。需要兼容既有 V2Fly 环境时,VMess 或双方都支持的 Shadowsocks 配置通常更容易保持一致。设备全部使用 Xray 内核,服务端也明确提供 VLESS 与 REALITY 时,可以优先测试这类组合。Trojan 适合服务端已有完整 TLS 配置、客户端能够正确处理证书与服务器名称的情况。选择应围绕现有条件,而不是把协议名称当作等级。

桌面端优先考虑管理能力和长期稳定

Windows、macOS 与 Linux 上优先使用 v2rayN。桌面环境常同时运行浏览器、开发工具、通信软件和系统更新,需要清晰的系统代理、路由规则与日志入口。协议选择上,订阅若提供 VLESS 与 REALITY 且当前 Xray 核心完整支持,可把它作为现代组合测试;已有 VMess、Trojan 或 Shadowsocks 节点稳定运行时,则可继续使用,不必只为追逐名称迁移。

桌面端还要考虑 TUN 与系统代理的差异。系统代理主要影响遵循系统设置的应用,TUN 模式则通过虚拟网络接口接管更广的流量范围。二者属于本地流量入口,不会改变远端节点原本的协议。出现某个应用不走代理时,应先检查入口与路由,而不是更换 VMess 或 VLESS。复杂路由带来的规则匹配与 DNS 行为,也可能比协议差异更影响使用结果。

Android 端先匹配内核,再观察后台稳定性

订阅以 Xray 能力为主、包含 VLESS、REALITY 或特定 flow 字段时,优先使用 v2rayNG。订阅主要是 V2Fly 支持范围内的 VMess、Shadowsocks 等节点,并希望使用 v2fly 内核时,可以选择 v2flyNG。选择完成后,应观察屏幕关闭和网络切换后的连接恢复。若节点在前台正常、后台频繁断开,先检查系统后台策略和电池限制,而不是立即判定协议不稳定。

移动端不适合长期保留大量失效节点和复杂测试规则。节点列表过长会增加管理成本,自动选择或测速也可能唤醒网络。保留少量经过验证的节点,按用途组织订阅组,比不断添加协议类型更有效。下载客户端时,主流近年 Android 设备通常选择 arm64 架构;无法确认架构时可使用通用版。具体文件入口由下载中心的 Android 分区提供。

不同目标下的推荐顺序

主要目标 优先检查 可考虑的协议组合
兼容旧订阅与多客户端 各设备内核共同支持范围 VMess、双方支持的 Shadowsocks
Xray 现代配置 公钥、短标识、flow 等字段完整 VLESS 与 REALITY,按服务端配置使用
已有标准 TLS 部署 证书、SNI、系统时间 Trojan,或服务端提供的 TLS 组合
低资源与简化管理 规则规模、日志、连接数量 服务端支持的简洁 Shadowsocks 配置
已有节点长期稳定 实际吞吐、重连和维护成本 保持现有协议,不为名称单独迁移

没有脱离环境的单一最佳协议

VLESS 的职责分离适合现代 Xray 组合,VMess 具备成熟的历史兼容范围,Trojan 的密码与 TLS 结构直观,Shadowsocks 便于轻量部署,REALITY 则服务于特定安全握手模型。每种方案都解决不同约束。选型时依次回答五个问题:服务端提供什么;客户端内核支持什么;订阅字段是否完整;设备资源与后台条件如何;实际路径是否稳定。五项都明确后,协议名称本身反而不再神秘。

若仍难以决定,可以保留两个用途不同的节点:一个以稳定和兼容为主,另一个用于测试新组合。测试节点验证足够时间后再替换主节点。不要同时改协议、传输、DNS、路由和系统入口。一次只改变一层,记录变化前后的连接建立、持续传输与重连表现,得到的结论才可以复用。

落地检查

协议迁移、参数核对与故障定位

迁移前先保存可工作的基线

协议迁移最容易出现的问题,是旧节点还没验证清楚就被新配置覆盖。开始前应记录当前可工作节点的客户端、内核家族、协议、传输方式和安全层,并保留原始订阅地址。迁移的目标也要明确:是从旧 VMess 改为服务端新提供的 VLESS,还是从 v2flyNG 切换到 v2rayNG 以使用 REALITY,或只是把桌面设置转到另一台设备。不同目标对应不同检查范围。

若服务端同时提供旧节点和新节点,应先把新节点作为独立条目导入,不要直接编辑旧条目。连接成功后依次测试域名访问、持续传输、网络切换和常用应用,再决定是否替换。这样即使新参数有误,也能回到已知可用的基线。若服务端不再提供旧配置,则更要完整保留新订阅原文,避免在多个客户端之间反复转存造成字段丢失。

连接失败时按建立链逆向检查

第一步检查网络目标。确认地址没有多余空格,端口为数字,域名能够解析,设备到目标端口存在基本连通性。Windows 可在 PowerShell 中使用以下命令检查 TCP 端口是否能够建立连接,示例域名需要替换为实际服务器地址:

Test-NetConnection example.com -Port 443

macOS 与 Linux 可使用系统自带工具进行同类检查:

nc -vz example.com 443

端口不可达时,协议认证尚未开始,应先处理地址、网络路径或服务端监听。端口可达但核心报告握手失败,再检查系统时间、安全层、SNI、证书或 REALITY 参数。握手成功后出现认证失败,重点核对 UUID、密码、加密方法和用户配置。能够连接但目标无法访问时,再检查 DNS、路由和本地代理入口。按层次排查可以避免一开始就重装客户端或随机切换协议。

不同协议的高频错误点

VMess 需要特别注意系统时间、用户标识、alterId 类历史字段与传输参数是否来自同一配置。VLESS 常见问题是 UUID 正确但安全层、flow 或传输不匹配。Trojan 应核对密码、SNI 和证书相关条件。Shadowsocks 则需要保证密码与加密方法完全一致,附加插件参数也不能遗漏。REALITY 组合需要同时检查公钥、短标识、服务器名称、指纹与 flow,任何一项都不应靠猜测填写。

日志中的“解析失败”与“连接超时”含义不同。解析失败通常指配置语法或字段不被内核接受;认证失败说明已经到达相应协议处理阶段;连接超时则可能发生在地址、端口或网络路径上;握手错误多与 TLS、REALITY 或传输协商相关。看到错误后先定位阶段,再查参数。只截取最后一行日志可能缺少上下文,可向前查看同一连接开始时的记录,但无需长期开启最详细日志。

连接成功但应用不通时检查本地入口

节点显示已连接,只能说明核心已经启动或某次探测通过。浏览器、命令行工具和其他应用是否经过代理,还取决于系统代理、TUN、应用自身代理和路由规则。某个浏览器可用而另一个程序不可用,通常更接近本地入口问题。所有域名都失败但直接使用地址可用时,应检查 DNS;部分站点走错出口时,应检查域名与地址规则的匹配顺序。

路由规则按内核配置顺序或客户端生成逻辑处理,宽泛规则放在前面可能遮住后面的精确规则。排错时可临时切到客户端提供的简单代理模式,确认节点本身是否工作,再逐步恢复自定义路由。不要把路由问题误判为 VLESS、VMess 或 Trojan 的协议问题。修改本地 SOCKS 或 HTTP 端口后,也要同步修改使用这些端口的应用。

形成可复用的检查记录

一次完整记录应包含设备平台、客户端、内核家族、节点协议、传输、安全层、测试时间段以及错误发生在哪个阶段,不需要保存实际密码或用户凭据。记录“端口可达、握手失败”比只写“节点不能用”更有价值;记录“Wi-Fi 正常、切换网络后无法自动恢复”也比单次延迟数字更能定位移动端问题。经过几次排查后,可以建立适合自己环境的固定顺序。

如果是首次配置,建议先回到快速上手主线,用订阅导入和默认设置建立基线;如果问题只出现在首次安装和系统代理,可参考v2rayN 首次安装与初始设置。需要重新选择客户端时,桌面端从 v2rayN 开始,Android 根据 Xray 或 V2Fly 内核需求选择 v2rayNG、v2flyNG,并通过下载中心进入对应平台。