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。
| 核对项目 | VMess | VLESS |
|---|---|---|
| 用户标识 | 通常使用 UUID 进行用户认证,必须与服务器一致。 | 同样使用 UUID 作为用户标识,但不能因此当作 VMess 连接。 |
| 协议层加密 | 有对应的数据加密选项,按已有配置保留。 | 自身不承担同类数据加密,不能照搬 VMess 的加密设置。 |
| 外层 TLS | 是否启用由服务器部署决定,不由协议名称单独决定。 | 常见部署配合 TLS;具体开关和认证参数仍以服务器配置为准。 |
| 底层传输 | 可搭配不同传输方式,客户端需要匹配服务器。 | 同样需要匹配传输方式,不能仅复制地址与 UUID。 |
| 切换条件 | 服务器必须提供相应 VMess 配置。 | 服务器必须提供相应 VLESS 配置,修改 Type 不会改变服务器能力。 |
结论:先确认服务器提供的协议,再填写加密与 TLS
如果已有配置能够连接,先保留它;需要改用另一协议时,向自己的服务商取得完整的新配置,不要在旧记录上只切换 Type。
2. UUID、端口与传输:先把四组参数分开核对
UUID 是用户标识,不是服务器地址,也不是订阅地址。它常见的文本形式是带连字符的十六进制字符串。字符数量和格式正确,只能说明它看起来符合格式,不能证明该用户在服务器上有效。复制时要避免带入空格、换行或聊天软件附加的标点。
- 地址与端口:服务器地址可以是域名或 IP;端口按参数单填写。使用 443 不会自动开启 TLS,也不代表该端口一定运行代理服务。
- 认证参数:核对 UUID 是否完整,以及该记录是否仍在有效期内。不要将订阅链接中的 token 填进 UUID 字段。
- 传输参数:确认 TCP、WebSocket 或 gRPC 等实际传输类型;如果配置还提供 WebSocket Path、Host 或 gRPC serviceName,也需要逐项对应。
- 安全参数:核对 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 设置,也不是任意传输都能照搬;缺少说明时,应取得与该连接匹配的完整参数,而不是通过逐项猜测拼出配置。
- 先确认 Type 与参数单协议名称一致,避免把一条 VLESS 记录建立成 VMess。
- 逐字符复核 UUID、服务器地址和端口,确认没有粘贴到相邻字段。
- 核对传输方式及其附加字段,再检查 TLS;不要一次同时更改多个选项。
- 保存后只测试这条记录,并记录错误发生在连接、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 的名称校验。
- 遇到证书名称不匹配,先核对 SNI 与服务商提供的域名,不要先关闭证书验证。
- 遇到证书有效期相关错误,检查设备日期、时间与时区是否正确。
- 遇到握手超时,先检查网络和地址端口可达性,再核对 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。规则的具体策略目标还需要在当前配置中存在。
- 先确认 Home 当前选中的是刚刚核对过的记录,而不是同名旧记录。
- 短时切换到适合排查的代理路径,使用同一个目标请求重复测试,避免同时换记录、换模式和换网络。
- 若连接阶段报错,回查地址、端口、认证和 TLS;若连接已建立但特定网站失败,再看 DNS、规则与目标网站状态。
- 测试结束恢复原模式,保留报错类型与发生时间,向自己的服务商反馈时隐藏 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?
不能仅凭协议名下结论。服务器负载、往返延迟、丢包、传输方式与出口链路都会影响体验。先保留可用记录;确有两套可用配置时,在同一网络、同一目标、接近的时间条件下分别测试,并记录结果,不能把不同线路的差异全部归因于协议。
订阅更新后手改参数又变回去了,应该怎么处理?
订阅记录可能由服务商下发内容重新生成。先核对更新后的参数是否已经变化,再确认订阅仍有效。需要长期修改时,把具体不匹配字段反馈给自己的服务商;若临时建立独立记录,保存原参数并明确区分名称,避免日后选错。
本文只解释已有配置的填写与自查。本站不提供、不销售、不推荐节点、订阅或服务商。遇到账号有效期、服务器端口或证书部署问题,应由用户自己的服务商核实;修改客户端字段无法替代服务器侧修复。