已有订阅的用户,优先选参数完整、两端内核均支持的节点;自行配置服务端的用户,再比较认证方式、安全层与传输组合。本文先拆开协议与内核的关系,再比较四种方案的实际差异,最后给出桌面与安卓的核对步骤。读完可以判断何时保留 VMess、何时采用 VLESS + REALITY,以及 Trojan 和 Shadowsocks 分别适合什么条件。
先分清协议、传输、安全层与客户端
节点名称里的“VLESS + TCP + REALITY”不是三个同类选项。VLESS 负责代理请求与用户认证;TCP 是底层传输;REALITY 负责连接的安全握手与认证相关机制。把这些层混为一谈,就容易出现“选了 VLESS 为什么还是连不上”或者“改成 443 端口是否自动启用 TLS”的误解。
v2rayN、v2rayNG 和 v2flyNG 是图形客户端,不是这四种协议的别名。v2rayN 的实际能力取决于所选内核与版本;v2rayNG 使用 Xray 内核;v2flyNG 使用 v2fly 内核。界面出现某个字段,不等于旧内核已经支持对应组合,订阅能导入也不代表所有参数都被正确保留。
- 代理协议:VMess、VLESS、Trojan、Shadowsocks,决定请求格式和认证方式。
- 承载方式:TCP、WebSocket、gRPC 等,决定代理数据如何在链路中传递;支持范围取决于具体实现。
- 安全机制:TLS、REALITY 或协议自身的加密,不能只看节点名称判断。
- 接入与分流:系统代理、TUN、路由规则决定哪些应用与目标进入节点,不会自动改变节点协议。
四种协议对比:加密、认证与 REALITY
下表讨论常见、仍在使用的配置方式。VMess 以现代 AEAD 配置为前提,Shadowsocks 则需要区分传统 AEAD 与 2022 系列。协议名字相同,具体算法和实现版本不同,兼容范围也可能不同。
| 协议 | 认证与加密 | 常见承载 | REALITY 关系 | 主要核对项 |
|---|---|---|---|---|
| VMess | 基于用户 ID 认证;常用 AEAD 数据加密,可再叠加 TLS | TCP、WebSocket + TLS 等 | 不作为常规 REALITY 选型组合 | UUID、加密选项、传输参数、系统时间 |
| VLESS | 常见配置使用 UUID 认证;传统配置不自带数据加密,依赖外层保护 | TCP + TLS、TCP + REALITY、WebSocket + TLS 等 | Xray 中常见组合,需核对两端支持 | UUID、flow、安全层、服务名及公钥相关参数 |
| Trojan | 密码认证;常规方案依赖 TLS 保护数据 | 通常为 TCP + TLS,扩展承载取决于实现 | 部分 Xray 配置可组合,不能按名称推定兼容 | 密码、TLS 服务名、证书、传输方式 |
| Shadowsocks | 算法与密钥共同决定兼容性;常用 AEAD 或 2022 系列 | 原生 TCP、UDP;额外封装另行确认 | 不是协议原生能力,不应直接套用 VLESS 参数 | method、密码或密钥格式、UDP 支持 |
VMess 的 auto 是实现提供的加密选择逻辑,不是独立协议。现代配置通常使用 AEAD 认证头,不要为了兼容未知的旧教程随意增加 alterId。涉及时间的认证也要求设备时钟准确;先开启系统自动校时,比反复更换 UUID 更有针对性。
VLESS 常见配置中的 encryption=none 不能脱离安全层解读。它不等于整条连接必然明文,也不等于 VLESS 自动加密:外层使用 TLS 或 REALITY 时,由相应机制提供保护。新版本引入的扩展能力需要单独确认,本篇不把扩展字段当作所有内核都具备的基础能力。
Shadowsocks 的 aes-128-gcm 与 2022-blake3-aes-128-gcm 不是可互换的写法。2022 系列有自己的密钥长度与编码要求;128 位密钥为 16 字节,256 位密钥为 32 字节,再按配置要求编码。不能把任意短密码填进去,期待客户端自动转换成正确密钥。
握手与速度:为什么不能按协议名排名
首次连接耗时包含名称解析、到节点的网络往返、安全握手、代理请求以及目标站响应。TCPing 通常只说明节点端口能否建立 TCP 连接,尚未验证 UUID、密码、证书或 REALITY 参数,因此不能据此认定某种协议的完整链路更快。
在常见 TCP 场景里,新建 TCP 连接通常需要一次往返;TLS 1.3 完整握手通常还需要一次往返,具体能否重叠、恢复会话以及复用连接取决于实现。WebSocket 的升级请求和额外 HTTP 层也可能增加首次连接成本。遇到丢包时,这些成本会放大,但不能机械地相加成所有环境通用的延迟公式。
上面的数字是端口含义,不是测速结果。服务端使用 443 并不能证明它具备浏览器可验证的证书;本地 SOCKS 使用 1080 也不意味着远端要使用同一端口。先分清本地监听与远端入口,才能避免把本地接入错误误判为协议性能问题。
- 固定比较条件:尽量选择同一服务器、同一线路、同一时段。两个不同地区的节点不能用于证明协议优劣。
- 分开测响应和吞吐:先做真连接延迟测试,再对同一目标文件测速;连续做 5 次,记录中位数及失败次数。
- 保留设备指标:查看处理器占用、温度和电量变化。安卓持续下载时的发热,可能比几十毫秒的握手差异更影响体验。
- 一次只改一项:先保持复用、路由和 DNS 设置不变,再比较传输与安全层。否则无法解释差异来源。
按服务端条件选:四种方案的适用边界
没有一种协议能脱离服务器线路、参数管理和本地内核成为通用最优。下面把“可控制服务端、能持续维护”的情形作为推荐前提;如果只有订阅使用权,应以服务方给出的完整配置为准,不要为追求名称较新而手动拼接参数。
VLESS + REALITY
推荐在两端均使用兼容 Xray 内核、能够维护服务端参数时,可作为优先验证的方案。采用常见 Vision 组合时,需核对 xtls-rprx-vision、服务名、公钥相关参数及 shortId,不能只复制 UUID。
适合:可管理服务端,并能保持桌面与安卓客户端配置一致的用户。
Trojan + TLS
已有域名、证书与续期流程时,配置关系较直观。把证书信任、服务名及密码分开核对,便于定位问题;证书到期或 SNI 不匹配,都可能在代理请求前阻断连接。
适合:已有 TLS 运维条件、希望沿用标准证书验证流程的环境。
VMess + WebSocket + TLS
已有可用反向代理与 VMess 节点时,可以继续沿用。若经过 CDN,必须确认其支持相应的 WebSocket 转发、端口及流量用途;路径、Host 和 TLS 服务名不是同一个字段。
适合:现有订阅或服务架构已经稳定使用 VMess 的场景。
Shadowsocks AEAD / 2022
原生配置要素较集中,主要核对地址、端口、算法与密钥。支持的算法、UDP 转发以及额外封装必须分别确认;不能把“字段少”理解成在所有网络中都更稳定。
适合:服务端明确提供对应算法、需要验证原生 TCP 与 UDP 转发的环境。
v2rayN 与 v2rayNG:导入后逐项核对
订阅是节点参数的分发方式,不是第五种代理协议。同一条订阅在两个客户端中显示相同节点名称,只能说明名称一致,不能证明 flow、传输路径和安全层均已正确解析。第一次导入后,应打开节点编辑页,逐项对照服务方提供的信息。
核对方案:同一节点分别验证桌面与安卓
桌面端:v2rayN
- 先核对当前实际使用的内核及其版本,不只记录界面版本。
- 打开节点编辑窗口,检查协议、地址、远端端口与安全层。
- 按实际本地端口接入测试,再检查系统代理或 TUN 是否符合用途。
- 失败时查看运行日志,区分连接超时、认证失败和证书错误。
安卓端:v2rayNG
- 核对内置 Xray 版本是否支持服务端给出的完整组合。
- 检查节点的传输协议、TLS 或 REALITY 配置与服务名。
- 启动连接并确认已授予系统 VPN 权限。
- 暂时关闭分应用排除规则,避免测试应用未进入代理。
订阅更新只同步其包含的节点字段;本地路由、DNS、系统代理与分应用设置仍需分别核对。
VLESS + REALITY 最容易漏掉的是服务名、公钥相关参数、shortId 和 flow;VMess + WebSocket 容易漏掉路径与 Host;Trojan 常见问题是密码或证书服务名不符;Shadowsocks 则应先核对 method 与密钥格式。字段名称随客户端版本可能变化,应按字段含义匹配,而不是只看界面位置。
- 地址与服务名分开:连接地址可以是服务器 IP,TLS 服务名通常仍要匹配证书或服务端允许的名称,不应一律填成 IP。
- 保留证书验证:遇到证书错误先排查时间、服务名、信任链与证书有效期,不把跳过验证当作长期方案。
- UDP 单独验证:网页能打开不代表 UDP 可用;还要检查协议实现、服务端转发、防火墙及客户端接入模式。
- 凭据按敏感信息处理:订阅地址、UUID、密码、密钥与完整分享链接不应直接放入公开截图。
协议选型常见问题
VLESS 一定比 VMess 快吗?
不一定。VLESS 常见配置减少了协议自身的数据加密处理,但实际还可能使用 TLS 或 REALITY。先固定服务器与测试目标,分别做 5 次真连接测试和下载测试,再看中位数、失败率及处理器占用。不同线路的结果不能归因于协议名字。
节点写着 REALITY,为什么导入后仍然超时?
先确认服务器地址和远端端口能到达,再打开节点编辑页核对服务名、公钥相关参数、shortId 与 flow。随后核对两端 Xray 版本。TCPing 正常只验证端口连接,不能证明 REALITY 握手成功;日志中的握手错误需要结合具体参数处理。
Shadowsocks 能打开网页,游戏却连接失败怎么办?
先确认游戏流量进入了代理,随后核对服务端与客户端是否启用并支持 UDP。仅设置浏览器或系统 HTTP 代理,通常不足以接管游戏 UDP。即使协议支持 UDP,服务端防火墙或当前网络也可能阻断对应流量。
v2flyNG 可以直接使用同一条 REALITY 节点吗?
不要仅凭订阅能导入就判断可用。v2flyNG 使用 v2fly 内核,而本篇讨论的常见 REALITY 方案以 Xray 实现为基础。需要这类节点时,先核对内核支持;安卓端可用 v2rayNG 验证服务方提供的组合,不能通过修改节点名称获得兼容性。
换成 Trojan 后,原来的路由规则还有效吗?
若规则引用的是保持不变的出口标签,且新节点正确绑定该出口,规则可以继续使用;若规则依赖节点名称、分组或特定出口,则需要重新核对。先测试一个应直连的目标和一个应代理的目标,并查看日志中的实际出口,不能只看客户端显示“已连接”。