机场知识 知识解读
VMess 是什么?V2Ray 经典协议的加密、认证与传输组合
VMess 是 V2Ray 的原生代理协议,自带加密并以 UUID 和时间戳认证。本文解释它的工作原理、alterId 与 AEAD 认证的区别、WS + TLS 等常见传输组合、客户端支持,以及它在机场中的定位。
- 作者
- 网络研究组
- 首次发布
- 最后更新
- 内容类型
- 知识解读
- 资料核对
- 阅读时间
- 约 3 分钟
信息可能随服务调整而变化,请以最新官方信息为准。
直接答案
VMess 是 V2Ray 项目最早推出的代理协议,用 UUID 识别用户,并结合时间戳完成认证,协议本身自带加密。它可以运行在 TCP、WebSocket、gRPC 等多种传输方式上,最常见的机场组合是 VMess + WebSocket + TLS。VMess 成熟、兼容性好,但开销比 VLESS 大,并且对两端系统时间比较敏感,时间偏差过大会导致无法连接。
- 定义 VMess
- V2Ray 设计的有状态加密代理协议。客户端使用 UUID 作为身份凭证,请求头中携带基于时间的认证信息,数据部分按选定的加密方式加密,可承载于 TCP、WebSocket、gRPC 等多种传输层之上。
Key Takeaways · 要点速览
- VMess 自带加密,用 UUID 加时间戳认证,系统时间偏差过大会直接连不上。
- 旧的 alterId 认证方式已被 AEAD 认证取代,alterId 设为 0 即启用 AEAD。
- 常见组合是 VMess + WS + TLS,可以经过 CDN,但多一层加密带来额外开销。
- 新部署多转向 VLESS,VMess 主要因兼容性仍保留在不少订阅中。
VMess 的直接解释
VMess 是 V2Ray 项目最早的核心协议,在很长一段时间里几乎是「V2Ray 节点」的代名词。它的设计目标是在不依赖外部 TLS 的情况下也能独立完成认证和加密:客户端用 UUID 证明身份,用时间戳防止重放,再用协商好的加密方式保护数据。
后来,人们发现把 VMess 再套进 TLS 能获得更好的伪装,于是出现了「VMess + WebSocket + TLS」这一经典组合。此时数据被加密了两次,这也是后续 VLESS 选择去掉协议自身加密的原因。
工作原理
- 客户端与服务器共享同一个 UUID,作为用户身份。
- 客户端发起连接时,用 UUID 和当前时间生成认证信息放在请求头中。
- 服务器在允许的时间窗口内校验认证信息,通过后解析目标地址。
- 后续数据按选定的加密方式加密传输。
注意VMess 对系统时间敏感,两端时间相差过大(官方文档给出的容差在分钟级以内,以 V2Ray / Xray 文档为准)就会认证失败,表现为节点全部超时或连接被重置。时区设置正确但时间本身不准,同样会出问题,建议开启系统自动对时。
alterId 与 AEAD 认证
早期 VMess 使用 alterId 参数配合旧式认证,后来被发现存在可被探测的弱点。V2Ray 随后引入 VMessAEAD 认证,alterId 设为 0 即启用新方式。较新的内核已逐步淘汰旧认证,订阅里如果仍出现较大的 alterId 值,可能是服务端配置较旧。
加密选项
| 选项 | 含义 |
|---|---|
| auto | 客户端按设备情况自动选择,通常是默认值 |
| aes-128-gcm | 适合带 AES 硬件加速的电脑与手机 |
| chacha20-poly1305 | 适合无 AES 加速的设备 |
| none / zero | 不额外加密,通常仅在外层已有 TLS 时使用,按服务端配置为准 |
常见传输组合
| 组合 | 特点 | 适用情况 |
|---|---|---|
| VMess + TCP | 最简单,无伪装 | 内网或中转链路 |
| VMess + WS + TLS | 外观为 HTTPS 网站上的 WebSocket,可经过 CDN | 最常见的机场组合 |
| VMess + gRPC + TLS | 基于 HTTP/2,支持多路复用 | 部分机场与 CDN 场景 |
| VMess + HTTP/2 + TLS | 基于 HTTP/2 | 较少见 |
| VMess + mKCP | 基于 UDP,带重传机制 | 特定弱网场景,流量开销较大 |
优点与局限
优点
- 生态成熟,多年大规模使用,文档与教程丰富。
- 传输方式灵活,WebSocket 组合可以借助 CDN 隐藏服务器真实 IP。
- 主流客户端几乎都支持。
局限
- 协议自带加密,叠加 TLS 后形成双重加密,CPU 与流量开销更大。
- 依赖时间同步,设备时间不准就无法使用。
- 新特性主要集中在 VLESS 上,VMess 本身更新较少。
客户端支持情况
| 客户端 | VMess | 说明 |
|---|---|---|
| v2rayN | 支持 | V2Ray / Xray 生态原生协议 |
| Clash Verge Rev(Mihomo 内核) | 支持 | 常见传输方式均可用 |
| sing-box | 支持 | 以官方文档列出的传输方式为准 |
| Shadowrocket / Stash | 支持 | 传输方式支持以最新版本说明为准 |
| Surge | 支持 | 传输方式支持以官方说明为准 |
客户端设置可参考 v2rayN 完整使用教程。
在机场中的使用场景
- 兼容性兜底:老设备或旧客户端不支持新协议时,VMess 节点往往还能用。
- CDN 中转节点:VMess + WS + TLS 经过 CDN 时,可以在服务器 IP 不理想的情况下保持连通,但延迟通常更高。
- 逐步被替代:不少机场已把主力节点迁移到 VLESS、Trojan 或 Hysteria2,VMess 只保留少量。
如果 VMess + TLS 节点报证书或握手错误,可参考 TLS 握手失败怎么办。
结论
VMess 是代理协议发展中的重要一代,自带加密、传输灵活、兼容性好。它的代价是额外的开销和对时间同步的依赖。在订阅中仍有 VMess 节点时可以正常使用,但如果同一地区还有 VLESS 或 Trojan 节点,通常优先考虑后者。更多协议对比见 代理协议对比。
常见问题
VMess 节点突然全部连不上,可能是什么原因?
最常见的原因是设备系统时间不准。VMess 认证依赖时间戳,两端时间相差过大时服务器会拒绝连接。先开启系统的自动对时,再重试;如果仍失败,再检查订阅是否过期或节点是否维护。
alterId 应该填多少?
现在应填 0,表示使用 VMessAEAD 认证。较大的 alterId 对应旧认证方式,安全性和抗探测能力较弱,较新的内核也可能不再支持。使用机场订阅时以订阅下发的参数为准。
VMess 和 VLESS 有什么区别?
VMess 自带加密并依赖时间认证,VLESS 去掉了协议自身的加密,交给 TLS 或 Reality 处理,开销更小,也不依赖时间同步。两者都来自 V2Ray / Xray 生态,新节点更多采用 VLESS。
VMess 还安全吗?
使用 AEAD 认证并配合 TLS 时,VMess 的数据仍是加密的,日常使用没有明显问题。它的主要劣势在于额外开销和流量特征,而不是数据会被直接解密。