· 协议科普 · 约 10 分钟

Shadowrocket VMess 和 VLESS 有什么区别:加密、UUID 与传输设置怎么填

从加密层、UUID 认证和传输方式三处说明 VMess 与 VLESS 的差别,对照 Add Server 里各字段的含义,帮你按服务商给的参数正确填写。

本文速览

本文适用于已持有自己服务商参数、需要在 Shadowrocket(小火箭)中导入或手动填写 VMess、VLESS 的用户。先区分协议认证、连接加密和传输封装,再核对 Add Server 中的地址、端口、UUID 与 TLS 设置;出现连接失败时,按字段顺序检查,而不是把协议名称改成另一个试运气。

VMess 与 VLESS:先区分认证、加密和传输

VMess 与 VLESS 都是连接协议,不是连接服务本身。服务端启用哪一种,客户端就必须选择对应类型。即使地址、端口和 UUID 完全相同,把 VMess 条目改为 VLESS 也不会自动完成服务端协议转换。

VMess 可以在协议层提供数据加密;常见的现代配置使用 AEAD 认证机制。VLESS 的基础协议不提供同类的负载加密,通常通过 TLS 等外层机制保护连接。因此,“VLESS 的 Encryption 为 none”与“整条连接没有加密”不是同一件事,要继续查看外层安全设置。

两种协议的字段含义对照
核对项目VMessVLESS
身份认证使用 UUID 等认证参数;现代配置通常采用 AEAD使用 UUID 识别用户;不能据此推断加密方式
协议层加密按服务端要求选择,常见值包括 auto、aes-128-gcm、chacha20-poly1305基础协议的 Encryption 通常为 none,不套用 VMess 的加密选项
外层安全是否启用 TLS 取决于服务端;它与 VMess 协议层加密是不同层次常见部署依赖 TLS 等外层安全机制,必须完整核对
传输方式按服务端要求使用 TCP、WebSocket 等方式同样由服务端决定,不能仅凭协议名推断

同一个协议可以组合不同传输与安全设置。比较连接是否正确时,应比较“协议 + 传输 + 安全参数”这一组,而不是只看 VMess 或 VLESS 两个名称。协议名称也不能单独决定实际速度;本地网络、服务器负载和中间链路都会影响结果。

Add Server:地址、端口与 UUID 怎么填

在 Home 点右上角添加按钮进入 Add Server,先选择 Type,再按已有参数填写。不同 Type 展开的项目不同,界面字段名称也可能随显示语言与应用界面调整;下表按参数含义核对,不要求每个项目都在同一屏出现。

  1. 先保存原始参数。保留服务商提供的完整配置说明。若已有订阅或分享内容,优先导入,再进入条目编辑页核对,不要凭记忆重建。
  2. 填写 Address。这里只放主机名或 IP 地址,例如 example.com。不要把网页地址中的 https://、路径和查询参数一起填入。
  3. 填写 Port。使用服务端给出的数字端口。443 是常见 TLS 端口,但不是所有配置都使用它;不能因为启用 TLS 就把原来的端口改为 443。
  4. 粘贴 UUID。复制完整值,检查首尾空格、漏字符以及换行。UUID 是认证信息,不是备注名称,也不是订阅链接中的 token。
  5. 继续核对传输与 TLS。基础字段正确不代表已经完成配置;保存前还要检查下一节中的配套字段。
36 字符
带连字符的标准 UUID 文本长度
1–65535
TCP / UDP 端口编号范围
443
常见 TLS 端口,不是固定填写值

判断:格式正确不等于认证有效

UUID 即使满足 36 字符格式,也可能不属于当前服务端。地址能解析、端口能连接之后若仍然认证失败,应对照原始 UUID 与账户状态,不要靠生成新 UUID 来修复。

VMess 参数中还可能出现 AlterId。现代 VMess AEAD 配置通常使用 0;不要把旧说明中的其他数值作为通用答案。VLESS 不使用 VMess 的 AlterId 机制,不能把这个字段迁移过去。如果提供的旧参数与当前可选项不一致,应向原参数提供方确认,而不是随意替换。

TLS、SNI、Host 与 Path:分别对应哪一层

Address 决定向哪里建立连接,SNI 用于 TLS 握手中的服务器名称,WebSocket 的 Host 属于 HTTP 请求头,Path 属于请求路径。它们有时相同,有时不同;“都填成服务器地址”并不是通用配置方法。

传输与安全字段检查表
参数填写原则常见错误
Transport与服务端一致,例如 TCP 或 WebSocket把 WebSocket 改成 TCP,却继续保留原端口与其他参数
TLS服务端要求启用时开启,并核对服务器名称与证书只看到 443 就自行开启 TLS
SNI按服务端给定名称填写,通常不含协议前缀或路径填写完整 URL,或使用与证书不匹配的 IP 地址
HostWebSocket 等场景按服务端指定请求头填写误以为修改 Host 会同时修改 TLS 的 SNI
Path完整保留路径、大小写与必要的查询部分,例如 /ws漏掉开头的斜杠,或自行改成 /

例如,一组说明明确写着 Port 为 443、Transport 为 WebSocket、TLS 开启、Path 为 /ws,就应逐项复现这一组合。这里的数值只是字段示例,不代表可用服务;实际填写时以用户已有参数为准。

部分 VLESS 配置还带有 Flow 或特定安全模式的附加字段。只有原始参数明确要求、且当前客户端支持对应组合时才填写。不要给普通 VLESS 条目随意加 Flow,也不要把其他安全模式的公钥等参数当作 TLS 的 SNI 使用。

导入之后:用 Global Routing 区分参数问题与规则问题

订阅导入能够减少手工转录,但仍要核对导入后条目的 Type、Port 和传输设置。订阅主要管理服务器条目,不应直接当作 Config 中的规则文件理解。订阅更新还可能覆盖条目的手动修改;测试前记录原值,必要时保留单独的测试副本。

在 Home 选中待测条目后,还需确认 Global Routing 的姿态。Config 按当前配置中的规则处理请求,Proxy 使普通请求统一走代理路径,Direct 则走直连;Scene 按所选场景定义处理,不能在未核对场景内容时把它当成固定的测试条件。

Config:验证完成后的规则使用

推荐

依据当前配置判断请求去向。命中规则后执行对应策略,未命中前序规则的请求通常由 FINAL 处理,并不必然直连。

适合:已确认连接可用、需要按现有规则处理日常请求

Proxy:临时排除规则干扰

测试选定代理路径能否访问目标页面,减少请求被规则转为 Direct 的干扰;仍需核对选中的服务器以及其他可能生效的设置。

适合:判断失败来自连接参数,还是来自规则选择

Direct:检查本地直连基线

让普通请求走直连,用于确认当前网络访问原本可直连的网站是否正常。这不能验证 VMess 或 VLESS 的认证是否成功。

适合:先排除本地 Wi-Fi 或 Cellular 网络故障

判断:Proxy 可用而 Config 失败,先查规则

保持同一服务器与测试网址,只切换 Global Routing。若 Proxy 能打开、Config 不能,优先检查当前 Config 的命中规则、策略名称和 FINAL 去向,不要先更换 UUID 或协议类型。

测试过程中尽量固定网络与目标页面。若 Settings → On Demand 已启用,也要记录其触发条件,避免自动连接行为干扰手动测试。需要临时暂停时先保存原设置,测试结束后恢复;不要同时改传输、规则和自动连接条件。

连接失败:按外层到内层逐项排查

“延迟有数值”只能说明对应测试方法得到了响应,不能保证网页请求已经通过认证、TLS 和完整传输过程。排查时要记录具体表现,例如立即报证书错误、等待后超时,或只有某个域名无法打开,而不是只记“不能用”。

  1. 确认本地网络。用当前网络访问一个原本可直连的网站;必要时在 Wi-Fi 与 Cellular 间切换对照。保持其他参数不变,才有比较意义。
  2. 确认 Address 与 Port。检查地址是否多了空格或 URL 前缀,端口是否抄错。连接超时也可能由网络路径或服务端不可达引起,不应直接归因为 UUID 错误。
  3. 确认 TLS 与传输。核对 TLS 开关、SNI、Transport、Host 和 Path。证书错误先处理证书,WebSocket 握手错误则检查路径、请求头与服务端入口。
  4. 确认协议认证。核对 Type 和 UUID。VMess 还应检查加密选择、AlterId 及设备时间;VLESS 则检查原配置要求的 Encryption、Flow 等字段。
  5. 最后检查规则与 DNS。使用 Proxy 做对照。如果只是特定域名失败,再查看相关请求的解析与路由结果,不要一次替换所有 DNS 设置。

如果两种协议都能使用,也不能仅凭一次测速判断协议优劣。至少固定测试时段、网络、服务器条件与目标资源。对于参数填写问题,更可靠的完成标准是:保存后能够重复连接,目标请求走预期路径,恢复 Config 后规则行为也符合预期。

常见问题:UUID、加密选项与订阅更新

两个条目的 UUID 一样,能直接把 VMess 改成 VLESS 吗?

不能仅凭 UUID 相同转换。先取得服务端明确提供的 VLESS 参数,再在 Home → Add Server 中新建对应 Type,分别核对端口、传输与安全设置。保留原条目,避免覆盖唯一可用配置。

VLESS 显示 none,是不是应该改成 aes-128-gcm?

不要把 VMess 的加密值套到 VLESS。先确认 none 对应的是协议层 Encryption,再核对 TLS 或原参数指定的外层安全机制。是否安全需要看完整组合,不能只看一个字段。

更新订阅后,手工修改的 Path 又变回去了怎么办?

先保存更新前后的差异,确认订阅提供的原始值。需要隔离测试时保留独立副本,不要持续修改受订阅更新管理的同一条目;长期修正应由原参数提供方确认。

只把端口改成 443,为什么还是连不上?

端口号不负责自动配置 TLS。回到条目编辑页,逐项核对服务端实际监听端口、TLS、SNI 和传输方式;只有服务端存在对应入口时,这一组合才可能建立连接。

协议和 UUID 都对,但只有部分网页失败,还要重建条目吗?

先在 Home → Global Routing 临时选 Proxy,用同一网址复测。若恢复访问,检查 Config 的规则与策略;若仍失败,继续检查该域名的解析和连接错误,不必立即重建全部条目。

App Store 正版核验