Shadowrocket(小火箭)中的 VMess 与 VLESS 不能只改 Type 就互相转换。两者都可使用 UUID 识别用户,但协议加密机制不同,传输方式与 TLS 仍需分别核对。本文面向已经持有自己的服务器参数或订阅的用户,按协议、身份、传输、安全层四个部分说明填写顺序,并给出连接失败时的检查方法。
VMess 与 VLESS 的核心区别
先按服务端配置选择协议,不要按名称新旧判断。VMess 是带认证与协议层加密机制的代理协议;VLESS 的常用配置不在协议本身提供载荷加密,通常需要由 TLS 等外层机制保护传输。两者都可以配合不同的传输方式,因此“VMess 就是 WebSocket”“VLESS 就是 TLS”都不是准确的对应关系。
| 核对项 | VMess | VLESS |
|---|---|---|
| 用户身份 | 通常使用 UUID,必须与服务端用户配置一致。 | 通常使用 UUID,必须与服务端用户配置一致。 |
| 协议层加密 | 具有协议层加密机制,具体方式按服务端要求设置。 | 常见配置的 Encryption 为 none,保护传输需另外配置。 |
| TLS | 可另外使用,不等同于 VMess 自身加密。 | 常见部署使用 TLS 等外层保护,不能仅凭协议名判定已加密。 |
| 传输方式 | 必须匹配服务端,例如 TCP 或 WebSocket。 | 同样必须匹配服务端,不能直接复用另一条记录的传输参数。 |
| 切换方法 | 取得对应服务端的完整配置后新增或导入记录,而不是仅修改 Type。 | |
VMess 的 AEAD 认证与载荷加密是相关但不同的概念,AEAD 也不是 TLS 开关。若旧参数含有 AlterId,不应自行换成某个数值尝试兼容;应向已有服务的管理方确认当前有效配置。VLESS 若额外提供 Flow 等参数,也需要客户端与服务端共同支持并正确对应,不适合凭其他记录补填。
UUID 是身份凭据,不是加密方式
UUID 的作用是让服务端识别允许使用该服务的用户。相同格式不代表两种协议可以共用一个账号配置:服务端需要在对应协议的用户列表里配置该身份,地址、端口和其他参数也必须匹配。复制 UUID 时多出一个空格、遗漏一个字符,都会使认证条件发生变化。
判断方法:把身份、端口和 TLS 分开核对
UUID 格式正确只能说明文本形式看起来符合要求。继续对照服务端确认用户是否有效、端口是否对应当前协议、TLS 是否启用;不要用“UUID 没变”作为其余配置可以照搬的依据。
- UUID 应完整复制,不要把显示名称、订阅 token 或普通登录密码填进该字段。
- 保存前检查首尾空白、换行和字符替换,尤其是跨应用复制后的内容。
- 不要在公开截图中展示 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,再依据该类型显示的字段填写。不同类型与应用界面状态下,可见字段会变化,以下是核对逻辑,不要求每个字段都同时出现。
- 确认 Type。服务端是 VMess 就选 VMess,是 VLESS 就选 VLESS。类型不一致时,后续字段即使相同也不能视为有效配置。
- 填写地址与 Port。地址字段填主机名或 IP,不要附上网页路径。端口按服务端原值填写;例如服务端提供 8443,就不能因为启用 TLS 而擅自改为 443。
- 填写 UUID。使用当前记录对应的用户身份。VMess 的加密选项、VLESS 的 Encryption 或 Flow 等附加项,均以已有服务配置为依据。
- 核对 Transport。若服务端使用 WebSocket,就核对 Host 与 Path;如果使用其他传输方式,不要照搬 WebSocket 字段。
- 核对 TLS。检查是否启用、Server Name 是否正确,以及证书校验设置。地址是 IP 时,服务端仍可能要求域名形式的 Server Name。
- 保存并选中记录。返回 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、证书或服务器身份。延迟、拥塞、服务端负载和传输方式都会影响体验。
- 保持测试条件一致。在同一网络下访问同一个目标,避免把网络切换造成的差异归因于协议。
- 区分路由与协议。Config 按规则选择策略,Proxy 用于让相关代理测试走代理路径,Direct 则用于直连。路由设置不会把 VMess 转换成 VLESS。
- 检查域名访问。服务器可达但域名访问失败时,继续检查 DNS 与规则命中情况,不要立刻重填 UUID。
- 完成手动验证后再配置自动触发。如需 On Demand,再进入 Settings → On Demand 核对条件;自动触发不能修正错误的服务器参数。
结论:先保留完整配置,再比较连接结果
为 VMess 与 VLESS 分别保留独立记录,逐项核对身份、传输和 TLS,在相同条件下验证。只有一条有效配置时,先把它稳定用通,不要通过猜测字段来追求另一种协议。