Shadowrocket VMess 和 VLESS 区别:添加节点时普通用户需要看懂的几项

从加密方式、UUID、传输与 TLS 选项讲解 VMess 与 VLESS 的差别,帮助按服务商给出的参数在 Add Server 里正确填写。

本文速览

VMess 与 VLESS 不能只改 Type 就互相转换;普通用户需要核对协议类型、UUID、传输方式和 TLS 参数,而不是按名称判断速度。本文适用于 iPhone、iPad、Mac、Windows、安卓与 Linux 上的 Shadowrocket 使用者,以 iPhone / iPad 的 Home → Add Server 操作为例,其他平台按对应字段核对。前提是用户已有自己的服务商与订阅,读完可按参数单完成检查,并区分认证、传输与分流问题。

1. VMess 与 VLESS 的核心区别:认证与加密不是同一层

Shadowrocket(小火箭)是闭源商业应用。VMess 与 VLESS 是它支持的代理协议中的两种,不是两个独立客户端。服务器启用哪一种协议,客户端就需要选择对应 Type;名称相近、都使用 UUID,并不代表参数可以混用。

VMess 提供用户认证以及可配置的协议层数据加密机制,具体加密选项需要与服务器约定相符。VLESS 本身不提供同类的协议层数据加密,常规部署会配合 TLS 等安全传输机制。看到 VLESS 的加密项为 none,不能直接推断整条连接是明文,还要检查外层是否使用 TLS。

核对项目VMessVLESS
用户标识通常使用 UUID 进行用户认证,必须与服务器一致。同样使用 UUID 作为用户标识,但不能因此当作 VMess 连接。
协议层加密有对应的数据加密选项,按已有配置保留。自身不承担同类数据加密,不能照搬 VMess 的加密设置。
外层 TLS是否启用由服务器部署决定,不由协议名称单独决定。常见部署配合 TLS;具体开关和认证参数仍以服务器配置为准。
底层传输可搭配不同传输方式,客户端需要匹配服务器。同样需要匹配传输方式,不能仅复制地址与 UUID。
切换条件服务器必须提供相应 VMess 配置。服务器必须提供相应 VLESS 配置,修改 Type 不会改变服务器能力。

结论:先确认服务器提供的协议,再填写加密与 TLS

如果已有配置能够连接,先保留它;需要改用另一协议时,向自己的服务商取得完整的新配置,不要在旧记录上只切换 Type。

2. UUID、端口与传输:先把四组参数分开核对

UUID 是用户标识,不是服务器地址,也不是订阅地址。它常见的文本形式是带连字符的十六进制字符串。字符数量和格式正确,只能说明它看起来符合格式,不能证明该用户在服务器上有效。复制时要避免带入空格、换行或聊天软件附加的标点。

128 bit
UUID 的标识长度,不代表链路加密强度
36 字符
UUID 常见文本形式,包含 4 个连字符
443
常见 TLS 服务端口示例,不是所有配置的固定端口
  1. 地址与端口:服务器地址可以是域名或 IP;端口按参数单填写。使用 443 不会自动开启 TLS,也不代表该端口一定运行代理服务。
  2. 认证参数:核对 UUID 是否完整,以及该记录是否仍在有效期内。不要将订阅链接中的 token 填进 UUID 字段。
  3. 传输参数:确认 TCP、WebSocket 或 gRPC 等实际传输类型;如果配置还提供 WebSocket Path、Host 或 gRPC serviceName,也需要逐项对应。
  4. 安全参数:核对 TLS 开关、服务器名称与证书验证要求。只有服务器使用对应方式时,客户端设置才有意义。

例如,参数单注明 WebSocket Path 为 /tunnel 时,不能自行简写为 /;大小写、前导斜杠与路径内容都应保留。WebSocket Host、TLS 的 SNI 与实际连接地址承担不同作用,即使某份配置里三者相同,也不能据此把所有记录都改成同一值。本文中的 example.com 仅表示示例域名,不是可连接的服务地址。

3. 在 Add Server 填写:优先保留完整参数

已有订阅包含完整参数时,优先在 Home 使用导入后的记录;确实需要手动添加时,再进入 Home → Add Server。不同平台的字段排列可能不同,应按字段含义对应,而不是按某张截图中第几个输入框的位置填写。订阅链接、UUID 和分享链接都可能包含访问凭据,不应公开发送。

两种录入方式:已有订阅与手动参数单

已有自己的订阅
  • 在 Home 确认订阅已导入且记录非空。
  • 打开目标记录查看 Type、地址、端口与 TLS。
  • 更新后重新检查目标记录,避免继续使用已经失效的旧项。
  • 修改前保留原始参数,以免后续无法恢复。
已有完整参数单
  • 进入 Home → Add Server,先选择对应 Type。
  • 填写地址、端口和 UUID,再设置传输方式。
  • 按原单填写 Path、Host、SNI 等附加参数。
  • 保存后回到 Home 选择该记录,再进行连接测试。

订阅更新可能重新生成记录;长期需要调整的参数应先向自己的服务商确认,不要把临时手改视为服务器已经完成变更。

VMess 参数单若包含额外认证选项,应按原值处理。旧资料中的某些参数不一定适用于当前服务器,不能看到教程里的数字就套用。VLESS 参数若带有额外的 flow 设置,也不是任意传输都能照搬;缺少说明时,应取得与该连接匹配的完整参数,而不是通过逐项猜测拼出配置。

  1. 先确认 Type 与参数单协议名称一致,避免把一条 VLESS 记录建立成 VMess。
  2. 逐字符复核 UUID、服务器地址和端口,确认没有粘贴到相邻字段。
  3. 核对传输方式及其附加字段,再检查 TLS;不要一次同时更改多个选项。
  4. 保存后只测试这条记录,并记录错误发生在连接、TLS 握手还是网页请求阶段。

4. TLS 怎么选:由服务器决定,不是速度开关

TLS 用来保护传输并验证对端身份,不能用“开启更慢、关闭更快”作为配置依据。服务器要求 TLS 而客户端关闭时,连接通常无法按预期完成;反过来,向只接受普通传输的端口发送 TLS 握手也会失败。对于 VLESS,尤其不能把加密项 none 理解成“TLS 也应关闭”。

TLS 开启,并核对服务器名称

推荐

当自己的服务商提供 TLS 配置时,按原参数开启 TLS,保留证书验证,并核对 SNI。推荐的前提是服务器确实采用这套配置,不是把任意端口都强制改成 TLS。

适合:服务商明确提供 TLS 参数的 VMess 或 VLESS 连接

TLS 关闭,保留原传输配置

只有服务器参数明确如此时才按原值设置。必须同时了解其外层保护方式,尤其不能把裸 VLESS 连接与已采用 TLS 的连接视为相同的安全条件。

适合:已有明确部署说明、需要匹配非 TLS 服务端的连接

SNI 是 TLS 握手中用于标识目标服务器名称的信息;证书验证还需要检查证书是否与预期名称相符。连接地址是 IP,而证书签发给域名时,通常需要按服务商说明填写正确的服务器名称。WebSocket Host 属于另一层,改它并不等于改好了 TLS 的名称校验。

5. 保存后打不开网页:把协议问题与分流问题分开

Home 中选中记录并开启连接,不等于每个请求都已经通过这条记录。Global Routing 决定请求如何处理,Config 则还要看配置规则。若请求实际走 Direct,就不能用该网页是否打开来判断刚填写的 VMess 或 VLESS 是否可用。

检查位置观察重点下一步
Home → Global Routing → Config请求按 Config 中的规则匹配,不保证使用当前选中的代理记录。查看请求记录与命中策略,确认目标请求究竟走哪条路径。
Home → Global Routing → Proxy临时排查时,让受客户端处理的请求走代理路径。确认选中目标记录后测试;完成后恢复原先的日常模式。
Home → Global Routing → Direct直连结果不能证明代理协议参数正确。需要测试代理记录时,不要停留在 Direct。
Home → Global Routing → Scene按已配置场景处理,结果取决于场景设置。先检查当前场景实际采用的策略,再判断连接结果。
Settings → On Demand影响按条件触发连接,不负责修正 UUID、TLS 或传输字段。测试期间确认连接状态,避免把自动连接行为当成协议故障。

在 Config 模式下,DOMAIN-SUFFIX 可按域名后缀匹配,IP-CIDR 按 IP 网段匹配,GEOIP 按 IP 地理归属条件匹配,FINAL 处理未命中前序规则的请求。它们解决的是流量去向,不会替服务器创建用户,也不能补齐缺失的 UUID。规则的具体策略目标还需要在当前配置中存在。

  1. 先确认 Home 当前选中的是刚刚核对过的记录,而不是同名旧记录。
  2. 短时切换到适合排查的代理路径,使用同一个目标请求重复测试,避免同时换记录、换模式和换网络。
  3. 若连接阶段报错,回查地址、端口、认证和 TLS;若连接已建立但特定网站失败,再看 DNS、规则与目标网站状态。
  4. 测试结束恢复原模式,保留报错类型与发生时间,向自己的服务商反馈时隐藏 UUID、token 等敏感字段。

6. VMess 与 VLESS 常见填写问题

同一个 UUID,为什么把 VMess 改成 VLESS 就不能用了?

UUID 只是认证参数的一部分,服务器还需要运行匹配的协议与传输服务。先恢复原 Type;若确实要使用 VLESS,向自己的服务商取得独立、完整的连接参数,再在 Add Server 新建记录。不要在唯一一条可用记录上反复试改。

VLESS 显示 none,是不是没有加密?

先检查它指的是哪一层。VLESS 的协议层加密项为 none,不排除外层使用 TLS。打开该记录核对 TLS、服务器名称和证书验证设置;若参数单没有说明保护方式,先询问自己的服务商,不要自行补一个加密名称。

端口已经填 443,为什么还是提示 TLS 错误?

端口号不会自动保证 TLS 正确。依次核对服务器是否真的在该端口提供 TLS、SNI 是否符合证书、设备时间是否正常,以及 WebSocket 或 gRPC 的附加参数是否匹配。不要用关闭证书验证代替这些检查。

哪个更快,是否应该把所有 VMess 都换成 VLESS?

不能仅凭协议名下结论。服务器负载、往返延迟、丢包、传输方式与出口链路都会影响体验。先保留可用记录;确有两套可用配置时,在同一网络、同一目标、接近的时间条件下分别测试,并记录结果,不能把不同线路的差异全部归因于协议。

订阅更新后手改参数又变回去了,应该怎么处理?

订阅记录可能由服务商下发内容重新生成。先核对更新后的参数是否已经变化,再确认订阅仍有效。需要长期修改时,把具体不匹配字段反馈给自己的服务商;若临时建立独立记录,保存原参数并明确区分名称,避免日后选错。

本文只解释已有配置的填写与自查。本站不提供、不销售、不推荐节点、订阅或服务商。遇到账号有效期、服务器端口或证书部署问题,应由用户自己的服务商核实;修改客户端字段无法替代服务器侧修复。

下载 Shadowrocket