VMess 与 VLESS 是不同的代理协议,不能通过修改 Type 相互转换。本文面向已经有服务商与订阅的 Shadowrocket(小火箭)用户,按协议、身份凭据、传输层和 TLS 四层拆解参数,再给出导入与排查顺序。读完后可以判断哪些字段需要逐字核对,哪些设置不能凭协议名称自行推断。
一、VMess 与 VLESS 的核心区别是协议层加密
先给结论:VMess 具有协议自身的认证与加密机制;VLESS 将认证与传输保护分开,协议本身不负责载荷加密。VLESS 连接的安全性需要结合实际采用的 TLS 等保护方式判断,不能把“VLESS 本身不加密”理解为“所有 VLESS 连接都以明文传输”。
反过来,VMess 已有协议层加密,也不代表它的 TLS 开关可以随意关闭。服务端如果要求 TLS,客户端仍需按要求建立 TLS 连接。两层设置处理的是不同问题,必须与服务端配置对应。
| 比较项 | VMess | VLESS |
|---|---|---|
| 协议层保护 | 具有协议自身的认证与加密机制 | 进行身份认证,不自行提供载荷加密 |
| 身份凭据 | 通常使用 UUID,必须与服务端对应 | 通常使用 UUID,不能因为格式相同就跨协议复用 |
| 传输组合 | 按服务端要求搭配 TCP、WebSocket 等传输 | 同样需要核对实际传输及相关参数 |
| TLS 设置 | 是否启用、验证哪个名称,由服务端配置决定 | 不能仅凭协议名称推断 TLS 及其他安全选项 |
| 能否直接互换 | 不能。切换 Type 后还需要有对应协议的完整服务端参数 | |
协议名称也不是速度等级。延迟、带宽、链路拥塞、服务器负载以及传输组合都会影响结果。两个名称相近的节点可能使用完全不同的服务器,不能据此判断某个协议一定更快。
二、在 Add Server 中先核对 Address、Port 和 UUID
在 Home 找到要检查的条目并进入编辑界面;手动添加时,从 Home 的添加入口进入 Add Server,再选择对应 Type。字段名称与可见选项会随所选类型变化,核对时应以当前界面和服务商给出的完整参数为准。
- Type:确认是 VMess 还是 VLESS。不要根据节点备注猜测类型,也不要把改 Type 当作升级操作。
- Address:填写实际连接的域名或 IP 地址。它不一定与 TLS 验证名称相同,也不应带入分享链接的协议前缀。
- Port:填写服务端监听端口。例如服务商标注
443时就填443,不要因为开启 TLS 而自行改成这个值。 - UUID:完整保留服务商给出的身份凭据,检查复制时是否混入空格或换行。修改、截短或重新生成后,通常无法通过原服务端认证。
- 附加参数:VMess 的加密选项、VLESS 的 Flow 等参数若在当前界面出现,都需要按服务端要求处理,不能套用另一个条目的值。
常见 UUID 文本采用带连字符的十六进制形式。下面只展示格式,不是可用凭据,也不对应任何服务。两个条目即使 UUID 一样,也可能在端口、传输、安全设置上不同,不能只核对这一项。
00000000-0000-0000-0000-000000000000
三、区分协议、传输层和 TLS,不按端口猜设置
一条连接可以同时包含 VLESS、WebSocket 和 TLS:VLESS 处理代理协议,WebSocket 提供传输方式,TLS 负责相应连接的加密与身份验证。这些名称不互相替代。将 WebSocket 改成 TCP,或关闭 TLS,都可能让客户端与服务端无法完成同一套握手。
启用 TLS 时,还要核对 SNI 或界面中对应的服务器名称字段。Address 可能是入口 IP,而证书对应的是域名;这时不能简单把 IP 复制到名称字段。使用 WebSocket 时,Host 和 Path 又是另一组参数:Host 参与请求路由,Path 指定请求路径,不能因为它们看起来像域名或地址就与 SNI 混填。
- TLS:严格保留服务端要求的开关及验证设置;出现证书错误时先查名称、证书有效性和设备时间。
- SNI:按服务商给出的名称填写,不根据节点备注补写,也不随意替换成访问网站的域名。
- Host:如果传输配置要求此字段,按原值保留;它与 SNI 可以相同,但职责不同。
- Path:包含开头的
/、后续字符及可能存在的查询部分,均应按原参数保留。
结论:先恢复完整参数,再判断协议是否适用
若修改后出现握手错误,先重新导入原始条目并逐项对照 TLS、SNI、Host 和 Path;不要通过关闭证书验证来替代参数核对。
四、订阅同时包含两种类型时,保留导入结果
订阅链接从你的服务商处获取。导入后,Shadowrocket 会按订阅内容生成对应条目;同一订阅包含 VMess 与 VLESS,并不要求用户把它们统一成一种类型。节点备注只是便于辨认的名称,实际协议应在编辑界面的 Type 中确认。
- 在 Home 的添加入口中,按界面选择 Subscribe,粘贴完整订阅链接并保存。不要把某条节点分享内容误当作订阅地址。
- 更新该订阅,确认列表中出现条目,再分别打开一个 VMess 与一个 VLESS 条目核对类型和关键字段。
- 先用原始导入参数测试。若需要修改,记录原值或保留可恢复的副本,避免一次改变多个字段。
- 后续更新可能重新写入订阅管理的条目。长期需要调整的参数,应先与服务商确认来源内容,而不是反复覆盖更新结果。
手动填写更适合已有完整参数、需要逐项确认的情况。如果只有 Address 与 UUID,却缺少传输方式或 TLS 参数,应先补齐信息。不能根据“这是 VLESS”就推断一定使用某种安全组合,也不能为 VMess 随意选择一个加密选项。
五、先确认 Global Routing,再做单变量排查
节点参数与路由模式是两件事。即使条目填写正确,如果当前流量没有走到该条目,也无法用网页表现判断它是否可用。Home 中的 Global Routing 决定流量处理姿态,Config 页面管理的配置文件则提供规则等内容。
Config:按当前配置处理
推荐日常使用已核对的配置,按照规则与策略选择连接方式。未命中的请求如何处理,取决于最终规则及当前配置,并非固定直连。
适合:已确认配置正确后的日常分流
Proxy:缩小规则影响
让由 Shadowrocket 接管的连接使用当前代理策略,便于排除一般规则分流造成的差异;同时确认策略实际选中了待测节点。
适合:临时验证某个 VMess 或 VLESS 条目
Direct:检查直连基线
使用直连方式,不用于验证代理服务器是否可用。网页在 Direct 下能打开,只能说明该次直连访问成功。
适合:对照本地网络与直连访问状况
如果正在使用 Scene,应核对场景实际应用的路由与策略,不能把 Scene 当作另一种节点协议。Config 中的 DOMAIN-SUFFIX、GEOIP、IP-CIDR 和 FINAL 影响请求去向,但不会把 VMess 转成 VLESS,也不会修复 UUID 错误。
- 先确认设备网络可用,再在 Home 选中待测条目;若使用策略组,确认组内实际选择。
- 记录 Global Routing,临时使用 Proxy 对照同一目标,观察是连接超时、TLS 错误还是连接后仍无法访问。
- 只改一项并重试:先查 Address 与 Port,再查 UUID,最后核对传输、TLS 和名称字段。
- 涉及断开后自动重连时,到 Settings → On Demand 检查相关条件,避免把按需连接行为误认为协议切换问题。
- 验证结束后恢复原有路由模式和按需设置,保留可以复现问题的记录。
六、常见问题:UUID 相同、TLS 报错与切换失败
两个节点的 UUID 一样,可以直接把 VMess 改成 VLESS 吗?
不可以据此判断。先在 Home 打开原条目查看 Type,再与服务商提供的对应条目比较。即使身份文本相同,服务端协议、端口、传输与安全设置仍可能完全不同;应导入对应类型的完整参数。
VLESS 没有载荷加密,是不是应该手动打开 TLS?
先确认服务端采用的完整安全组合,再按原参数设置。不能仅凭 VLESS 名称决定开关;如果来源明确要求 TLS,就同时核对 TLS、SNI 和证书验证,不要只打开一个开关便结束检查。
VMess 超时,但 VLESS 能用,是不是 VMess 协议有问题?
先固定网络和测试目标,确认两条连接各自的 Address、Port 与策略选择。VMess 还应检查设备日期与时间是否准确。若不同条目连接到不同服务器,一次成功或超时不足以得出协议层面的结论。
节点有延迟结果,为什么网页还是打不开?
延迟结果不等于完整访问链路已经成功。先确认 Global Routing 与实际代理策略,再用同一目标重试,区分 DNS、TLS、认证和目标站点错误。提供故障信息时记录错误文本,不要只写“有延迟但不能用”。
判断两种节点是否配置正确,最终依据是完整参数能否与服务端对应,而不是名称新旧或字段多少。先保留订阅导入结果,再逐项核对身份、传输与 TLS,通常比反复切换 Type 更容易定位问题。