Shadowrocket VMess 和 VLESS 有什么区别:加密方式、传输层与填写字段对照

对照 VMess 与 VLESS 在加密、UUID、TLS 依赖上的差别,说明在 Add Server 里各需填写哪些字段、订阅里两种类型怎么辨认。

本文速览

VMess 与 VLESS 不是可以直接互换的名称。两者都常用 UUID 标识用户,但 VMess 可在协议层加密数据,VLESS 本身不提供数据加密,需要另外核对 TLS 等安全层。本文面向已有服务商与订阅的用户,按协议、传输、安全层三个层次说明差异,再给出 Shadowrocket 的字段核对和排错顺序。

一、先分清协议、传输与 TLS

在 Shadowrocket(小火箭)中,选择 VMess 或 VLESS 只是确定了连接使用的代理协议,并没有同时确定传输方式和安全设置。看到名称里带有 VLESS,不能直接推断它使用 WebSocket;看到 VMess,也不能推断 TLS 已经启用。

可以把一条连接拆成三个问题:双方按什么协议识别用户,代理数据怎样封装传递,以及客户端到服务端的这一段是否由 TLS 保护。填写时需要逐层匹配服务端,不能只填地址、端口和 UUID 就忽略其余项目。

层次示例核对内容
代理协议VMess / VLESSType 必须与服务端类型一致,UUID 也必须对应同一账户。
传输封装TCP / WebSocket选择服务端指定的方式;WebSocket 还需核对 Host 与 Path。
安全层TLS确认是否启用,并核对用于握手和证书验证的服务器名称。

TCP 与 WebSocket 是这里用于解释的两种常见配置,不代表完整支持清单。可选项以应用内当前显示为准;已有订阅提供了具体传输参数时,应以该条配置为准,不凭协议名称补填。

二、VMess 与 VLESS 的加密、UUID 对照

VMess 的协议设计包含认证与数据加密机制,常见配置采用 AEAD 方式。VLESS 的协议设计更精简,本身不加密代理载荷。因此,VLESS 配置中出现 encryption=none,不能单独解释为“整条连接没有加密”:还要查看外层是否使用 TLS。

项目VMessVLESS
用户标识通常使用 UUID。通常使用 UUID。
协议层加密具有数据加密机制;具体选项应按服务端配置保留。本身不提供数据加密,不能照搬 VMess 的加密算法设置。
TLS 的作用可作为额外的外层保护,不是由 VMess 名称自动决定。常用来保护客户端与服务端之间的连接;仍须核对实际安全配置。
旧字段旧配置可能出现 AlterId;现代 AEAD 配置通常为 0。不使用 VMess 的 AlterId 认证机制。
能否改名转换不能。修改 Type 不会把服务端监听方式或账户配置一并转换。

UUID 是身份凭据,不是服务器地址,也不是 TLS 证书。即使两条配置恰好显示同一个 UUID,只要协议、端口或传输不同,它们仍是不同的连接配置。不要把 UUID 放进公开截图、诊断贴或分享文字。

2 种
本文核对的协议类型:VMess 与 VLESS
36 字符
标准带连字符 UUID 的文本长度,不含前后空格
443
常见 TLS 服务端口,但不是启用 TLS 的充分条件

判断方式:先查 TLS,再解释 none

遇到 VLESS 的 encryption=none,先打开该条配置检查 TLS 与服务器名称;不要为消除 none 字样而改成 VMess,也不要因为端口是 443 就默认 TLS 已经开启。

三、在 Home → Add Server 逐项填写

手动添加时,从 Home 进入 Add Server。不同 Type 与传输选项会改变后续字段,界面显示也可能随应用调整;下表给出应核对的字段含义,而不是要求每条连接都显示完全相同的表单。

  1. 先选 Type。按服务商提供的信息选择 VMess 或 VLESS,再填写其他字段,避免切换类型后遗漏重置的选项。
  2. 填写 Address 与 Port。Address 只填指定主机名或 IP,Port 填指定数字;不要把整条分享链接粘进地址栏。
  3. 填写 UUID。完整复制用户标识,检查前后空格、漏字符和误复制的换行,不自行生成替代值。
  4. 核对传输参数。若使用 WebSocket,继续核对 Host 与 Path。路径中的前导斜杠和大小写都应保留。
  5. 核对安全参数。按原配置设置 TLS 与服务器名称。仅在服务商明确提供相关参数且应用显示相应选项时,再填写额外字段。
  6. 保存后返回 Home。选中刚保存的条目,再进行连接测试。保存成功只表示表单已记录,不表示服务端已接受连接。
字段或概念填写依据常见误填
Address / Port已有服务商提供的接入地址与端口。把 443 当作固定值,覆盖了原配置的其他端口。
UUID对应当前服务端账户的完整用户标识。混用另一条配置的 UUID,或复制时多出空格。
VMess 加密选项保留导入配置或服务商要求。把其他协议的密码或算法直接套入。
Host / PathWebSocket 等相应传输的服务端设置。把 Path 的 / 漏掉,或认为 Host 必须等于 Address。
TLS / SNI安全层设置与服务器名称要求。以 IP 连接时,误把 IP 当作证书对应的域名。

Address、WebSocket Host 与 TLS SNI 可能相同,也可能因服务端部署方式而不同。Address 决定连接目标,Host 属于相应的应用层请求信息,SNI 用于 TLS 握手中的服务器名称指示;不要为了“统一”而把三个值全部改成一个域名。

四、订阅中怎么辨认 VMess 与 VLESS

订阅是配置的分发方式,不是第三种代理协议。一个已有订阅可以包含多种类型;名称中的“VMess”或“VLESS”只是备注时,不能作为最终判断依据。应在 Home 打开具体条目的编辑界面,查看 Type 及对应参数。

例如 https://example.com/sub?token=xxxx 只是订阅地址的格式示意,不是可用服务。实际订阅中的 token 与 UUID 都应当作为敏感信息保存;需要说明故障时,可仅记录 Type、传输方式、端口以及不含凭据的错误现象。

五、连接排错:先固定配置,再检查路由姿态

VMess 与 VLESS 都可能因为地址、认证、传输或 TLS 参数不匹配而失败。排错时每次只改一个变量:先确认选中的服务器,再确认协议与字段,最后检查流量是否实际经过该条连接。不要同时改 Type、端口、TLS 和 Global Routing,否则无法判断是哪一项影响结果。

保留原始协议与参数

推荐

先按已有订阅或服务商参数逐项比对,再单独测试。对于已经明确要求 TLS 的配置,保持证书验证,不以关闭验证代替定位错误。

适合:首次导入、手动填写、协议类型不确定

Global Routing → Proxy

需要隔离规则影响时,可临时使用 Proxy 进行网页请求测试。它不等于所有系统流量都必然被接管,也不能修复服务端参数错误。

适合:服务器测试有响应,但怀疑网页请求被规则分到其他策略

Global Routing → Config

依据当前 Config 的规则处理流量。测试结束后恢复原先姿态,并检查目标请求命中的规则与策略,不把规则结果误判为协议性能。

适合:确认连接可用后的日常规则分流与命中检查

  1. 在 Home 选中目标条目,核对备注与实际 Type,避免测试了另一条服务器。
  2. 运行 Connectivity Test,记录该条目显示的是响应结果还是失败。测试结果只反映对应检测过程,不保证所有网站和应用均可访问。
  3. 完成系统提示的 VPN 配置授权并打开连接开关,再测试实际网页。若 Global Routing 为 Direct,网页直连结果不能证明代理协议可用。
  4. 若出现证书相关错误,优先核对系统时间、TLS 服务器名称和证书对应域名;若超时,继续核对地址、端口与网络可达性。错误现象是线索,不是唯一诊断结论。
  5. 若使用 Config,检查规则顺序及 DOMAIN-SUFFIX、IP-CIDR、GEOIP、FINAL 的目标策略。它们决定请求如何分流,不会把 VMess 自动转换为 VLESS。

执行顺序:可达性、认证、传输、安全层、路由

先保存原配置并记录一次失败现象,再按层核对;如果更改一项后现象没有改善,恢复该项后继续下一项,不连续叠加未经确认的修改。

六、VMess 与 VLESS 常见问题

UUID 一样,能直接把 VMess 改成 VLESS 吗?

不能据此转换。在 Home 打开条目检查 Type,并向已有服务商核对该端口实际接收的协议。即使用户标识相同,服务端也必须具有匹配的协议、传输和安全配置。需要另一种协议时,应使用服务商已经提供的对应条目。

VLESS 显示 none,是不是应该手动选一个加密算法?

不要套用 VMess 的算法。VLESS 的协议层不提供数据加密,应继续检查 TLS 等安全层设置。若原配置明确使用 TLS,在条目编辑界面核对 TLS 和服务器名称;如果安全参数不明确,先向已有服务商核实,再进行连接。

端口填了 443,为什么还会提示 TLS 错误?

443 只是端口数字。检查 TLS 是否按要求启用、SNI 是否与证书对应、设备日期时间是否正确,并核对 Address 是否连接到了正确服务端。不要通过关闭证书验证掩盖名称不匹配。

哪个协议一定更快,延迟更低?

不能只凭协议名称判断。比较时应尽量保持接入网络、服务端位置、传输方式、TLS 与测试目标一致,并在 Home 重复执行 Connectivity Test,再检查实际请求。不同服务器的一次响应结果不能单独归因于 VMess 或 VLESS。

订阅更新后,手动修好的字段又变了怎么办?

先确认变动的是订阅管理的原条目还是独立保存的测试条目,再核对更新后的 Type、地址和安全参数。将修改前后不含凭据的差异提供给已有服务商;不要反复覆盖 UUID,也不要公开完整订阅地址。

App Store 正版核验 →