2026-08-28 · 协议科普 · 约 10 分钟

VMess 和 VLESS 有什么区别:Shadowrocket 用户需要知道的协议差异

从加密方式、UUID 用法、传输层与 TLS 搭配几个角度,讲清 VMess 与 VLESS 的区别,以及在 Add Server 里如何对应填写。

本文速览

本文适合已经拥有服务商配置、准备在 Shadowrocket(小火箭)中核对 VMess 或 VLESS 参数的用户。先区分协议认证、数据加密、传输方式与 TLS,再按 Add Server 的录入顺序检查。读完可以判断 UUID、端口、Server Name、Host 与 Path 分别属于哪一层,避免把更换 Type 当成协议转换。

一、VMess 与 VLESS:先区分认证与加密

VMess 与 VLESS 都可以用 UUID 标识用户,但两者的协议格式并不相同。VMess 提供协议层的认证与数据加密机制;VLESS 的基础协议本身不负责数据加密,通常需要与 TLS 等安全传输机制配合。不能因为两份配置都有 UUID,就认为它们可以互相替换。

这里的加密指客户端到服务端之间的代理链路。网页自身的 HTTPS 属于另一层:网页使用 HTTPS,不等于整个代理连接已经获得同样的保护;代理连接启用了 TLS,也不等于访问的所有网站都自动变成 HTTPS。排查时要把这两层分别核对。

核对项目 VMess VLESS
用户身份 使用 UUID 等认证参数,必须与服务端一致。 使用 UUID 进行用户识别,必须与服务端一致。
协议层加密 支持协议层数据加密;具体方式按已有配置填写。 基础协议不提供数据加密;不要把相关的 none 值理解成 TLS 必须关闭。
外层 TLS 可以使用,是否启用由服务端部署决定。 通常与 TLS 等安全传输机制搭配,必须核对实际部署。
传输方式 可搭配 TCP、WebSocket 等方式,取决于双方支持。 同样需要匹配传输方式,不能只核对协议名称。
切换协议 改成 VLESS 需要对应的服务端配置。 改成 VMess 同样需要对应的服务端配置。

现代 VMess 配置常见 AEAD 认证。遇到旧配置里的 Alter ID,不要把它当成 UUID,也不要将旧参数机械套到另一份配置。若导入内容与服务商当前说明不一致,先确认配置是否仍受支持,再调整字段。

二、UUID 与端口:相同格式不代表相同连接

UUID 常写成五组十六进制字符,例如 123e4567-e89b-42d3-a456-426614174000。此处仅用于识别格式,不是可用凭据。录入时保留完整内容,不添加空格,不把配置名称、订阅名称或账户登录密码填进 UUID 对应项。

128 bit
UUID 的位数;常见文本格式为 8-4-4-4-12
443
TLS 服务常见端口示例,不是两种协议的固定端口
1–65535
录入服务端口时使用的有效数字范围

Address 决定连接到哪里,Port 决定连接哪个服务入口,UUID 决定以哪个用户身份认证。三个值必须共同匹配。同一地址上的 443 与 8443 可以对应不同的入口,不能因为其中一个端口常见就自行替换另一个。

  • 核对 Address:只填写配置要求的域名或 IP,不将整个订阅链接放入地址项。
  • 核对 Port:填写原配置提供的数字,不附加协议前缀或路径。
  • 核对 UUID:检查复制时是否遗漏首尾字符,避免混入换行。
  • 核对有效状态:凭据过期、被停用或受到连接限制时,格式正确仍可能无法通过认证。

三、TLS、Server Name 与 WebSocket:逐层匹配

把一条连接拆成四层更容易核对:先连接 Address 与 Port,再完成 TLS(若启用),随后建立 WebSocket 等传输,最后执行 VMess 或 VLESS 认证。这个顺序是理解配置的简化模型;某一层失败时,继续修改后面的 UUID 通常不能修复前一层的问题。

Server Name 通常涉及 TLS 的 SNI 与证书名称核对。WebSocket 的 Host 属于 HTTP 请求头,Path 属于请求路径。它们可能写成同一个域名,也可能因部署方式而不同。不要把 Host 自动复制成 Address,也不要把 Path 当成订阅链接的路径。

TLS 开启:服务端已提供 TLS 入口

推荐

按已有配置启用 TLS,并核对 Server Name 与证书。这里推荐的是匹配已提供的安全入口,不是给任意端口强行增加 TLS。

适合:服务商明确提供 TLS 参数、证书与域名对应的连接

TLS 关闭:服务端明确要求非 TLS 入口

仅按既有部署要求使用。VLESS 基础协议不加密,不能因关闭 TLS 后暂时可连,就将此状态当成通用方案。

适合:已确认其他安全封装或受控测试环境的参数核对

结论:先对齐 TLS 与传输,再检查认证

出现证书名称错误时,先核对 Server Name、设备时间与证书状态;出现 WebSocket 握手失败时,先核对 Host、Path 和传输选择。不要用关闭证书校验来替代修正配置。

例如,已有配置指定 TLS、Port 为 443、WebSocket Path 为 /proxy,就应逐项保留这些值。将 Path 改成 /,即使地址、端口、UUID 都没有变化,也可能无法到达同一个服务。路径是否区分大小写、是否包含查询参数,以原配置为准。

四、在 Add Server 中按顺序填写

在 Home 中通过添加按钮进入 Add Server。优先导入用户已有的服务商配置,再打开条目核对;只有拿到完整参数时才手动录入。不同 Type 展示的字段会有差异,未出现的选项不要通过另选协议来强行补齐。

  1. 选择 Type。原配置为 VMess 就选择 VMess,为 VLESS 就选择 VLESS。名称相似不表示认证格式兼容。
  2. 填写连接入口。逐项录入 Address、Port,确认没有把域名后的路径一起粘贴到地址中。
  3. 填写身份参数。将 UUID 放入对应认证字段。VMess 的加密相关参数按原配置填写,不凭经验更改。
  4. 设置传输。根据原配置选择 TCP 或 WebSocket 等已支持的方式;使用 WebSocket 时继续核对 Host 与 Path。
  5. 核对 TLS。按原配置设置 TLS 与 Server Name。原配置要求的其他安全参数也需要匹配;不能仅凭“VLESS + TLS”几个字推断完整配置。
  6. 保存并选择条目。返回 Home,确认选中刚保存的服务器,再执行同一目标的连接测试。

通过订阅导入时,服务器条目参数与 Config 规则是两个层面的内容。订阅更新可能重新写入服务器参数;排查前保存原始信息,避免临时编辑在下一次更新后被覆盖。订阅地址中可能包含访问凭据,截图或咨询时应遮去完整链接与 UUID。

五、连接失败:区分协议问题与分流问题

Home 中开关开启,只能说明连接流程已启动,不能证明选中的服务器已完成认证,也不能证明当前网页经过了它。Global Routing 决定流量怎样分配,服务器的 Type 则决定与服务端怎样通信。两者属于不同层面。

核对方案:服务器连接与 Config 规则分开测试

先检查服务器连接
  • 记录当前 Global Routing 与服务器选择。
  • 临时使用 Proxy 测试普通网页请求,减少 Config 规则的影响。
  • 固定同一个 HTTPS 测试目标,只改一项参数。
  • 若持续失败,依次核对入口、TLS、传输与 UUID。
再检查 Config 分流
  • 服务器确认可用后,恢复原来的 Global Routing。
  • 在 Config 中核对当前实际启用的配置。
  • 检查 DOMAIN-SUFFIX 等规则是否先于 FINAL 命中。
  • 若仅特定域名失败,再核对 DNS 与实际命中策略。

Proxy 测试用于缩小排查范围,不会把 VMess 转换成 VLESS;完成后恢复日常设置。

Direct 用于直连,不能拿它验证代理服务器是否可用。Scene 涉及按场景采用的设置,也不等于某一种固定协议。若连接状态会自动变化,还应查看 Settings → On Demand,记录已有触发条件;不要在不清楚原设置用途时反复切换。

  • 连接超时:优先检查地址解析、端口可达性、当前网络与服务端状态;超时本身不能证明 UUID 错误。
  • 证书错误:核对 Server Name、设备日期时间、证书有效状态与信任链,不直接跳过校验。
  • WebSocket 握手错误:核对传输是否一致,以及 Host、Path 是否完整,反向代理是否仍提供该路径。
  • 认证后立即断开:核对协议类型、UUID 与服务端限制;若使用 VMess,也检查设备时间是否准确。
  • 只有部分网站失败:记录域名、Global Routing 与规则命中情况,再判断是 DNS、规则还是目标服务问题。

六、常见问题:更换协议前先核对这些条件

把 Type 从 VMess 改成 VLESS,就能直接用了?

不能。先向已有服务商核对是否提供对应的 VLESS 入口,再使用完整配置。即使 Address、Port、UUID 看起来相同,服务端也必须接受相应协议。保留原条目,新建测试条目更便于恢复。

VLESS 写着 none,是不是应该关掉 TLS?

不是。VLESS 相关的 none 值与外层 TLS 是不同层面的参数。返回条目的 TLS 相关设置,按原配置核对启用状态与 Server Name,不根据这个值单独决定关闭 TLS。

同一个服务器,VLESS 一定比 VMess 快吗?

不能仅凭协议名称判断。固定网络、目标、传输方式与测试时段,再观察可达性、延迟与持续传输表现。服务端负载、链路丢包和外层传输都可能改变结果,单次测速不足以说明协议优劣。

手动修改后能连,更新订阅又失败了怎么办?

对照更新前后的 Type、Port、TLS、Host 与 Path,确认是否被订阅内容重新写入。将必要参数记录在本地,向已有服务商核对订阅输出。不要反复覆盖原条目而不保留差异。

选择顺序应当是:先确认已有服务提供什么完整配置,再确认 Shadowrocket 支持该组合,最后进行同条件测试。协议名称只是入口信息,能否连接取决于所有参数是否匹配。需要继续查看 Home、Config 与 Settings 的基础操作,可使用下方教程入口。

App Store 正版核对