本文适合已经持有服务参数或订阅、准备在 Shadowrocket 中核对 VMess 与 VLESS 设置的用户。先分清协议、身份凭据、传输方式与 TLS 四个层次,再按 Home → Add Server 的填写顺序检查字段。读完可以判断 UUID、alterId、加密选项、Host 与 SNI 分别解决什么问题,并按错误发生的阶段定位连接故障。
一、VMess 与 VLESS 的区别:协议加密不等于 TLS
Shadowrocket(小火箭)在服务器条目中保存连接参数。VMess 与 VLESS 是协议类型,不是 Global Routing 的分流姿态,也不是 TLS 的开关名称。选择哪种类型首先取决于已有服务端的配置,不能只改客户端的 Type,就把同一条服务从 VMess 转成 VLESS。
VMess 提供协议层的认证与可选的数据加密机制,常见加密选项包括 auto、aes-128-gcm 与 chacha20-poly1305。VLESS 本身不提供通用的数据加密层;常规配置中的 encryption=none 描述的是这一层,不代表外层 TLS 也应关闭。两种协议都需要按服务端要求配置传输与安全层。
| 检查项目 | VMess | VLESS |
|---|---|---|
| 身份凭据 | 通常使用 UUID;必须与服务端一致 | 通常使用 UUID;必须与服务端一致 |
| 协议层加密 | 可配置加密方式;依服务参数填写 | 常规 encryption 值为 none,不在这一层提供数据加密 |
| alterId | 历史兼容参数;现代 VMess AEAD 配置通常为 0 | 不使用该参数 |
| TLS 与传输 | 独立核对,不能从协议名推断 | 独立核对,不能从协议名推断 |
VLESS 的 flow 也不是 VMess 加密方式的替代字段。若已有参数明确给出 flow,应确认所选类型、传输与安全配置是否支持该组合,按原值填写;普通 VLESS 配置不要自行添加。协议名相同,并不意味着所有扩展组合都可以互换。
二、按 Add Server 顺序核对 Address、Port 与 UUID
在 Home 点击右上角添加入口,进入 Add Server,先在 Type 选择 VMess 或 VLESS,再填写其余字段。不同类型显示的字段不同;界面标签也可能随应用语言与版本调整。应核对字段含义,不要为了找到一个名称相近的选项而改动协议类型。
- Address:填写已有服务提供的域名或 IP 地址。常见独立地址字段不包含
https://、路径或订阅查询参数;不要把完整订阅链接粘到这里。 - Port:填写服务端实际监听的端口。示例中的
443只是演示值,不能据此认定所有 TLS 服务都使用同一个端口。 - UUID:逐字符复制已有凭据,去掉首尾空格和换行。外观符合 UUID 格式,只能说明格式可能正确,不代表服务端已授权这个身份。
- 协议专属字段:VMess 核对加密选项与 alterId;VLESS 核对已有参数中的 encryption、flow 等内容。没有对应字段时,先确认类型和支持情况,而不是把值塞入备注。
- 传输与 TLS:接着检查 Transport、TLS 以及相应子项,全部核对完再保存。备注用于区分条目,不参与服务器认证。
例如 123e4567-e89b-42d3-a456-426614174000 只用于展示 UUID 的文本结构,不是可用凭据。UUID 也不能与订阅 URL 中的 token 混用:前者是服务器认证信息,后者可能是获取整份订阅的凭据。排障时不要公开其中任何一种真实值。
三、VMess 的 alterId 与加密选项怎么填
alterId 是 VMess 历史配置中的兼容参数;部分分享数据用 aid 表示同一项。现代 VMess AEAD 配置通常使用 0。这里的 0 不表示关闭身份认证,也不等于关闭 TLS。若收到的旧参数含非零值,应先向原有服务方确认兼容要求,不要把它当作提升速度的数字随意增减。
- 已有参数为 auto:按原值选择,让实现使用适用的加密方式;不要只因设备型号不同就改成另一个值。
- 已有参数明确指定算法:核对是否支持并按值填写。加密选项解决的是 VMess 协议层的数据处理,不是证书域名匹配。
- 看到 none 或 zero:不要把它们当作 auto 的通用替代值;这些选项有特定含义与适用条件,需要和服务端配置一起确认。
- 导入后没有独立 alterId 输入项:先保留导入结果,核对原始参数及当前支持情况。不要把数字追加到 UUID、Address 或 Port 中。
VMess 认证还与时间有关。若参数完全一致却持续认证失败,可检查 Apple 设备的系统日期与时间是否准确,并使用系统允许的自动时间设置。时间校正只能排除这一类因素,不能修复错误的 UUID、失效的授权或无法到达的服务器端口。
四、Transport、TLS、Host 与 SNI 分别对应什么
Transport 决定协议数据如何承载,例如 TCP 或 WebSocket;TLS 负责安全连接与证书校验。Address 是建立网络连接的目的地址,SNI 是 TLS 握手中使用的服务器名称,WebSocket 的 Host 是 HTTP 请求头字段。它们在某些配置中相同,在另一些配置中不同,不能互相代填。
| 字段或参数 | 填写依据 | 错填后的常见表现 |
|---|---|---|
| Transport | 与服务端实际传输方式一致,如 WebSocket | 端口可达,但无法建立后续协议连接 |
| Path | 例如 /edge;保留开头斜杠、大小写及必要查询参数 | WebSocket 握手失败,可能收到 HTTP 404 |
| Host | 已有服务要求的 HTTP Host,例如 edge.example.com | 请求进入错误站点,可能出现 403 或 404 |
| TLS / SNI | 按服务要求启用 TLS,填写规定的服务器名称 | 证书名称不匹配,或 TLS 握手失败 |
表中的域名与路径均为文本示例,不是连接入口。HTTP 状态码也只是排查线索,不能单凭一个 403 或 404 就确认是哪一项错误;反向代理的配置也可能产生相同结果。需要将服务端要求的 Host、Path 与客户端当前值逐项对照。
按已有参数启用 TLS,并校验证书
推荐服务明确要求 TLS 时,保持 TLS 开启,填写正确的 SNI,并保留证书校验。证书错误应先检查设备时间、域名与服务端证书,而不是直接跳过验证。
适合:已有参数明确使用 TLS 的 VMess 或 VLESS 连接
按已有参数不启用 TLS
仅在服务端明确采用非 TLS 传输时保持关闭。客户端单方面开启 TLS 会导致握手不匹配;VLESS 本身不提供数据加密,不能把普通非 TLS 连接当作等价的加密连接。
适合:服务方明确说明的受控测试或其他既定安全封装场景
结论:TLS 报错时先查名称,不先改 UUID
若错误明确发生在证书校验阶段,先对照 SNI、证书覆盖的域名和设备时间;保持 UUID 与传输参数不变,修正后再测试,这样才能判断是哪一项产生影响。
五、保存后如何验证:把连接故障与分流故障分开
保存服务器只完成了参数录入,不表示该条目已经用于当前连接。在 Home 点选目标服务器,将其设为当前使用的条目,再打开连接开关;首次连接时按系统提示允许添加 VPN 配置。随后运行 Connectivity Test,并记录所测条目、Global Routing 姿态以及失败提示。
- 先看基本可达性:若提示超时,先核对 Address、Port 和当前网络。端口不通时,反复更换 UUID 或 WebSocket Path 通常不能解决问题。
- 再看安全与认证:证书错误检查 TLS 与 SNI;认证失败检查 UUID、VMess 的 alterId 和设备时间。错误名称以实际显示为准。
- 再看应用层传输:若 TCP 能建立但 WebSocket 连接失败,对照 Transport、Host 与 Path;仅有延迟数值不能证明整个代理链路可用。
- 最后检查路由:Global Routing 的 Direct 不会用代理验证目标流量;Config 按配置规则处理连接。需要排除规则影响时,可临时用 Proxy 做同一目标的对照测试,结束后恢复原姿态。
在 Config 姿态下,DOMAIN-SUFFIX、GEOIP、IP-CIDR 与 FINAL 等规则决定连接交给哪种策略,不能修复协议认证失败。例如 DOMAIN-SUFFIX,example.com,PROXY 表示匹配该域名后缀后交给 PROXY 策略;如果该策略实际选择的不是刚编辑的条目,修改结果就没有被当前请求使用。
若需要手动控制测试时机,可同时检查 Settings → On Demand 的现有配置,避免自动连接行为打断观察。排障期间一次只改变一个字段,并在切换服务器或关键参数后重新连接;不要同时修改协议、TLS、规则与 DNS,否则即使恢复正常,也难以确认原因。
六、UUID、订阅导入与协议切换常见问题
同一个 UUID 能从 VMess 直接改成 VLESS 吗?
不能仅凭 UUID 相同就切换。先确认服务端确实提供 VLESS 入口,再在 Home → Add Server 新建对应类型,填入该入口的地址、端口、UUID、传输与安全参数。保留原条目便于对照,不要直接覆盖唯一可用的配置。
VLESS 的 encryption 是 none,为什么还要开 TLS?
两者处于不同层次。encryption=none 表示 VLESS 本身没有提供这层数据加密;服务要求 TLS 时,仍应在条目中启用 TLS,并填写正确的服务器名称。不要根据 none 自动关闭 TLS。
订阅里已经有条目,还需要逐个手填吗?
通常不需要。已有订阅应在 Home 的添加入口选择 Subscribe,将完整订阅地址填入 URL,保存并更新。打开导入的服务器条目核对字段即可。订阅地址负责获取条目,不是 VMess 或 VLESS 的 Address。
刚改好 Host,更新订阅后为什么又变回去了?
订阅条目由订阅内容维护,更新可能覆盖本地修改。先保存需要对照的参数,再为排障单独建立手动测试条目;长期修正应核对原订阅内容。不要把本地临时修改视为订阅源已经更新。
两种协议都能导入,应该保留哪一种?
先分别验证认证、TLS 和传输参数,再在同一网络、同一目标与相同分流姿态下测试。保留与已有服务配置匹配且测试通过的条目;协议名称本身不能保证延迟或吞吐表现,也不能替代实际连通性检查。
本文以用户已有自己的服务与订阅为前提,只解释字段与操作。提交排障信息时,可提供协议类型、传输方式、TLS 是否启用、错误阶段以及脱敏后的字段结构;UUID、完整订阅 URL 和其他认证信息应保持私密。