本文适合已经有自己的服务商与配置、准备在 Shadowrocket(小火箭)中添加 VMess 或 VLESS 的用户。先分清协议、传输与 TLS 三层,再按 Address、Port、UUID、Host、Path 的顺序核对。读完可以判断哪些字段必须逐字复制,哪些设置不能凭协议名称推测;本文不提供线路或订阅。
VMess 与 VLESS:认证相近,加密职责不同
VMess 与 VLESS 都是客户端和服务器之间使用的代理协议,不是服务器地址,也不是传输方式。两者通常使用 UUID 标识用户,但协议握手不同,不能把已有 VMess 记录的 Type 改成 VLESS 就继续使用。服务器端必须提供对应协议的入口。
VMess 支持协议层的数据加密,具体采用什么方式取决于配置。VLESS 本身不提供这一层的数据加密,通常结合 TLS 等安全层使用。因而,“VLESS 没有协议层加密”不等于“VLESS 连接必然明文”,也不能据此把客户端的 TLS 关闭。
| 核对项 | VMess | VLESS |
|---|---|---|
| 用户认证 | 通常使用 UUID,需与服务器记录一致 | 通常使用 UUID,需与服务器记录一致 |
| 协议层加密 | 支持,由配置指定 | 不提供这一层的数据加密 |
| TLS | 是否启用由服务器入口决定 | 通常结合安全层,仍须以配置为准 |
| 传输方式 | 需要匹配服务器,例如 TCP 或 WebSocket | 同样需要匹配服务器,不能由协议名推断 |
| 额外参数 | 若配置含 AlterId,须原样核对 | 若配置含 Flow,须核对对应支持条件 |
判断:先确认服务器入口,再选择 Type
打开已有配置的说明,确认其明确标注 VMess 还是 VLESS。只有服务器另行提供了另一种入口时,才建立另一条记录;不要通过更改 Type 尝试“升级协议”。
协议名称本身不能说明连接一定更快。网络路径、服务器负载、传输配置与证书状态都会影响结果。排查时保留原记录,另建测试记录,比在同一条记录里同时改动多个字段更容易定位问题。
Add Server:先填 Address、Port 与 UUID
在 Home 点右上角的添加按钮进入 Add Server,先选 Type,再填写对应协议出现的字段。不同 Type 显示的选项可能不同;本文用 UUID 指服务商提供的用户标识,在表单中也可能以 User ID 一类字段名呈现。不要把它误当成备注或订阅访问令牌。
- 核对 Address。填写服务器域名或 IP 地址。若资料将地址与端口分开给出,就分栏填写,不要在地址前加网页协议前缀,也不要把 WebSocket 的 Path 拼到地址后面。
- 核对 Port。填写服务商指定的整数端口。例如配置给出
443就填443;该数字常用于 TLS 服务,但它本身不能证明此入口已启用 TLS。 - 核对 UUID。复制完整内容,检查前后空格、缺失字符与换行。常见 UUID 表示为用连字符分组的 32 个十六进制数字,不要自行生成一个替换服务器已分配的值。
- 核对协议附加项。VMess 的加密相关选项、AlterId,以及 VLESS 配置中的 Flow 等参数,均以已有配置为准。没有给出的项目,不从其他记录里随意照抄。
- 保存并回到 Home。确认 SERVER 列表中出现新记录,且当前选中了这条记录。列表出现记录只表示保存完成,还不是连通成功。
如果通过自己的订阅导入了记录,优先查看导入结果,而不是再手填一份。订阅内容可能同时带入传输和安全参数;只复制地址、端口与 UUID,仍可能遗漏决定连接能否完成的字段。手动编辑订阅生成的记录前,先保留独立副本,避免更新后改动被覆盖。
传输方式:TCP、WebSocket 与 Host、Path 的关系
传输方式决定代理数据如何承载,不负责替换 UUID 认证。VMess 和 VLESS 都可能使用不同传输方式,具体以服务器配置及当前客户端支持为准。选择 WebSocket 后,Host 与 Path 才有相应的请求语义;不能把它们当成所有连接都必须填写的通用字段。
| 字段 | 作用 | 常见填错方式 |
|---|---|---|
| Transport | 选择与服务器匹配的传输方式 | 服务器要求 WebSocket,客户端仍使用 TCP |
| Host | WebSocket 握手中的 HTTP Host,可参与服务路由 | 把服务器 IP 自动当作 Host,覆盖原来的域名 |
| Path | WebSocket 请求路径,例如 /ws | 漏掉开头的斜杠,或擅自更改大小写 |
| SNI | TLS 握手使用的服务器名称 | 误以为填写 Host 就必然同步设置了 SNI |
例如,配置说明写明 Address 为 edge.example.com、Port 为 443、Transport 为 WebSocket、Host 为 gateway.example.com、Path 为 /ws。这些只是字段关系示例,不是可用服务。Address 与 Host 不同并不必然有错,不应为了看起来整齐就将两者改成一致。
- Path 按原值复制,包括大小写、结尾斜杠以及配置明确给出的查询部分。
- Host 不填写整条网页地址;若表单将 Host、Path 分开,就分别填写。
- 如果服务商给的是其他传输方式,按其专用字段核对,不强行套用 WebSocket 的 Host 与 Path。
TLS:按入口要求启用,不用端口号代替判断
TLS 负责连接安全层。启用后,需要核对服务器名称与证书验证,不能只看开关是否打开。Address 可以是连接目标的 IP 或域名,SNI 则是 TLS 握手中使用的名称;在需要域名验证的配置中,应按资料填写对应域名。
以下比较的是同一客户端中的安全设置方式,不是对 VMess 与 VLESS 做优劣排名。推荐项的前提是服务器明确提供 TLS 入口;如果配置使用其他安全机制,应按该机制的参数单独核对。
TLS 入口:启用验证并核对 SNI
推荐服务器要求 TLS 时启用 TLS,按配置填写 SNI,并保留证书验证。证书报错时先检查域名、系统时间与服务器证书,不把跳过验证作为常规处理方式。
适合:服务商明确提供 TLS 入口,且证书与指定名称匹配
非 TLS 入口:仅按明确配置设置
只有资料明确说明不使用 TLS 时,才按该入口要求关闭。VMess 的协议层加密与 TLS 不是同一层;VLESS 也不能仅凭协议名判断完整连接的安全性。
适合:已有配置明确指定非 TLS 入口,并已说明其安全层安排
判断:证书错误先核对名称,不先放宽验证
将配置中的 SNI 与当前填写值逐字对照,再到系统设置核对日期与时间。名称与时间正确仍失败时,向自己的服务商确认服务器证书状态。
Host 和 SNI 即使经常填写同一个域名,也不代表二者等价。前者属于 HTTP 请求,后者属于 TLS 握手。错误可能发生在不同阶段:TLS 未通过时,后面的 WebSocket 请求还没有机会完成。
保存后连不上:按连接阶段逐项排查
Home 中开关已开启,说明本地 VPN 配置已开始工作,不等于远端已完成认证。Connectivity Test 显示延迟也只能证明对应测试获得了结果,不能单独证明 UUID、WebSocket 握手与所有网页请求都正常。下面按顺序操作,每次只改一组参数。
- 确认选中记录。回到 Home 检查 SERVER 中当前选择,避免编辑了新记录,实际仍连接旧记录。
- 确认基础可达。运行 Connectivity Test。若超时,先核对 Address、Port 和当前网络;超时不能直接归因于 UUID 错误。
- 确认认证与传输。重新核对 Type、UUID、VMess 附加项或 VLESS 的 Flow,再检查 Transport、Host 与 Path。不要同时切换协议和传输方式。
- 确认 TLS。核对 TLS 开关、SNI 与证书相关错误。设备时间不正确也可能干扰验证与认证,应先恢复正确时间。
- 隔离规则影响。在 Home → Global Routing 临时选择 Proxy,使用已选记录测试同一个目标。Proxy 用于将此处测试尽量交给代理路径,测试结束恢复原模式;它不会修复服务器字段。
- 恢复日常配置。如果 Proxy 下可用而 Config 下失败,转到 Config 核对当前配置及规则去向,检查是否命中 Direct 或 REJECT。若只在域名访问时失败,再检查 DNS,而不是继续随机修改 UUID。
Global Routing 中的 Direct 不用于验证远端代理是否工作;Config 按所选配置处理连接;Scene 还应检查当前场景实际采用的策略。若连接会自动重新开启,可到 Settings → On Demand 核对自动连接条件。On Demand 控制连接触发,不会修正 VMess 或 VLESS 的字段。
常见问题:改协议、端口与订阅更新
同一个 UUID,为什么 VMess 能连,改成 VLESS 就不行?
UUID 只是认证资料的一部分,两种协议的握手并不相同。回到 Add Server,将 Type 恢复为原配置指定值。若确实要使用 VLESS,应向自己的服务商确认是否另有 VLESS 入口,以及对应端口、传输与安全参数。
Port 填 443,是不是就必须打开 TLS?
端口号不是安全设置声明。打开当前记录,按原配置分别核对 Port 与 TLS;只有资料明确指定 TLS 才按要求开启。不要把其他记录的端口与 TLS 开关拼成一份新配置。
UUID 看起来一样,还是认证失败,先查哪里?
先重新复制完整 UUID,删除前后空白,再核对 Type 与协议附加项。随后检查设备时间和账户状态;是否过期、是否被停用需要由自己的服务商确认,单靠本地表单无法判断。
手动修好了,为什么订阅更新后又变回去?
订阅更新可能按远端内容重建或覆盖记录。先保留一条独立的手动记录做对照,再更新自己的订阅,逐项比较差异。若远端字段持续错误,将脱敏后的差异反馈给自己的服务商,不要反复覆盖全部配置。
最终检查标准是:选中了预期记录,协议与服务器一致,传输和 TLS 字段均匹配,并且在明确的 Global Routing 模式下能完成实际目标访问。保存成功、开关开启、测试出现延迟分别对应不同阶段,不能相互替代。更多基础操作可查看使用说明;涉及 DNS 与规则去向时,继续查看故障排查。