机场博客JICHANGBOKE.ORG

VMess 和 VLESS 有什么区别

作者 塔台君发布 约 3 分钟读完

两者同样用 UUID 认用户。VMess 自带加密并把系统时间算进认证,时钟差 90 秒就连不上。VLESS 去掉了内置加密和时间依赖,必须配合 TLS 或 REALITY,节点里多一行 flow。

机场同时下发两种节点的话,把 Clash 订阅里的 VMess 和 VLESS 各抄一条出来上下摆着,差别一眼能看完。

proxies:
  - name: "日本 VMess"
    type: vmess
    server: jp01.example.com
    port: 443
    uuid: 00000000-0000-4000-8000-000000000000
    alterId: 0
    cipher: auto
    tls: true
    servername: jp01.example.com
    udp: true

  - name: "日本 VLESS"
    type: vless
    server: jp02.example.com
    port: 443
    uuid: 00000000-0000-4000-8000-000000000000
    flow: xtls-rprx-vision
    tls: true
    servername: jp02.example.com
    udp: true

相同的那一行是 uuid。两种协议都用一串 UUID 当用户身份,这是它们同出一源的地方。往下 VMess 多了 alterIdcipher,VLESS 多了 flow。字段拼法取自 Mihomo 文档里的节点示例,机场面板生成订阅时照着这套写。

把四家文档摆在一起,差异集中在这么几项。

看哪一栏 VMess VLESS
认用户 uuid uuid
自带加密 有,cipher 选算法 没有,Mihomo 里写 encryption: ""
依赖系统时间 依赖,V2Fly 容差 90 秒,Xray 容差 120 秒 不依赖
必须有外层 TLS 是,或改用 REALITY
流控字段 flow,取值 xtls-rprx-vision
历史包袱字段 alterId,现在填 0

alterId 和 cipher 这两行在管什么

cipher 是 VMess 自己的加密算法。Mihomo 文档列的可选值有 autononezeroaes-128-gcmchacha20-poly1305,V2Fly 那边一样,Xray 的文档只留了三个,aes-128-gcmchacha20-poly1305 和默认的 auto。订阅里一般写 auto,由内核按运行平台挑一个。

alterId 的来历要绕一点。V2Fly 文档对它的解释是,为了进一步防止被探测,一个用户可以在主 ID 的基础上再额外生成多个 ID。这套办法后来被 VMessAEAD 取代了,文档写明,4.28.1 版本之后客户端 alterId 设为 0 代表启用 VMessAEAD,服务端自动适配。sing-box 的说法更省事,alter_id 为 0 走 AEAD 协议,为 1 走旧协议,大于 1 的值没有用处,行为和 1 相同。Xray 的 VMess 出站文档干脆不再提这个字段。

所以现在看到一条 VMess 节点写着 alterId: 16,基本可以判断这份配置是从几年前的教程里抄来的。机场面板发的订阅都写 0。

VLESS 把加密整个交给了外层

VLESS 节点里找不到 cipher,因为它自己不做加密。V2Fly 的 VLESS 页面要求 encryption 字段现阶段需要填 none 且不能留空,理由写得很直白,就是为了提醒使用者没有加密。Mihomo 的 VLESS 示例里那一行是 encryption: ""

既然协议本身不加密,外面那层就成了必需品。Xray 文档的原话是,VLESS 必须配合传输安全层使用,只有当对端是私有地址且链路处于受信网络中,或者已经启用 VLESS Encryption 时,才允许把传输安全设成 none。落到订阅上就是,一条正常的 VLESS 节点要么带 tls: true,要么带一段 reality-opts,关于后者可以看 REALITY 和 Vision 那几个参数

flow 这一行是 VLESS 独有的流控开关。Xray 文档列出的取值有两个,xtls-rprx-vision 会拦截目标为 443 端口的 UDP 流量,xtls-rprx-vision-udp443 除了不拦 UDP 443 之外和前者相同。sing-box 只认 xtls-rprx-vision。这一栏由机场决定,用户不用管,但它出现在节点里说明服务端那边开了 Vision。

顺带说一个容易混淆的地方。VMess 也能开 TLS,tls: true 在两种节点里都合法。区别在于 VMess 开不开 TLS 都能工作,VLESS 不开就没有任何保护。

换成 sing-box 的 JSON,同样两条节点是这个样子,TLS 相关的东西全部收进一个 tls 对象里。

{
  "outbounds": [
    {
      "type": "vmess",
      "tag": "jp-vmess",
      "server": "jp01.example.com",
      "server_port": 443,
      "uuid": "00000000-0000-4000-8000-000000000000",
      "security": "auto",
      "alter_id": 0,
      "tls": { "enabled": true, "server_name": "jp01.example.com" }
    },
    {
      "type": "vless",
      "tag": "jp-vless",
      "server": "jp02.example.com",
      "server_port": 443,
      "uuid": "00000000-0000-4000-8000-000000000000",
      "flow": "xtls-rprx-vision",
      "tls": { "enabled": true, "server_name": "jp02.example.com" }
    }
  ]
}

VMess 那边加密算法叫 security 而不是 cipher,端口是 server_port。还有一项两边都有的 packet_encoding,管的是 UDP 怎么打包,sing-box 文档给的取值是空值、packetaddrxudp,其中 packetaddr 由 v2ray 5 以上支持,xudp 由 xray 支持。这一栏对不上的话,游戏和语音会不通,网页照常。

时间这件事只卡 VMess

VMess 把当前时间算进了认证。V2Fly 的要求是系统 UTC 时间误差在 90 秒之内,时区无关,Xray 写的是 120 秒。VLESS 这边,V2Fly 文档把它描述成一个无状态的轻量传输协议,并明确说它不依赖系统时间。

这条差别在排查时很好用。同一份订阅里 VMess 节点整组超时、VLESS 节点还能连,先去看设备时钟,别急着找机场客服。台式机主板电池没电、手机关掉了自动对时,都会造成这种局面。连不上的排查顺序那篇里把这一步放得比较靠前,原因就在这儿。

同一个协议名,两个项目给的说法不一样

查 VLESS 资料的时候会碰到一件让人犯迷糊的事。V2Fly 文档的 VLESS 页面顶上挂着一条提示框,原文写的是 VLESS 已被弃用并且可能被移除,请考虑使用 Trojan 作为替代品。同一天去看 Xray 的文档,VLESS 页面上有完整的 flow 取值说明,还提到了较新的 VLESS Encryption。

两边说的是同一个协议,态度相反,是因为它们本来就是两个项目。VLESS 由 Xray 所属的 Project X 提出并维护,Xray 的仓库建于 2020 年 11 月。V2Fly 维护的是 v2ray-core 这条线,跟进过一版 VLESS,现在选择把它标成弃用。

对用户的意义只有一句。照着文档配参数之前,先确认自己的客户端用的是哪个内核。v2rayN 默认带 Xray,安卓的 v2rayNG 也是 Xray,Clash 系客户端跑的是 Mihomo,三家对 VLESS 的支持都在,字段拼法各不相同。

本站 28 家机场里,两者的出现频率差很多

本站收录的 28 家机场,资料里写明协议的有 8 家。VLESS 出现 6 次,是自述里最常见的一种。VMess 一次也没有出现。数据来自机场官网自述与站长资料,核对日 2026-08-09,本站没有逐家抓包验证。

没人在宣传里提 VMess,不代表订阅里就没有。老机场留着 VMess 节点给旧客户端兜底是常见做法,导进客户端看类型标签才知道。要看更完整的六种协议对照,可以读怎么按字段认协议。挑机场时协议本身不必当成主要指标,榜单里各家的线路和套餐差得更远。

VLESS 节点连不上,排查口和 VMess 不一样。先看内核认不认,原版 Clash 内核不支持 VLESS,还在用老客户端的人会发现这类节点根本进不了列表。内核没问题就去看 TLS 那几行,servername 填错、证书过期、订阅里的 flow 和服务端对不上,表现都是握手阶段失败。这几处都排掉,剩下的就是线路问题了。

常见问题

VMess 节点的 alterId 该填几

填 0。V2Fly 文档写明,4.28.1 版本之后客户端 alterId 设为 0 代表启用 VMessAEAD,服务端自动适配。sing-box 的说法更直接,alter_id 为 0 走 AEAD 协议,为 1 走旧协议,大于 1 的值没有用处,行为和 1 相同。Xray 的 VMess 出站文档里已经不再列这个字段。

VLESS 节点一定要开 TLS 吗

要。Xray 文档写明 VLESS 必须配合传输安全层使用,只有对端是私有地址且链路处于受信网络中,或者已经启用 VLESS Encryption,才允许把传输安全设成 none。所以订阅里的 VLESS 节点要么带 tls: true,要么带一段 reality-opts,两者都没有的话八成是配置写漏了。

为什么有的文档说 VLESS 已经被弃用

那是 V2Fly 项目的说法。V2Fly 文档的 VLESS 页面顶部挂着一条提示,写的是 VLESS 已被弃用并且可能被移除,请考虑使用 Trojan 作为替代品。VLESS 出自另一个项目 Xray,在 Xray 的文档里它仍在更新,flow 流控和 REALITY 都还在往前做。看哪家文档,取决于你的客户端用的是哪个内核。

同一个订阅里 VMess 节点全超时,VLESS 却正常

先查设备时钟。VMess 把当前时间算进认证,V2Fly 要求系统 UTC 时间误差在 90 秒以内,Xray 写的是 120 秒,都和时区无关。VLESS 不依赖系统时间,所以时钟走偏的时候只有 VMess 那一组会集体掉线。校准时间后一般就恢复了。

来源

VMessVLESS代理协议Xray

接着读