VMess 和 VLESS 有什么区别:在 Shadowrocket 里选协议前要知道的几点

从加密方式、UUID 用法和传输层搭配三个角度对比 VMess 与 VLESS,说明普通用户照着服务商参数填写时该关注哪些字段。

本文速览

VMess 与 VLESS 不能只改 Type 就互相转换:两者都使用 UUID,但认证方式与协议内的加密设计不同。本文以用户已有自己的服务商与订阅为前提,说明如何在 Shadowrocket(小火箭)里核对协议、TLS 和传输参数,并把连接故障与规则分流问题分开检查。

先看结论:协议必须与服务端一致

在 Shadowrocket 里选择 VMess 还是 VLESS,首先取决于已有连接资料指定的类型,而不是哪个名字更新。服务端接收 VMess 时,客户端就要使用相应的 VMess 参数;服务端接收 VLESS 时,也必须使用匹配的 VLESS 参数。即使地址、端口与 UUID 看起来相同,改变 Type 仍可能导致认证或握手失败。

协议选择与流量分流是两件事。Home 中选择的服务器决定代理连接使用什么参数;Global Routing 决定请求如何路由。Config 页面用于管理配置文件与规则,Settings 则集中提供应用设置。排查协议时,不应把修改规则、切换服务器与更改 TLS 同时进行,否则很难判断是哪项改动产生了影响。

2 类
本文比较的协议:VMess / VLESS
443
HTTPS 常用端口;不能据此推断协议与 TLS 设置
36 字符
带连字符的标准 UUID 文本长度,不含首尾空白

判断:先核对一整组参数,再讨论协议差异

把已有资料里的 Type、地址、端口、UUID、TLS 与传输设置逐项对齐。只有服务端分别提供了可用的 VMess 与 VLESS 配置,才具备比较两种连接的前提。

加密区别:VMess 协议加密与 VLESS 外层保护

VMess 定义了认证和数据加密机制。常见的 VMess AEAD 配置会使用相应的认证设计,数据加密方式还要与服务端支持情况一致。VMess 也可以叠加 TLS:协议自身的数据加密与 TLS 保护属于不同层次,不能把其中一个开关当成另一个的替代品。

VLESS 本身不提供载荷加密,通常依靠 TLS 等外层机制保护传输。因此,看到资料中的 VLESS 加密字段为 none,不能直接判断整条连接是明文,也不能反过来认为只要选择 VLESS 就自动启用了 TLS。需要继续核对连接资料要求的外层保护,以及客户端是否正确配置。

核对项目 VMess VLESS
用户标识 使用 UUID,参与协议认证 使用 UUID,服务端核对用户身份
协议载荷加密 具有协议内的数据加密机制,具体选项按配置核对 本身不提供载荷加密,需要另看外层保护
TLS 可按服务端要求叠加,不等同于 VMess 的加密选项 常见的外层保护方式,必须与服务端要求一致
能否仅更改 Type 不能据此转换为 VLESS 不能据此转换为 VMess

Allow Insecure 涉及 TLS 证书校验,不是提高速度的选项,也不能修复错误的 UUID 或传输路径。遇到证书错误,应检查系统时间、服务端证书及用于 TLS 的域名;不要用跳过校验来代替这些检查。具体字段是否显示,取决于当前选择的类型与传输设置。

UUID 用法:格式相同,不代表账号能够通用

UUID 是身份参数,不是服务器地址,也不是订阅地址。标准文本形式通常由十六进制字符与连字符组成,例如 123e4567-e89b-42d3-a456-426614174000。这里仅展示格式,不能用于连接。粘贴实际 UUID 时,应检查是否多带了空格、换行、引号,或误把整个分享文本填入该字段。

两个协议都使用 UUID,并不表示同一个 UUID 在任意服务端都有效。服务端需要配置对应用户及入站协议。已有订阅中若有两条地址相近但类型不同的记录,应分别保留其完整参数,不要把一条记录的 UUID、另一条记录的端口和第三条记录的传输选项拼在一起。

  1. 在 Home 找到需要核对的记录,打开编辑界面,先确认 Type 是 VMess 还是 VLESS。
  2. 对照已有资料核对地址与 Port。地址字段只填要求的主机名或 IP,不要附加协议前缀和路径。
  3. 完整核对 UUID,不仅比较开头与结尾;不要在交流排错时公开实际 UUID。
  4. 如果 VMess 资料包含 AlterId,按资料填写;常见 VMess AEAD 配置使用 0,但不能凭经验替换其他字段。
  5. 检查设备日期与时间是否正确。VMess 的认证包含时间因素,明显错误的系统时间可能影响连接。

传输层搭配:TLS、WebSocket 与 Host 各管一层

VMess 和 VLESS 是代理协议;TCP、WebSocket 等描述连接使用的传输方式;TLS 提供外层安全通道。这些参数相互配合,但不是同义词。资料写明 WebSocket 时,只填 Type 和 UUID 并不足够,还要继续核对 Path、Host 以及 TLS 的相关要求。

以下是假设性的填写关系:已有资料要求端口 443、WebSocket 路径 /connect,并启用 TLS,那么这些设置应作为一组保留。不能因为 443 常用于 HTTPS 就省略 TLS 检查,也不能看到 WebSocket 就把端口自行改成 80。两种端口都只是数值,具体监听方式由服务端决定。

分层核对:连接地址与传输参数

服务器与身份层
  • Type 对应服务端的 VMess 或 VLESS。
  • 地址与 Port 决定连接目标。
  • UUID 对应服务端已有用户。
  • VMess 的额外认证、加密字段按资料保留。
外层与传输层
  • TLS 开关与服务端要求一致。
  • SNI 对应 TLS 握手使用的服务器名称。
  • WebSocket 的 Host 对应 HTTP 请求头。
  • Path 保留开头斜杠、大小写及资料中的完整内容。

SNI 与 Host 可能相同,也可能不同;不要因为地址相同,就把它们自动替换成同一个值。

gRPC 等其他传输方式同样需要服务端支持,并具有各自的附加参数。不能把 WebSocket 的 Path 当作所有传输的通用路径。如果已有资料不完整,应向自己的配置提供方确认缺失字段,而不是反复试填。对本文没有展开的扩展选项,也应按完整配置核对,不能只用“VLESS + TLS”概括所有部署。

导入与手填:优先保留完整配置

已有订阅能够同时携带多条记录及其参数,适合减少手工抄写。导入后仍应在 Home 检查记录的类型与关键设置,不要仅凭显示名称判断协议;名称可以包含描述文字,实际连接行为取决于记录内部参数。更新订阅会重新取得远端内容,对订阅记录所做的本地修改可能在后续更新中被覆盖。

保留已有订阅中的完整参数

推荐

先导入用户已有的订阅,再核对 Type、Port、UUID 与传输选项。保留原始记录,便于在排错后恢复,也避免把不同记录的字段混用。

适合:已有可用订阅,需要确认 VMess 与 VLESS 区别的用户

按完整资料手动填写

在 Home → Add Server 中按资料选择 Type,逐项填写地址、端口、身份与传输设置。只有地址和 UUID、缺少 TLS 或传输信息时,不应认为资料已经完整。

适合:已有明确的单条连接参数,需要逐项核对的用户

若需要比较改动前后的行为,先保留原始参数,在独立记录中一次只改一项,并写下修改内容。订阅更新失败与某条 VMess 或 VLESS 记录认证失败也应分开处理:前者是获取订阅内容的过程,后者是使用已有参数建立代理连接的过程,两者不一定来自同一个问题。

连接排查:先分清认证、传输与分流

不要把延迟测试有数值等同于网页一定可用。端口可达、协议认证成功、TLS 正常、DNS 可用、请求命中预期策略,是不同的检查环节。测试时使用同一设备、同一网络和同一目标请求;没有控制这些条件,就不能从一次快慢判断 VMess 或 VLESS 的固有速度。

Global Routing 中的 Proxy、Direct、Config、Scene 描述路由姿态,不会替你转换协议。Config 按当前配置处理请求;Direct 不适合验证代理记录是否可用;Scene 则需结合场景设置检查。为排除分流因素,可以临时用 Proxy 检查选中的代理连接,结束后恢复原来的姿态;仍需结合应用内请求记录确认实际路径。

同一个 UUID,把 VMess 改成 VLESS 就能用吗?

不能据此判断。回到 Home 打开该记录的编辑界面,恢复原始 Type,再按已有资料核对 Port、TLS 与传输设置。只有服务端提供对应的 VLESS 配置时,才使用那组完整参数。

端口是 443,为什么仍然提示 TLS 问题?

443 不是 TLS 配置的自动证明。检查 TLS 是否按资料启用、SNI 是否正确、设备时间是否准确,以及服务端证书是否有效。不要通过开启 Allow Insecure 掩盖证书或域名不匹配。

切换 Proxy 能访问,回到 Config 就失败,应该换协议吗?

先保持服务器记录不变,到 Config 检查当前启用配置及请求命中的规则。重点看目标是否被 DOMAIN-SUFFIX 等规则提前匹配、是否落到预期策略,以及 FINAL 如何处理未命中请求,再结合 DNS 设置核查。

WebSocket 一直连不上,是 UUID 错了吗?

不一定。先核对 Type、地址与端口,再检查 WebSocket 的 Path、Host 和 TLS 的 SNI。路径中的大小写、缺少开头斜杠或错误的 Host,都可能使连接在身份验证之前就失败。

实际使用时,先让一条与服务端完全匹配的记录正常工作,再恢复日常的规则配置。协议名称本身不能说明线路质量、服务器负载或特定网络中的表现;VLESS 减少了协议自身的加密职责,也不意味着任意环境下都比 VMess 更快。对普通用户而言,保留完整参数、分层检查,比仅按协议名称选择更有操作价值。

App Store 正版核验