VMess 与 VLESS 不能只靠切换 Type 相互转换。本文面向已经持有自己服务商参数的 Shadowrocket(小火箭)用户,按协议、身份凭据、传输方式、TLS 四层拆开核对 Add Server;读完可以分清 UUID、Server、Host、SNI 各自负责什么,并按错误发生的位置检查配置,而不是反复猜测开关。
一、VMess 与 VLESS 的区别先看哪一层
先给结论:选择服务端实际提供的协议,不按名称判断快慢。VMess 提供协议层的认证与加密机制;VLESS 本身不提供流量加密,需要结合服务端指定的安全层使用。VLESS 的协议加密字段为 none,不等于整条连接一定明文,也不等于应该关闭 TLS。
手动配置时,把“用什么协议识别用户”“用什么方式承载数据”“怎样保护连接”分开看。WebSocket 是传输方式,TLS 是安全层,两者都不是 VMess 或 VLESS 的同义词。同一个协议可以有不同组合,但客户端必须与服务端逐项一致。
| 核对层次 | VMess | VLESS |
|---|---|---|
| 协议身份 | 使用 UUID 标识用户,涉及认证与时间校验 | 使用 UUID 标识用户,不能据此认定与 VMess 通用 |
| 协议加密 | 按服务端参数选择对应加密设置,不自行猜测 | 协议加密为 none,连接保护需另外核对 |
| 传输方式 | 核对 TCP、WebSocket 等具体要求 | 同样核对实际传输方式及其附加字段 |
| 安全层 | 可能另用 TLS,以给定参数为准 | 核对 TLS 或其他明确指定且当前应用支持的安全设置 |
因此,不存在“把 VMess 的 UUID 复制过去,再把 Type 改成 VLESS 就完成升级”的通用步骤。即使两组参数恰好使用相同 UUID,也必须确认服务端确实存在对应的协议入口、端口和传输设置。
二、进入 Add Server 前,先准备完整参数
在 Home 点右上角的添加按钮进入 Add Server,先选 Type,再填写该类型显示的项目。不同 Type 或传输选项会改变后续字段;本文使用 UUID、SNI 等协议名称解释对应关系,实际输入项的拼写与位置以当前应用页面为准。
- 确认参数属于同一个入口。把协议、Server、Port、UUID、传输方式、安全层放在同一份记录中,不要混用旧消息里的端口与新配置里的域名。
- 区分单条配置和 Subscribe 地址。订阅地址用于获取配置集合,不是 Server,也不是 UUID。已经通过 Subscribe 导入的条目,优先对照其现有详情,不另建一个缺少附加参数的副本。
- 保留原配置。手动排查前记录原值;必要时新建测试条目,每次只改一项。后续订阅更新可能重新写入服务商管理的字段,不要把临时修改当成永久修复。
- 准备附加参数。若使用 WebSocket,另备 Host 与 Path;若使用 TLS,另备服务器名称与证书要求。VLESS 若明确给出 Flow,也应一起核对,不能随意补填。
三、Server、Port 与 UUID 分别怎样填写
Server 表示要连接的服务器地址,一般是域名或 IP 地址,不包含 https://、网页路径或查询参数。Port 是服务端实际监听的端口。填写端口 443 并不会自动开启 TLS,填写域名也不会自动生成正确的 SNI。
UUID 是协议身份凭据,不是备注名称,也不是 Apple 账号。复制时保留连字符,去掉首尾空格与意外换行;不要把参数中整个 id=... 片段连同键名一起填入。即使格式正确,也不能证明服务端仍然接受该凭据。
- 地址错误:可能无法解析域名,或连接到另一台服务器;先检查拼写,不要先改 UUID。
- 端口错误:可能表现为拒绝连接或超时;不要因为看到 443 就套用其他条目的 TLS 设置。
- 身份错误:底层连接可能建立,但协议认证失败;应核对 UUID、Type 与账号状态,而不是只看延迟数字。
- VMess 时间问题:认证与时间有关。若其他字段一致仍认证失败,在设备“设置 → 通用 → 日期与时间”中核对自动设置及当前时间是否正确。
四、WebSocket 的 Host、Path 与 TLS 的 SNI 不要混填
这几项经常都是域名或短字符串,却作用在不同阶段。Server 决定连接目的地;SNI 在 TLS 握手中指明服务器名称;WebSocket 的 Host 与 Path 用于 HTTP 升级请求和服务端路由。它们可以相同,也可以不同,不能从 Server 自动推导全部取值。
两组字段分别核对:传输方式与安全层
WebSocket 传输字段
- 先确认传输方式确实要求 WebSocket,而不是仅因参数里出现域名就选择它。
- Host 按给定值填写,不附带协议前缀;若明确带端口,不擅自删去。
- Path 保留开头的
/、大小写与查询参数,不把完整网页地址填进去。 - 例如
/ws与/WS可能对应不同路由,不能视为等价。
TLS 安全字段
- 按参数确认是否启用 TLS,不能仅根据 Port 判断。
- SNI 通常填写服务器名称,不带
https://或路径。 - 核对证书覆盖的名称、有效期与设备时间,不用忽略证书错误代替排错。
- 若提供 ALPN 等附加项,按原值核对;未提供时不要照抄其他条目的值。
连接地址、TLS 服务器名称和 WebSocket Host 是三种角色;只在原参数要求相同时才填写相同值。
以下是字段关系示意,不是可连接的配置,也不表示真实服务端支持这些值。实际填写必须使用自己现有入口的完整参数;没有提供的字段,不从本例补齐。
Type: VLESS
Server: edge.example.com
Port: 443
UUID: 使用已有入口提供的完整 UUID
Transport: WebSocket
Host: web.example.com
Path: /ws
TLS: enabled
SNI: web.example.com
五、TLS 开关如何判断:按入口要求,不按协议名称
VMess 可以结合 TLS,VLESS 也不能仅凭协议名称决定 TLS 开关。这里比较的是同一应用里的安全层设置方式,不是给两种协议排优先级。推荐项针对“现有参数明确启用 TLS”的情况;如果服务端明确采用其他安全方案,应核对该方案所需字段与当前应用支持情况。
原参数要求 TLS:保留 TLS 与名称校验
推荐启用对应的 TLS 设置,逐项核对 SNI、证书与附加参数。遇到名称不匹配时先查参数,不通过关闭校验绕过问题。
适合:已有入口明确给出 TLS 与服务器名称的配置
原参数不使用 TLS:核对实际安全方案
不要强行打开 TLS,也不要把“不使用 TLS”理解为所有保护都可省略。尤其是 VLESS,需要确认整条连接如何获得加密保护以及相关字段是否完整。
适合:已有入口明确说明安全层组合且参数齐全的配置
判断方法:先找原参数中的安全层,再检查加密字段
看到 VLESS 的 none 时,不要关闭 TLS;先确认它描述的是协议加密还是连接安全层,再修改对应设置。
六、保存后怎样验证,避免把分流问题当成协议问题
保存条目后,回到 Home 选择刚核对的配置,再进行连接测试。延迟有数值只说明对应测试获得了响应,不能证明 UUID、WebSocket 路由、TLS 与目标网站访问全部正常。下面的现象是排查分类,不是某个错误提示的唯一解释。
- 先确认确实使用该条目。核对 Home 当前选择,避免编辑的是新条目,连接时仍使用另一个旧条目。
- 再确认 Global Routing。
Direct不能用于验证代理入口;在Config下,目标可能被规则送往直连。可短暂使用Proxy排除规则选择的影响,测试后恢复原设置。 - 记录失败阶段。连接超时先查 Server、Port 与网络可达性;TLS 失败先查安全层、SNI、证书和时间;连接建立后仍失败,再查 UUID、传输字段及服务端状态。
- 最后回查规则与 DNS。若 Proxy 可访问、Config 不可访问,再检查当前 Config 中命中的规则及策略,不继续修改协议凭据。
规则中的 DOMAIN-SUFFIX,example.com,DIRECT 会将匹配域名交给 DIRECT;FINAL 负责未命中前面规则时的最终策略。此时访问结果反映的是规则路径,不一定是刚添加的 VMess 或 VLESS 条目。不要把临时验证用的全局选择当作长期分流配置。
七、手动添加 VMess 与 VLESS 的常见问题
只有 UUID 和域名,能直接添加吗?
不能据此完整还原。至少还需确认 Type、Port、传输方式与安全层;WebSocket 可能另需 Host 和 Path。先向自己现有服务商核对缺失字段,不用常见端口或默认路径代替实际值。
把 VMess 改成 VLESS,为什么马上不能连接?
两种协议的处理方式不同,服务端也必须有对应入口。回到 Home 编辑该条目,恢复原 Type 与原参数;需要使用 VLESS 时,应另取该入口的完整参数,而不是只复用 UUID。
VLESS 显示 none,是不是设置错了?
若它表示 VLESS 协议加密,none 符合该协议的设计。继续检查 TLS 或其他指定安全层,不能用这个值推断整条连接没有加密,也不要把它当作 TLS 关闭指令。
订阅导入能用,手动添加却不行,先看什么?
在 Home 分别打开两个条目的详情,依次比对 Type、Server、Port、UUID、传输、安全层及附加字段。重点检查手填时漏掉的 Path、SNI 或 Flow;不必先重置 Settings,也不要将完整凭据发到公开讨论区。
端口是 443,还需要核对 TLS 吗?
需要。443 只是端口号,不会替客户端决定协议。返回条目编辑页面,按原参数检查 TLS 开关与服务器名称;若提示证书问题,先核对 SNI 和设备时间,不把关闭校验作为常规解决办法。
完成一次核对后,保留“原值、修改项、结果”三项记录。只要能确认失败发生在地址连接、TLS 握手、协议认证还是规则选择阶段,下一步就能针对该层处理,而不需要同时更换协议、端口和传输方式。