OVEROUTESOVEROUTES
首页
阅读须知
  • 总览
  • 选购要点
  • 协议详解
  • 客户端使用
  • 概述
  • IP 与线路
  • 选型指南
  • 选购参考
  • 基础部署
  • 安全加固
  • 概述
  • 3X-UI
  • Xboard
  • 协议总览
  • Shadowsocks
  • Shadowsocks 2022
  • VMess
  • Trojan
  • VLESS
  • Hysteria 2
  • TUIC
  • AnyTLS
  • NaiveProxy
  • Mieru
  • ShadowTLS
  • VLESS-XHTTP
  • WireGuard
  • 传统协议
  • 孤家寡人协议
  • 软件总览
  • Mihomo
  • sing-box
  • Xray
  • V2Fly
  • dae (Linux)
  • Shadowrocket (iOS)
  • QuantumultX (iOS)
  • Stash (iOS/macOS)
  • Loon (iOS)
  • Surge (macOS/iOS)
  • NekoBox (Android)
  • Husi (Android)
  • Exclave (Android)
配置
首页
阅读须知
  • 总览
  • 选购要点
  • 协议详解
  • 客户端使用
  • 概述
  • IP 与线路
  • 选型指南
  • 选购参考
  • 基础部署
  • 安全加固
  • 概述
  • 3X-UI
  • Xboard
  • 协议总览
  • Shadowsocks
  • Shadowsocks 2022
  • VMess
  • Trojan
  • VLESS
  • Hysteria 2
  • TUIC
  • AnyTLS
  • NaiveProxy
  • Mieru
  • ShadowTLS
  • VLESS-XHTTP
  • WireGuard
  • 传统协议
  • 孤家寡人协议
  • 软件总览
  • Mihomo
  • sing-box
  • Xray
  • V2Fly
  • dae (Linux)
  • Shadowrocket (iOS)
  • QuantumultX (iOS)
  • Stash (iOS/macOS)
  • Loon (iOS)
  • Surge (macOS/iOS)
  • NekoBox (Android)
  • Husi (Android)
  • Exclave (Android)
配置
  • 主流序列

    • 代理协议总览
    • Shadowsocks
    • Shadowsocks 2022
    • VMess
    • Trojan
    • VLESS
    • Hysteria 2
  • 新生序列

    • TUIC
    • AnyTLS
  • 小众序列

    • NaiveProxy
    • Mieru
    • SS-ShadowTLS
    • VLESS-XHTTP
  • 传统与其他

    • WireGuard
    • 传统协议
    • 孤家寡人协议

VMess

VMess 是 V2Ray 项目于 2015 年前后设计并引入的专有代理协议。它是 V2Ray 最具代表性的协议,在 VMess 诞生之前,V2Ray 核心实际上并不存在——VMess 协议的设计驱动了整个 V2Ray 项目的发展。时至今日,VMess 仍是机场服务中使用量最大的协议之一,尽管其在新建节点中正逐渐被 VLESS 取代。

历史背景

V2Ray 项目由 @clowwindy 的 Shadowsocks 被迫停更后不久启动。其核心团队 Project V 希望设计一个比 Shadowsocks 更难被识别、更安全的协议。VMess(全称 V2Ray Message)就是这一目标的产物。

VMess 的关键设计理念是:

  • 使用 UUID 作为用户身份标识,而非共享密码
  • 引入时间戳校验,防止重放攻击
  • 支持多种传输层封装,可以将流量伪装为 WebSocket、HTTP/2、gRPC 等标准协议

随着时间推移,V2Ray 的后继项目 Xray 在 VMess 的基础上推出了更轻量的 VLESS 协议,逐步将 VMess 的新建份额分流。但由于历史积累,VMess 在现有机场节点中的比例依然可观。

工作原理

身份认证机制

VMess 使用 UUID(通用唯一识别码)作为用户凭证。UUID 是一个 128 位的随机标识符,例如:

9f67b8a2-3c1d-4e5f-a6b7-c8d9e0f1a2b3

客户端在发起连接时,会使用 UUID 结合当前时间戳计算出一个认证信息,服务端通过验证该认证信息来确认请求的合法性。

时间戳校验

VMess 协议要求客户端和服务端的系统时间误差不超过 90 秒。这一设计使得重放攻击的时间窗口极短——即使攻击者捕获了完整的握手数据,也必须在 90 秒内完成重放,超过这个时间窗口,数据包会被服务端拒绝。

关于时间同步

VMess 连接失败最常见的原因之一就是客户端或服务端时间不准确。如果出现莫名其妙的连接失败,请先检查双端时间是否同步。在 Linux 服务器上,可以通过 timedatectl status 查看时间同步状态。

传输流程

客户端
  |
  | 1. 生成请求头(含 UUID 认证、加密方式、目标地址)
  | 2. 用协商好的加密方式加密请求体
  | 3. 封装到指定传输层(TCP / WebSocket / gRPC / HTTP/2 等)
  v
服务端
  |
  | 4. 验证时间戳和 UUID 认证信息
  | 5. 解密请求头,获取目标地址和加密参数
  | 6. 解密请求体,转发至目标
  v
目标服务器

加密方式

VMess 支持对请求体和响应体分别配置加密方式:

加密方式说明
auto自动选择(推荐),在支持 AES 硬件加速的平台选 aes-128-gcm,否则选 chacha20-poly1305
aes-128-gcm性能好,在 x86/x64 平台有硬件加速
chacha20-poly1305适合移动端和低端设备
none不加密,仅用于已有 TLS 的场景(如 WebSocket + TLS),减少双重加密的开销

关于 none 加密

当 VMess 配合 TLS 传输层使用时(如 WebSocket + TLS),可以将 VMess 层的加密设置为 none,避免双重加密带来的性能损耗。此时整体安全性不会降低,因为 TLS 本身提供了加密保护。

传输方式

VMess 最大的特点是支持多种传输层封装,这也是它比原版 Shadowsocks 更灵活的地方。

TCP

最基础的传输方式,直接在 TCP 上传输 VMess 数据。不进行任何流量伪装,不建议在严格检测环境中单独使用。

WebSocket + TLS(ws+tls)

最常见的 VMess 配置,将 VMess 流量封装在 WebSocket 连接中,并通过 TLS 加密。

  • 流量看起来像标准的 HTTPS WebSocket 连接
  • 可以部署在反向代理(Nginx、Caddy)之后,共用 443 端口
  • 支持通过 CDN(如 Cloudflare)中转,隐藏服务器真实 IP
  • 是机场中最广泛使用的 VMess 配置形式

HTTP/2 + TLS(h2+tls)

使用 HTTP/2 协议封装,相比 WebSocket 有更低的握手开销,但 CDN 支持不如 WebSocket 广泛。

gRPC + TLS

使用 gRPC 协议封装,Cloudflare CDN 原生支持 gRPC 中转。在部分被限速的环境下,gRPC 的多路复用特性可以带来更好的性能表现。

QUIC

基于 UDP 的传输方式,在高丢包环境下理论上优于 TCP。但由于 V2Ray/Xray 的 QUIC 实现与标准 QUIC 存在差异,实际使用中被 UDP 封锁的风险较高,目前并不推荐。

HTTPUpgrade

伪装为 HTTP 协议升级请求,是 WebSocket 的一种变体。配置简单,但流量特征与标准 WebSocket 有细微差别。

SplitHTTP / XHTTP

较新的传输方式,详见 VLESS-XHTTP 章节。

与 CDN 配合使用

VMess + WebSocket + TLS 配合 CDN(以 Cloudflare 为例)是一种经典的高可用方案:

用户
 |
 | HTTPS
 v
Cloudflare CDN(隐藏真实 IP)
 |
 | 回源 HTTPS
 v
你的服务器(Nginx/Caddy 反向代理)
 |
 v
VMess 服务端(监听本地端口)

这种方案的优点是:

  • 即使服务器 IP 被封,流量仍可通过 CDN 的 IP 到达
  • Cloudflare 的 IP 段极大,全部封锁的成本很高
  • 支持 Cloudflare Workers 进行进一步的流量处理

缺点是:

  • 经过 CDN 中转后延迟会显著增加(通常增加 20–100ms)
  • Cloudflare 免费版有流量限制(技术上不允许用于代理,存在被封号风险)
  • 吞吐量受 CDN 节点的出口带宽限制

优缺点

优点缺点
传输方式丰富,配置灵活协议本身相对复杂,存在已知的安全弱点
WebSocket + TLS 可过 CDN纯 TCP 模式容易被主动探测
生态成熟,大量现有节点和文档时间戳校验要求客户端和服务端时间同步
UUID 认证机制完善性能不如 VLESS(多了一层协议加密)
客户端支持广泛逐渐被 VLESS 在新部署中取代
可搭配多种反向代理双重加密(VMess + TLS)有一定性能损耗

与 VLESS 的关系

VMess 和 VLESS 都是 V2Ray/Xray 生态的产物,经常被放在一起比较:

对比维度VMessVLESS
协议加密有(独立于 TLS)无(完全依赖 TLS/Reality)
时间校验90 秒窗口无
性能中(双重加密时略有损耗)高(无冗余加密)
与 XTLS / Reality 兼容不支持支持
CDN 支持支持(WebSocket + TLS)支持(WebSocket + TLS)
新建节点推荐度不推荐(建议用 VLESS)推荐

新建节点建议

如果你正在搭建一个全新的代理节点,建议直接选择 VLESS 而不是 VMess。VLESS 去除了冗余的加密层,性能更高,且支持 XTLS-Vision 和 Reality 等更强大的特性。VMess 目前的主要价值在于兼容已有的订阅节点和老旧客户端。

适用场景

仍适合使用 VMess 的场景:

  • 订阅机场服务时,机场提供的节点以 VMess 为主
  • 需要兼容不支持 VLESS 的老旧客户端
  • 现有 VMess 节点工作稳定,不需要迁移
  • 配合 CDN 使用,需要 WebSocket + TLS 方案

不推荐新建 VMess 节点的场景:

  • 全新搭建节点(改用 VLESS + Reality)
  • 追求最高性能(VLESS 无冗余加密开销)
  • 需要最强抗检测能力(VLESS + Reality / AnyTLS 更优)

服务端配置参考

以下为基于 Xray-core 的 VMess + WebSocket + TLS 配置示例。

前置条件

  • 一个指向你服务器 IP 的域名
  • 有效的 TLS 证书(可以使用 Caddy 或 acme.sh 自动申请)
  • 服务器已开放 443 端口

Xray 服务端配置(config.json 节选)

{
  "inbounds": [
    {
      "port": 10086,
      "listen": "127.0.0.1",
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "9f67b8a2-3c1d-4e5f-a6b7-c8d9e0f1a2b3",
            "alterId": 0
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "/your-secret-path"
        }
      }
    }
  ]
}

alterId 设置为 0 表示启用 VMessAEAD 模式(推荐)。旧版的 alterId > 0 模式存在安全问题,已不建议使用。

Nginx 反向代理配置

server {
    listen 443 ssl;
    server_name your.domain.com;

    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location /your-secret-path {
        proxy_pass http://127.0.0.1:10086;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }

    location / {
        root /var/www/html;
    }
}

生成 UUID

可以使用以下任意方式生成一个新的 UUID:

# 方法一:使用系统工具(Linux)
cat /proc/sys/kernel/random/uuid

# 方法二:使用 Xray 内置工具
xray uuid

# 方法三:使用 Python
python3 -c "import uuid; print(uuid.uuid4())"

VMessAEAD 说明

早期的 VMess 协议使用基于时间戳的 MD5 认证头,后来发现这种设计在理论上可以被主动探测。为此,Xray 推出了 VMessAEAD 模式,将认证头也使用 AEAD 加密,消除了这一弱点。

VMessAEAD 的启用方式是将 alterId 设置为 0。旧的非 AEAD 模式(alterId > 0)已不再推荐。

注意

部分机场的旧节点可能仍使用 alterId > 0 的旧模式。使用此类节点时,流量认证的安全性低于 AEAD 模式。如果机场提供了同协议的新节点,建议优先选择 alterId 为 0 的版本。

客户端支持

平台客户端支持状态
Windows / macOS / LinuxMihomo、sing-box、Xray、v2rayN、V2Fly支持
iOSShadowrocket、Stash、Quantumult X、Surge、Loon支持
macOSStash、Surge支持
AndroidNekoBox、Husi、Exclave支持
Linuxdae、sing-box、Mihomo支持

VMess 是除 Shadowsocks 外客户端支持最广泛的协议之一,几乎所有代理软件都提供了完善的支持。

延伸阅读

  • VLESS 协议 — VMess 的后继协议,推荐用于新建节点
  • Shadowsocks — 了解另一个历史悠久的经典协议
  • 代理协议总览 — 回到协议总览页面
最近更新: 2026/4/8 16:01
Prev
Shadowsocks 2022
Next
Trojan