本文面向已经持有自己的服务商配置或订阅、需要在 Shadowrocket(小火箭)中核对 VMess 与 VLESS 的用户。先分清协议加密与 TLS 的边界,再按地址、端口、UUID、传输参数逐项检查;读完可以判断哪些字段必须照原配置填写,以及导入成功却无法访问时应从哪一层开始排查。
VMess 与 VLESS:区别在协议层,不是两个速度档位
VMess 和 VLESS 都是连接配置中的协议类型,不是 Global Routing 的模式,也不是套餐名称。服务端采用什么协议,Shadowrocket 就必须选择对应的 Type。把已有 VMess 条目的 Type 改成 VLESS,保留相同地址和 UUID,并不能完成转换;服务端的入站协议及相关参数也必须匹配。
VMess 包含协议层的认证和数据保护机制,常见配置使用 AEAD 认证;负载的加密方式仍应按原配置核对。VLESS 采用更精简的协议结构,本身不提供负载加密,通常需要依靠 TLS 等外层安全机制保护传输。因此,“VLESS 没有协议内加密”不等于“使用 TLS 的 VLESS 连接是明文连接”,也不意味着可以随意关闭 TLS。
| 核对项 | VMess | VLESS |
|---|---|---|
| 用户标识 | 通常使用 UUID,须与服务端一致。 | 通常使用 UUID,须与服务端一致。 |
| 协议层加密 | 有相关机制与加密选项,按配置选择。 | 不提供负载加密,不能套用 VMess 的加密选项。 |
| TLS | 可作为外层安全机制,是否启用取决于服务端。 | 常用于保护传输,参数必须与服务端匹配。 |
| 传输方式 | 须核对 TCP、WebSocket 等实际配置。 | 同样须核对传输方式,协议名不能替代这些参数。 |
| 能否直接互换 | 不能只修改客户端 Type;应取得服务端对应协议的完整配置。 | |
实际速度还受线路拥塞、延迟、丢包、服务端负载以及外层传输方式影响。不同地址上的两条连接,即使分别标为 VMess 与 VLESS,也不能用一次测速证明某种协议必然更快。普通用户优先保证配置完整、连接稳定,再在条件相近时比较实际访问表现。
UUID、端口与 TLS:先分清字段负责什么
UUID 是用户标识,不是服务器地址,也不是 TLS 证书中的域名。常见 UUID 文本由 32 个十六进制字符和 4 个连字符组成,分为 8-4-4-4-12 五段。格式正确只说明文本结构符合要求,并不能证明服务端承认这个用户;复制时多带一个空格、漏掉一段,或使用已经失效的 UUID,都可能导致认证失败。
Address 决定连接到哪里,Port 决定连接到该地址上的哪个入口。即使 TLS 常用 443,也不能把原配置中的其他端口自行改成 443。TLS 的 Server Name(SNI)用于握手时指明目标名称,并参与相关证书核对;它可能与连接地址不同,应以用户已有配置为准。
分层核对:连接入口与外层传输
连接入口与认证
- Type:确认 VMess 或 VLESS,不按名称猜测。
- Address、Port:对应服务端实际监听入口。
- UUID:完整复制,与原配置逐字符核对。
- VMess 加密参数:沿用原配置,不套到 VLESS。
传输与安全设置
- TLS:启用状态与服务端保持一致。
- Server Name(SNI):按原配置填写。
- WebSocket:核对 Path 与 Host。
- Flow、ALPN 等附加项:仅在原配置要求且当前客户端支持时填写。
结论:入口与传输两组参数都要匹配;UUID 正确不能弥补 Path、SNI 或端口错误。
WebSocket 的 Host 与 TLS 的 SNI 属于不同层:前者出现在 HTTP 握手中,后者用于 TLS 握手。服务端可能要求两者相同,也可能采用不同值。Path 通常包含开头的斜杠,例如 /example-path;路径大小写、查询参数及结尾斜杠都应照原配置保留。不要因为它们看起来像域名或网址,就互相替换。
在 Add Server 中填写:保留原参数,逐层保存
Shadowrocket 的 Home 用于管理连接条目和连接状态,Config 用于管理规则配置,Settings 用于应用设置。手动添加 VMess 或 VLESS,应从 Home 的添加入口进入 Add Server,而不是把 UUID 写进 Config 的规则。不同协议会显示不同选项,具体字段以当前界面与服务端配置为准。
- 选 Type。在 Home → 添加入口 → Add Server 中选择 VMess 或 VLESS。先确定类型,再填写其余参数,避免切换类型后遗漏协议专属项。
- 填入口与标识。复制 Address、Port 和 UUID。Address 栏不要额外添加
https://或 WebSocket Path;端口单独填写。 - 核对协议专属字段。VMess 的加密方式及旧配置中的 AlterId 必须与原配置一致;不要把旧式参数随意迁移到 AEAD 配置。VLESS 若包含 Flow 等要求,先核对当前界面是否支持对应值,不自行猜填。
- 配置传输层。原配置使用 WebSocket 时,再填写对应的 Host 与 Path;使用 TCP 时,不应仅因看到某个教程便改成 WebSocket。
- 配置 TLS。按原配置启用 TLS,核对 Server Name(SNI)以及原配置明确要求的附加参数。不要用关闭证书核对的办法掩盖名称不匹配。
- 保存并验证。返回 Home,选择新条目,完成首次连接所需的系统授权,再访问已知可用的 HTTPS 页面;保存成功只代表条目被记录,不代表认证和传输已经成功。
如果已有配置含有客户端未展示的必要参数,不要以“留空也许能用”作为判断依据。先确认原配置是否适用于当前 Shadowrocket,再核对 App Store 中可用的应用更新与服务端提供的字段说明。一次只修改一个变量,并记录修改前后表现,才能区分是输入问题还是连接环境变化。
已有订阅与分享链接:导入方式如何选择
用户已经持有自己的订阅时,优先保持其完整参数。订阅 URL 是获取一组连接信息的入口;以 vmess:// 或 vless:// 开头的分享链接通常描述单个条目。两者不是同一种输入,不能把订阅 URL 直接当成服务器 Address,也不能把单条分享链接当成长期更新的订阅地址。
导入已有完整配置
推荐通过已有订阅或完整分享链接导入,减少 UUID、TLS、Host 与 Path 的转录遗漏。导入后仍要核对协议类型和关键字段,不能仅凭条目名称判断。
适合:已取得适用于 Shadowrocket 的完整订阅或分享链接
Add Server 手动填写
逐项输入能够确认的参数,便于理解字段和进行单变量排查。没有完整字段时,应先核对原配置,而不是用常见默认值补齐。
适合:已有明确参数清单,需要添加单个条目或核对输入错误
编辑已导入条目
仅修改已经确认需要调整的字段,并保留原值记录。订阅更新可能重新生成条目、覆盖本地修改,应区分临时测试与长期配置。
适合:排查某个已知字段,不改变服务端协议与认证信息
结论:先确认信息完整,再判断协议选择
当两条配置只有一条能成功导入并连通时,先比较缺失字段与服务端要求,不要立即归因于 VMess 或 VLESS 的性能;优先使用与现有服务端完整匹配的条目。
添加订阅时,可在 Home 的添加入口选择 Subscribe,填写自己已有的订阅 URL 并保存。用于辨认结构的假值是 https://example.com/sub?token=xxxx,它不提供可用服务。订阅中的 token 与单条配置中的 UUID 都可能涉及访问权限,排查截图应遮住这些值,不要把完整链接贴进公开讨论。
- 订阅获取失败:先核对 URL 是否完整、token 是否仍有效,以及当前网络能否访问订阅地址。
- 订阅更新后无法连接:重新打开条目,检查协议、端口、UUID 和传输参数是否发生变化,避免继续使用旧截图中的值。
- 重复导入后出现同名条目:核对条目的来源和实际字段,名称相同不代表地址与认证信息相同。
- 需要长期保留手动测试:另存独立条目并注明用途,不把订阅自动更新视为本地修改的备份机制。
连接失败如何定位:从入口到规则逐项缩小范围
排查时应区分“应用连接开关已开启”“服务器端口可达”和“目标网页能够访问”这三个层次。系统显示 VPN 状态并不证明远端认证成功;延迟读数也不能代替完整的 TLS、WebSocket 与目标访问验证。以下表现是定位线索,不是某个错误原因的唯一证据。
UUID 看着没错,为什么仍然连不上?
先在 Home 打开条目,核对 Type、UUID 与 Port 是否来自同一份配置。随后核对系统时间和认证信息有效性;若仅复制了 UUID,却沿用了另一个条目的传输设置,仍可能失败。
延迟有读数,网页却一直打不开?
先选择待测条目,把 Global Routing 临时设为 Proxy,再访问同一个已知可用的 HTTPS 页面。若依然失败,继续检查 TLS 与传输;若 Proxy 可用而 Config 不可用,再检查规则及其引用的策略。测试后恢复原模式。
日志提示 TLS 握手或证书错误,该改哪里?
回到条目编辑页核对 TLS、Server Name(SNI)和 Address,并检查系统日期。名称不匹配、证书有效期和服务端配置都可能造成错误;不要直接关闭证书核对,应先确认服务端要求。
WebSocket 出现 HTTP 错误,是 UUID 问题吗?
HTTP 错误可能发生在协议认证之前。先核对传输方式、Host、Path 与 TLS,确认请求到达正确入口。404 常提示路径或入口不匹配,但仍须结合日志与服务端配置判断,不能只凭状态码下结论。
订阅更新以后,之前手动修好的参数又变了?
重新核对更新后的条目与已有订阅内容,确认本地修改是否被覆盖。把临时测试另存为独立条目,并记录具体差异;长期使用仍应以完整、有效的原配置为准。
Global Routing 的 Config 依据当前配置规则处理连接,Proxy 用于让受该模式处理的连接走代理,Direct 用于直连;Scene 涉及场景选择,不是第四种协议。若仅在 Config 下访问异常,应查看 Config 中的 DOMAIN-SUFFIX、GEOIP、IP-CIDR 与 FINAL 的顺序及策略目标,而不是重新更换 UUID。
排查连接自动开启或恢复时,再检查 Settings → On Demand 中的触发条件。On Demand 决定何时按条件发起连接,不会修正 VMess 或 VLESS 的认证字段。为保持测试条件一致,应先记录现有设置,明确这次是在验证手动连接还是验证自动触发,避免把两种问题混在一起。
保存配置前的最终核对
能否使用某个条目,取决于客户端与服务端的协议、认证、传输和安全参数是否一致。VMess 与 VLESS 的选择首先由已有服务端决定;只有服务端提供两种完整配置时,才有条件在同一网络、相同目标和接近的时段下比较实际体验。单次延迟或条目名称不足以说明差异。
- Type 与原配置一致,VMess 和 VLESS 没有通过改名或改 Type 相互转换。
- Address、Port、UUID 完整,端口没有被习惯性改成 443。
- TLS、SNI、WebSocket Host 和 Path 各自按原配置填写。
- 导入后已实际访问测试页面,并区分协议问题与 Config 规则问题。
- 测试过程没有泄露完整订阅 URL、token 或 UUID,临时改动已有记录。
Shadowrocket 是闭源商业应用,主要用于 iPhone 与 iPad,唯一获取入口为 App Store。开发者名称应为 Shadow Launch Technology Limited,应用 ID 为 932747118;客户端一次性买断与用户已有的线路服务是两回事。系统要求与通用购买适用性以 App Store 页面标注为准,购买客户端不会自动生成可用的 VMess 或 VLESS 配置。