本文速览

Shadowrocket(小火箭)中的 VMess 与 VLESS 不能只改 Type 就互相转换。两者都可使用 UUID 识别用户,但协议加密机制不同,传输方式与 TLS 仍需分别核对。本文面向已经持有自己的服务器参数或订阅的用户,按协议、身份、传输、安全层四个部分说明填写顺序,并给出连接失败时的检查方法。

VMess 与 VLESS 的核心区别

先按服务端配置选择协议,不要按名称新旧判断。VMess 是带认证与协议层加密机制的代理协议;VLESS 的常用配置不在协议本身提供载荷加密,通常需要由 TLS 等外层机制保护传输。两者都可以配合不同的传输方式,因此“VMess 就是 WebSocket”“VLESS 就是 TLS”都不是准确的对应关系。

VMess 与 VLESS 配置要点对照
核对项VMessVLESS
用户身份通常使用 UUID,必须与服务端用户配置一致。通常使用 UUID,必须与服务端用户配置一致。
协议层加密具有协议层加密机制,具体方式按服务端要求设置。常见配置的 Encryption 为 none,保护传输需另外配置。
TLS可另外使用,不等同于 VMess 自身加密。常见部署使用 TLS 等外层保护,不能仅凭协议名判定已加密。
传输方式必须匹配服务端,例如 TCP 或 WebSocket。同样必须匹配服务端,不能直接复用另一条记录的传输参数。
切换方法取得对应服务端的完整配置后新增或导入记录,而不是仅修改 Type。

VMess 的 AEAD 认证与载荷加密是相关但不同的概念,AEAD 也不是 TLS 开关。若旧参数含有 AlterId,不应自行换成某个数值尝试兼容;应向已有服务的管理方确认当前有效配置。VLESS 若额外提供 Flow 等参数,也需要客户端与服务端共同支持并正确对应,不适合凭其他记录补填。

UUID 是身份凭据,不是加密方式

UUID 的作用是让服务端识别允许使用该服务的用户。相同格式不代表两种协议可以共用一个账号配置:服务端需要在对应协议的用户列表里配置该身份,地址、端口和其他参数也必须匹配。复制 UUID 时多出一个空格、遗漏一个字符,都会使认证条件发生变化。

128 bit
UUID 的标准长度
8-4-4-4-12
常见 UUID 文本的分组形式
443
常见 TLS 端口示例,不代表该端口一定启用 TLS

判断方法:把身份、端口和 TLS 分开核对

UUID 格式正确只能说明文本形式看起来符合要求。继续对照服务端确认用户是否有效、端口是否对应当前协议、TLS 是否启用;不要用“UUID 没变”作为其余配置可以照搬的依据。

协议、Transport 与 TLS 分别控制什么

可以将一条服务器记录理解为几层独立设置:VMess 或 VLESS 决定代理协议,TCP、WebSocket 等决定数据如何承载,TLS 决定是否在外层建立受保护的连接。WebSocket 本身不等于 TLS;启用 TLS 的 WebSocket 与未启用 TLS 的 WebSocket,对端要求也不同。

以已有的 WebSocket 加 TLS 配置为例,服务器地址负责找到连接目标,Port 指向监听端口,WebSocket 的 Host 和 Path 负责匹配服务端路由,TLS 的 Server Name(SNI)用于握手时声明目标名称。它们可能使用同一个域名,也可能按部署方式分别指定,不能看到几个输入框都涉及域名就统一改成服务器 IP。

TLS 开启,按服务端校验证书

推荐

在服务端提供 TLS 的前提下,填写其指定的 Server Name,并保持证书校验。遇到证书错误时,先检查名称、设备时间和服务端证书,而不是直接跳过验证。

适合:已有服务端明确要求 TLS 的 VMess 或 VLESS 配置

TLS 关闭,按服务端明确要求连接

只用于服务端确实提供相应连接方式的配置。关闭 TLS 不会自动启用其他保护机制;尤其是 VLESS,不能将 Encryption 的 none 理解为已经具备传输加密。

适合:已确认保护边界的受控网络测试或明确指定的部署

上面的推荐针对 TLS 设置,不是要求把所有已有记录强行打开 TLS。若服务端端口只接受未启用 TLS 的连接,单独打开客户端 TLS 会导致握手失败。同样,端口号为 443 只是常见部署习惯,不是协议或加密状态的证明。

在 Add Server 中按什么顺序填写

有完整订阅或分享配置时,先导入再逐项核对,通常比手工重新录入更容易保留参数。手动填写时,从 Home 右上角的添加入口进入 Add Server,先选择 Type,再依据该类型显示的字段填写。不同类型与应用界面状态下,可见字段会变化,以下是核对逻辑,不要求每个字段都同时出现。

  1. 确认 Type。服务端是 VMess 就选 VMess,是 VLESS 就选 VLESS。类型不一致时,后续字段即使相同也不能视为有效配置。
  2. 填写地址与 Port。地址字段填主机名或 IP,不要附上网页路径。端口按服务端原值填写;例如服务端提供 8443,就不能因为启用 TLS 而擅自改为 443。
  3. 填写 UUID。使用当前记录对应的用户身份。VMess 的加密选项、VLESS 的 Encryption 或 Flow 等附加项,均以已有服务配置为依据。
  4. 核对 Transport。若服务端使用 WebSocket,就核对 Host 与 Path;如果使用其他传输方式,不要照搬 WebSocket 字段。
  5. 核对 TLS。检查是否启用、Server Name 是否正确,以及证书校验设置。地址是 IP 时,服务端仍可能要求域名形式的 Server Name。
  6. 保存并选中记录。返回 Home,在 SERVER 列表选择刚保存的服务器,再进行连接验证,避免测到之前选中的其他记录。

连接失败时,按现象缩小范围

先确认实际使用的是哪条服务器记录,再判断失败发生在哪一层。Home 中连接开关开启,表示本地连接流程已启动,不代表远端认证、TLS 握手和目标网页访问全部成功。Connectivity Test 可以作为初步检查,但单次结果不能覆盖所有域名、所有规则与所有应用。

UUID 一样,为什么从 VMess 改成 VLESS 就连不上?

恢复原记录,不要继续只修改 Type。向已有服务的管理方核对是否提供 VLESS 入口,并取得其端口、UUID、Transport 和 TLS 参数。两种协议的握手不同,同一 UUID 不会让服务端自动切换协议。

出现 TLS 相关错误,要先改哪里?

打开该服务器的编辑页,先核对 TLS 是否与服务端一致,再检查 Server Name、设备系统时间和证书域名。如果地址使用 IP,仍需核对原配置要求的 SNI;不要用关闭证书校验代替定位问题。

WebSocket 连接失败,UUID 正确还要看什么?

依次核对 Port、TLS、WebSocket Host 与 Path。若连接记录提供了 HTTP 状态码,404 可能提示路径或反向代理路由不匹配,403 可能涉及访问限制;这些只是排查线索,不能仅凭状态码断定 UUID 有误。

Connectivity Test 有结果,网页却打不开?

先检查 Home → Global Routing。Direct 不适合验证所选代理的网页访问;Config 会受规则影响。可临时切到 Proxy、选中目标记录后重新访问同一网页,再恢复原设置;若仅 Config 下失败,继续核对规则与 DNS。

排查时一次只改一项,并记录修改前后的现象。若同时更换协议、端口、SNI 和 Path,即使后来恢复连接,也无法确定真正的原因。对于由订阅管理的记录,还应先保留问题信息并核对更新后的参数,避免本地手工修改在下次订阅更新时被覆盖。

如何选择与验证,而不是只看协议名称

普通用户的选择顺序是:先确认已有服务支持什么,再确认 Shadowrocket 中的参数能否完整对应,最后比较实际使用结果。VLESS 的协议设计更精简,不等于在任意线路上都更快;VMess 提供协议层加密,也不等于可以忽略 TLS、证书或服务器身份。延迟、拥塞、服务端负载和传输方式都会影响体验。

结论:先保留完整配置,再比较连接结果

为 VMess 与 VLESS 分别保留独立记录,逐项核对身份、传输和 TLS,在相同条件下验证。只有一条有效配置时,先把它稳定用通,不要通过猜测字段来追求另一种协议。