Shadowrocket VMess 与 VLESS 有什么区别:添加节点前要看懂的字段

从普通用户角度对比 VMess 与 VLESS:加密方式、UUID、传输方式与 TLS 字段各管什么,在 Add Server 里填错哪一项最常导致连不上。

本文速览

本文适合已经有自己的服务商与配置、准备在 Shadowrocket(小火箭)中添加 VMess 或 VLESS 的用户。先分清协议、传输与 TLS 三层,再按 Address、Port、UUID、Host、Path 的顺序核对。读完可以判断哪些字段必须逐字复制,哪些设置不能凭协议名称推测;本文不提供线路或订阅。

VMess 与 VLESS:认证相近,加密职责不同

VMess 与 VLESS 都是客户端和服务器之间使用的代理协议,不是服务器地址,也不是传输方式。两者通常使用 UUID 标识用户,但协议握手不同,不能把已有 VMess 记录的 Type 改成 VLESS 就继续使用。服务器端必须提供对应协议的入口。

VMess 支持协议层的数据加密,具体采用什么方式取决于配置。VLESS 本身不提供这一层的数据加密,通常结合 TLS 等安全层使用。因而,“VLESS 没有协议层加密”不等于“VLESS 连接必然明文”,也不能据此把客户端的 TLS 关闭。

核对项VMessVLESS
用户认证通常使用 UUID,需与服务器记录一致通常使用 UUID,需与服务器记录一致
协议层加密支持,由配置指定不提供这一层的数据加密
TLS是否启用由服务器入口决定通常结合安全层,仍须以配置为准
传输方式需要匹配服务器,例如 TCP 或 WebSocket同样需要匹配服务器,不能由协议名推断
额外参数若配置含 AlterId,须原样核对若配置含 Flow,须核对对应支持条件

判断:先确认服务器入口,再选择 Type

打开已有配置的说明,确认其明确标注 VMess 还是 VLESS。只有服务器另行提供了另一种入口时,才建立另一条记录;不要通过更改 Type 尝试“升级协议”。

协议名称本身不能说明连接一定更快。网络路径、服务器负载、传输配置与证书状态都会影响结果。排查时保留原记录,另建测试记录,比在同一条记录里同时改动多个字段更容易定位问题。

Add Server:先填 Address、Port 与 UUID

在 Home 点右上角的添加按钮进入 Add Server,先选 Type,再填写对应协议出现的字段。不同 Type 显示的选项可能不同;本文用 UUID 指服务商提供的用户标识,在表单中也可能以 User ID 一类字段名呈现。不要把它误当成备注或订阅访问令牌。

  1. 核对 Address。填写服务器域名或 IP 地址。若资料将地址与端口分开给出,就分栏填写,不要在地址前加网页协议前缀,也不要把 WebSocket 的 Path 拼到地址后面。
  2. 核对 Port。填写服务商指定的整数端口。例如配置给出 443 就填 443;该数字常用于 TLS 服务,但它本身不能证明此入口已启用 TLS。
  3. 核对 UUID。复制完整内容,检查前后空格、缺失字符与换行。常见 UUID 表示为用连字符分组的 32 个十六进制数字,不要自行生成一个替换服务器已分配的值。
  4. 核对协议附加项。VMess 的加密相关选项、AlterId,以及 VLESS 配置中的 Flow 等参数,均以已有配置为准。没有给出的项目,不从其他记录里随意照抄。
  5. 保存并回到 Home。确认 SERVER 列表中出现新记录,且当前选中了这条记录。列表出现记录只表示保存完成,还不是连通成功。
1–65535
有效服务端口范围;实际值由服务器指定
32 位
常见 UUID 中十六进制数字的数量,不计连字符
3 层
分别检查代理协议、传输方式与 TLS 安全层

如果通过自己的订阅导入了记录,优先查看导入结果,而不是再手填一份。订阅内容可能同时带入传输和安全参数;只复制地址、端口与 UUID,仍可能遗漏决定连接能否完成的字段。手动编辑订阅生成的记录前,先保留独立副本,避免更新后改动被覆盖。

传输方式:TCP、WebSocket 与 Host、Path 的关系

传输方式决定代理数据如何承载,不负责替换 UUID 认证。VMess 和 VLESS 都可能使用不同传输方式,具体以服务器配置及当前客户端支持为准。选择 WebSocket 后,Host 与 Path 才有相应的请求语义;不能把它们当成所有连接都必须填写的通用字段。

字段作用常见填错方式
Transport选择与服务器匹配的传输方式服务器要求 WebSocket,客户端仍使用 TCP
HostWebSocket 握手中的 HTTP Host,可参与服务路由把服务器 IP 自动当作 Host,覆盖原来的域名
PathWebSocket 请求路径,例如 /ws漏掉开头的斜杠,或擅自更改大小写
SNITLS 握手使用的服务器名称误以为填写 Host 就必然同步设置了 SNI

例如,配置说明写明 Address 为 edge.example.com、Port 为 443、Transport 为 WebSocket、Host 为 gateway.example.com、Path 为 /ws。这些只是字段关系示例,不是可用服务。Address 与 Host 不同并不必然有错,不应为了看起来整齐就将两者改成一致。

TLS:按入口要求启用,不用端口号代替判断

TLS 负责连接安全层。启用后,需要核对服务器名称与证书验证,不能只看开关是否打开。Address 可以是连接目标的 IP 或域名,SNI 则是 TLS 握手中使用的名称;在需要域名验证的配置中,应按资料填写对应域名。

以下比较的是同一客户端中的安全设置方式,不是对 VMess 与 VLESS 做优劣排名。推荐项的前提是服务器明确提供 TLS 入口;如果配置使用其他安全机制,应按该机制的参数单独核对。

TLS 入口:启用验证并核对 SNI

推荐

服务器要求 TLS 时启用 TLS,按配置填写 SNI,并保留证书验证。证书报错时先检查域名、系统时间与服务器证书,不把跳过验证作为常规处理方式。

适合:服务商明确提供 TLS 入口,且证书与指定名称匹配

非 TLS 入口:仅按明确配置设置

只有资料明确说明不使用 TLS 时,才按该入口要求关闭。VMess 的协议层加密与 TLS 不是同一层;VLESS 也不能仅凭协议名判断完整连接的安全性。

适合:已有配置明确指定非 TLS 入口,并已说明其安全层安排

判断:证书错误先核对名称,不先放宽验证

将配置中的 SNI 与当前填写值逐字对照,再到系统设置核对日期与时间。名称与时间正确仍失败时,向自己的服务商确认服务器证书状态。

Host 和 SNI 即使经常填写同一个域名,也不代表二者等价。前者属于 HTTP 请求,后者属于 TLS 握手。错误可能发生在不同阶段:TLS 未通过时,后面的 WebSocket 请求还没有机会完成。

保存后连不上:按连接阶段逐项排查

Home 中开关已开启,说明本地 VPN 配置已开始工作,不等于远端已完成认证。Connectivity Test 显示延迟也只能证明对应测试获得了结果,不能单独证明 UUID、WebSocket 握手与所有网页请求都正常。下面按顺序操作,每次只改一组参数。

  1. 确认选中记录。回到 Home 检查 SERVER 中当前选择,避免编辑了新记录,实际仍连接旧记录。
  2. 确认基础可达。运行 Connectivity Test。若超时,先核对 Address、Port 和当前网络;超时不能直接归因于 UUID 错误。
  3. 确认认证与传输。重新核对 Type、UUID、VMess 附加项或 VLESS 的 Flow,再检查 Transport、Host 与 Path。不要同时切换协议和传输方式。
  4. 确认 TLS。核对 TLS 开关、SNI 与证书相关错误。设备时间不正确也可能干扰验证与认证,应先恢复正确时间。
  5. 隔离规则影响。在 Home → Global Routing 临时选择 Proxy,使用已选记录测试同一个目标。Proxy 用于将此处测试尽量交给代理路径,测试结束恢复原模式;它不会修复服务器字段。
  6. 恢复日常配置。如果 Proxy 下可用而 Config 下失败,转到 Config 核对当前配置及规则去向,检查是否命中 Direct 或 REJECT。若只在域名访问时失败,再检查 DNS,而不是继续随机修改 UUID。

Global Routing 中的 Direct 不用于验证远端代理是否工作;Config 按所选配置处理连接;Scene 还应检查当前场景实际采用的策略。若连接会自动重新开启,可到 Settings → On Demand 核对自动连接条件。On Demand 控制连接触发,不会修正 VMess 或 VLESS 的字段。

常见问题:改协议、端口与订阅更新

同一个 UUID,为什么 VMess 能连,改成 VLESS 就不行?

UUID 只是认证资料的一部分,两种协议的握手并不相同。回到 Add Server,将 Type 恢复为原配置指定值。若确实要使用 VLESS,应向自己的服务商确认是否另有 VLESS 入口,以及对应端口、传输与安全参数。

Port 填 443,是不是就必须打开 TLS?

端口号不是安全设置声明。打开当前记录,按原配置分别核对 Port 与 TLS;只有资料明确指定 TLS 才按要求开启。不要把其他记录的端口与 TLS 开关拼成一份新配置。

UUID 看起来一样,还是认证失败,先查哪里?

先重新复制完整 UUID,删除前后空白,再核对 Type 与协议附加项。随后检查设备时间和账户状态;是否过期、是否被停用需要由自己的服务商确认,单靠本地表单无法判断。

手动修好了,为什么订阅更新后又变回去?

订阅更新可能按远端内容重建或覆盖记录。先保留一条独立的手动记录做对照,再更新自己的订阅,逐项比较差异。若远端字段持续错误,将脱敏后的差异反馈给自己的服务商,不要反复覆盖全部配置。

最终检查标准是:选中了预期记录,协议与服务器一致,传输和 TLS 字段均匹配,并且在明确的 Global Routing 模式下能完成实际目标访问。保存成功、开关开启、测试出现延迟分别对应不同阶段,不能相互替代。更多基础操作可查看使用说明;涉及 DNS 与规则去向时,继续查看故障排查。

App Store 正版核对