· 协议科普 · 约 9 分钟

VMess 和 VLESS 有什么区别:普通用户选协议前要知道的几点

用一分钟讲清 VMess 与 VLESS 在加密方式、时间校验、传输搭配上的差别,以及在客户端里看到这两种节点时该如何理解和选择。

本文速览

VMess 与 VLESS 都是代理协议,不是客户端名称。VMess 提供协议层的数据加密选项,并有依赖时间的认证机制;VLESS 基础协议不提供载荷加密,常搭配 TLS 或 REALITY 使用。已有订阅的用户应先确认完整配置能否被客户端识别,再比较实际可用性,不要只按协议名称判断速度或安全性。

协议、传输与安全层分别是什么

V2Ray 协议选择首先要分清三个层次:VMess 或 VLESS 负责代理请求与用户认证;TCP、WebSocket、gRPC 等负责连接如何承载;TLS 或 REALITY 则提供相应的安全保护。同一个 VLESS 节点,可以使用不同的传输与安全设置。看到协议相同,不代表两个节点能共用其余参数。

V2Ray 客户端是编辑配置、管理订阅和控制连接的界面,内核才负责执行代理协议。v2rayN 是桌面客户端;v2rayNG 是使用 Xray 内核的安卓客户端;v2flyNG 使用 V2Fly 内核。能否连接某个节点,需要核对内核对整套组合的支持,不能只看客户端名称里是否有“v2ray”。

配置层次常见显示值需要核对的内容
代理协议VMess、VLESS协议类型、UUID,以及该协议要求的其他字段
连接目标服务器地址、端口地址和远端监听端口,例如提供方指定的 443
传输方式TCP、WebSocket、gRPCWebSocket 的路径与 Host,或 gRPC 的服务名
安全设置TLS、REALITY服务器名称,以及相应的证书或 REALITY 参数
流控设置空值、xtls-rprx-vision是否由服务端配置要求,不能自行添加

例如“VLESS + TCP + REALITY + Vision”是一整套组合,其中 Vision 是流控设置,不是另一个与 VLESS 平级的协议。REALITY 也不是 WebSocket 的别名。若服务端给的是这套配置,客户端不能把传输改成 WebSocket 后继续沿用原参数。

VMess 和 VLESS 的关键差别

VMess 不只是给连接附上 UUID。它具有自己的认证和数据保护机制,常见数据加密选项包括 auto、aes-128-gcm 和 chacha20-poly1305。实际配置也可能选择不做载荷加密,因此“所有 VMess 数据必然由协议层加密”同样不准确。是否启用外层 TLS,要另看安全设置。

VLESS 基础协议采用更轻量的请求结构,不提供载荷加密。常见节点中的 encryption=none 是该类配置的正常字段,不等于整条连接都是明文:外层 TLS 或 REALITY 可以承担安全保护。反过来,如果没有任何合适的安全层,不能因为填了 UUID 就认为链路已被加密。

比较项VMessVLESS 基础协议
用户标识通常使用 UUID通常使用 UUID
载荷加密有协议层加密选项,具体取决于配置不提供,常依赖外层安全设置
时间依赖认证机制需要客户端与服务端时间接近基础认证不采用 VMess 式时间窗口
常见组合VMess + WebSocket + TLSVLESS + WebSocket + TLS,或 VLESS + TCP + REALITY
能否直接互换不能。服务端协议和客户端协议必须一致

现代 VMess 配置通常使用 AEAD 认证,alterId 常见为 0。网上旧教程中的非零值不应照抄到新节点。VLESS 没有对应的 alterId 配置项,也不应把 VMess 的加密选项搬过去。订阅已生成正确参数时,保留原值比逐项猜测更可靠。

时间校验:VMess 连接失败先检查系统时钟

VMess 的认证与时间有关。常见实现要求客户端和服务端的时间误差在约 120 秒以内,具体仍以所用内核为准。电脑休眠后时钟漂移、设备关闭自动时间,或服务端时间异常,都可能导致认证失败。这类问题不是把节点端口从 443 改成 80 就能解决的。

  1. Windows:进入「设置」→「时间和语言」→「日期和时间」,启用「自动设置时间」,使用「立即同步」后重新连接。仅改时区通常不会修正系统时间本身的偏差。
  2. 安卓:进入系统「设置」中的「日期和时间」,启用自动设置时间;不同设备可能将它放在「系统」或「其他设置」下。
  3. 复测:断开再连接原来的 VMess 节点,查看核心日志中认证错误是否消失。若其他 VMess 节点正常而单个节点失败,应让提供方核对该服务端的时间与账户配置。

VLESS 没有同样的协议认证时间窗口,但不代表系统时间可以随意设置。TLS 证书有生效和到期时间,明显错误的日期仍会引起证书验证失败。日志出现证书尚未生效或已过期时,先检查日期,再判断是本机时钟错误还是服务端证书问题。

传输搭配:按完整节点配置选择客户端

VMess + WebSocket + TLS 与 VLESS + WebSocket + TLS 都需要检查路径、Host 和 TLS 服务器名称。比如提供方指定路径为 /proxy,就不应改成 /。连接地址、HTTP Host 与 TLS 服务器名称承担不同角色,可能相同,也可能不同;以节点配置为准,不能把三个字段机械填成一个地址。

REALITY 节点还可能要求公钥、shortId 与服务器名称;启用 Vision 的节点则需要匹配相应流控。空填、误填或被订阅转换过程丢失的字段,都会影响连接。VLESS 协议名称本身并不能证明当前内核支持这些扩展组合。

Xray 内核与完整 VLESS 配置

推荐

对提供方明确要求 REALITY 或 Vision 的节点,优先核对 Xray 内核支持情况。桌面端使用 v2rayN 时确认所选核心,安卓端可使用 v2rayNG,并保留订阅中的传输、安全与流控参数。

适合:订阅包含 VLESS + REALITY,或明确指定 Xray 扩展的用户。

V2Fly 内核与兼容节点配置

已有 VMess + WebSocket + TLS 节点时,可按实际内核支持情况使用。安卓端 v2flyNG 使用 V2Fly 内核;不能把 Xray 的扩展组合视作必然兼容,导入后仍需核对字段和日志。

适合:提供方明确支持 V2Fly,且现有节点组合已验证可用的用户。

判断顺序:完整配置优先于协议名称

先确认协议、传输、安全层和流控均受支持,再做连接测试。已有 VMess 节点稳定可用时无需只为名称换成 VLESS;遇到明确要求 REALITY 的订阅时,则应先选择匹配的内核。

订阅导入:不要手工把 VMess 改成 VLESS

订阅是批量分发节点配置的方式,不是第三种代理协议。一个订阅可以同时包含 VMess 与 VLESS,也可能只有其中一种。客户端导入后,会把每个节点的协议、服务器和传输参数分别保存。订阅更新时出现“不支持”提示,应查看具体节点组合,而不是直接修改协议下拉框。

操作方案:同一订阅分别核对两端参数

桌面端:v2rayN
  • 在「订阅分组设置」中填写别名和地址,保存后执行更新订阅。
  • 打开一个节点的编辑窗口,核对协议、远端端口、传输与安全设置。
  • 确认实际使用的核心支持该节点组合,再设为活动服务器。
安卓端:v2rayNG
  • v2rayNG 订阅导入可从侧栏「订阅分组设置」添加地址,再通过主界面菜单更新订阅。
  • 检查 VLESS 节点的服务器名称、REALITY 参数和流控是否完整。
  • 启动连接并确认系统 VPN 授权,再打开网页测试。

两端可以使用同一订阅地址,但解析能力和更新时点可能不同;节点列表是否一致,要以更新后的实际结果为准。

菜单名称会随客户端界面版本变化;找不到入口时,可按“订阅分组”和“更新订阅”这两个功能名查找。只想了解 v2rayNG 下载与首次连接步骤,可前往客户端下载页和入门指南,不必手工重建全部节点参数。

V2Ray 节点测速:比较实际请求,不比较名称

VMess 的协议处理与 VLESS 的轻量结构确有区别,但最终体验还受到线路、服务器负载、传输方式、网络丢包和本地设备影响。两个节点的地区、入口或安全层不同,就不能把测速差异全部归因于 VMess 与 VLESS。本文不提供没有测试条件的速度百分比。

  1. 固定环境:使用同一设备、同一网络和同一测试目标;关闭正在占用带宽的下载任务。
  2. 固定路线:确认测试请求由当前节点转发,而不是被路由规则直连。TCP 端口可达只证明入口能连接,不证明代理认证成功。
  3. 重复请求:每个节点至少测试 3 次,记录成功次数、首字节时间和持续下载表现。不要用一次较低延迟覆盖多次失败。
  4. 查看日志:认证失败、TLS 错误与请求超时分别记录,先修复配置错误,再比较性能。

需要排除浏览器代理设置干扰时,可以显式指定本地 SOCKS 代理。下面的 127.0.0.1:10808 仅是本地监听示例;请替换成客户端显示的实际 SOCKS 或混合端口。它不是节点的远端 443 端口。

curl --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 30 --output /dev/null --write-out "HTTP=%{http_code} first_byte=%{time_starttransfer}s total=%{time_total}s\n" https://example.com/

该命令适用于已安装 curl 的类 Unix 终端;Windows 可用 curl.exe,并将输出目标 /dev/null 改为 NUL。socks5h 让目标域名通过 SOCKS 代理解析。10 秒连接超时与 30 秒总超时只是本次测试上限,不是协议的性能指标;示例站点也只用于检查请求,不作为带宽基准。

选择规则:先保留稳定成功的节点

同一目标重复请求后,优先保留成功率稳定、日志没有认证或证书错误的节点;只有在这些条件相近时,再比较延迟与吞吐。测试时一次只改一个参数,才能定位问题。

常见问题:协议正常,应用仍可能没有走代理

节点连接成功和应用流量进入代理是两件事。系统代理主要影响遵循系统代理设置的软件;v2rayN TUN 模式通过虚拟网络接口接管流量,具体范围仍受路由与排除规则影响。切换 VMess 或 VLESS 不会自动修正浏览器扩展、终端环境变量或分应用代理设置。

VLESS 写着 none,是不是没有加密?

先打开节点编辑窗口查看安全设置。基础 VLESS 的 encryption=none 不代表外层没有保护;若配置要求 TLS 或 REALITY,应核对这些字段是否完整,不能只凭 none 判断。

VMess 突然全连不上,先换协议吗?

先同步系统时间,再重试原节点并查看日志。如果所有 VMess 同时失败而其他连接正常,时间问题值得优先排查;不要把原节点直接改为 VLESS,服务端不会随之改变。

VLESS 能导入,但一连接就失败怎么办?

逐项对照订阅中的服务器端口、传输、TLS 服务器名称、REALITY 公钥、shortId 和流控。确认核心支持该组合,再检查日志;“能导入”只说明解析完成,不保证参数有效。

命令行能访问,浏览器却打不开?

若显式 SOCKS 请求成功,先检查浏览器的代理扩展和客户端系统代理状态。然后确认路由规则是否把目标分到直连;不要因为单个应用失败就认定 VMess 或 VLESS 不可用。

开启 TUN 后一定要选 VLESS 吗?

不需要。TUN 是本地接管流量的方式,不限定远端协议。先使用已经验证可用的节点,再检查虚拟接口、权限、DNS 和路由;开启前记下原设置,异常时关闭 TUN 复测。

日常选型可以归纳为一个顺序:先确认客户端和内核兼容,再核对订阅的完整参数,接着检查时间与证书,最后测试应用是否真正走代理。VMess 与 VLESS 的差别有助于定位问题,但不能代替这条检查流程。需要进一步检查出站标签、DNS 与路由匹配时,可查看配置大全。

客户端下载查看四个平台入口