跳到主要内容

VLESS

VLESS 是由 Xray 项目核心开发者 @rprx 于 2020 年设计的轻量级代理协议,长期与 Xray / XTLS 技术路线深度绑定(官方实现与文档主要集中在 Xray-coreXTLS 项目中)。它可以看作 VMess 的精简重构版:去掉了 VMess 中多余的应用层加密和时间戳校验机制,将所有加密工作交由底层传输层(TLS 或 Reality)处理,从而在保持安全性的同时获得更高的性能。

VLESS 目前是自建代理节点的首选协议之一,尤其是 VLESS + Reality 组合,在 2023 年后迅速成为社区最推荐的新建节点方案。

与 VMess 的核心区别

理解 VLESS,首先需要理解它和 VMess 的本质差异:

设计决策VMessVLESS
应用层加密有(独立于 TLS)无(完全依赖 TLS / Reality)
时间戳校验有(90 秒窗口)
身份认证UUID + 时间戳哈希UUID(无时间绑定)
协议开销中(双重加密时有损耗)低(无冗余加密层)
XTLS 支持不支持支持
Reality 支持不支持支持

VMess 在没有 TLS 的情况下也能通过自身的加密层运行(尽管不推荐)。VLESS 自身没有应用层加密,配置中的 encryption / decryption 通常为 none,因此实际部署中应配合 TLS、Reality 或其他可靠传输使用;裸 TCP 虽然在部分实现中可配置,但不适合作为安全的公网代理方案。

VLESS 的传输方案

VLESS 本身只是一个轻量的认证层,其实际的抗检测能力和性能高度依赖所选择的传输方案。以下是主要的几种组合:

VLESS + XTLS-Vision + TLS(推荐,需要域名)

XTLS-Vision 是 Xray / XTLS 体系的核心流控方案(见 XTLS 项目Xray-core 相关说明)。普通的 TLS-in-TLS 方案(如 VMess over WebSocket over TLS)会产生两层 TLS 加密,造成性能损耗,且内层 TLS 的特征可能暴露代理行为。XTLS-Vision 通过直接"拼接"内外层 TLS 数据流来解决这个问题:

普通 TLS-in-TLS:
[TLS outer] → 解密 → [TLS inner] → 解密 → 明文

XTLS-Vision:
[TLS outer 握手] → 完成后直接传递 [TLS inner 数据](无需双重解密)

效果:

  • 消除双重加密的性能损耗
  • 内层 TLS 数据流原样传输,使整体流量特征与正常的 HTTPS 访问高度吻合
  • 是目前 TCP 协议中性能最高的代理方案之一

缺点:需要一个域名和有效的 TLS 证书,服务器 IP 直接暴露(不能过 CDN)。

VLESS + Reality(推荐,无需域名)

Reality 是 VLESS 生态中最重要的创新,于 2023 年 1 月发布。它解决了 Trojan 和 VLESS + TLS 方案中"必须拥有域名和证书"的限制。

Reality 的工作原理:

Reality 利用 TLS 1.3 握手和 X25519 密钥机制,让客户端到代理服务器的连接在外观上接近访问指定的真实 TLS 站点(如 www.apple.comwww.microsoft.com 等):

观察者视角:
客户端 ---[TLS 握手,SNI = www.apple.com]---> 服务端

实际发生:
客户端与服务端通过 VLESS + Reality 建立代理连接
服务端并没有也不需要拥有 apple.com 的证书

Reality 通过一对专用的密钥对(privateKey / publicKey)实现这一过程中的安全认证,防止第三方冒充服务端。

Reality 的优势:

  • 无需域名,无需 TLS 证书
  • 可配合 uTLS / fingerprint 等参数改善 TLS 握手外观,降低与普通 HTTPS 的差异
  • 不会因为证书过期或域名失效而中断服务
  • 在"新疆"等特殊网络审查环境下被社区验证具有极高的抗检测能力
关于 Reality 的目标网站选择

Reality 配置中的 serverNames(SNI 目标)应选择真实存在、稳定、使用 TLS 1.3 且流量特征自然的大型网站(如 www.apple.comaddons.mozilla.orgwww.tesla.com 等)。避免使用你自己的其他域名,也不要选择容易触发异常流量特征的冷门站点。

VLESS + WebSocket + TLS(可过 CDN)

与 VMess + WebSocket + TLS 类似,适合需要通过 CDN(如 Cloudflare)隐藏服务器真实 IP 的场景。

  • 抗检测能力不如 XTLS-Vision 或 Reality
  • 延迟高于直连方案(经过 CDN 中转)
  • 服务器 IP 被封时仍可使用
  • 配置方式与 VMess + ws + tls 基本相同,替换协议字段即可

VLESS + gRPC + TLS(可过 CDN)

使用 gRPC 传输,Cloudflare CDN 对 gRPC 有原生支持。在某些网络环境下,gRPC 的多路复用特性带来更稳定的连接。

VLESS + Reality 详细配置

以下为基于 Xray-core 的 VLESS + Reality 配置示例,这是目前最推荐的自建节点方案。

前置条件

  • 一台具有公网 IP 的 VPS
  • 服务器已开放 443 端口
  • 已安装 Xray-core

安装 Xray-core

bash <(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) install

生成 Reality 密钥对

xray x25519

输出示例:

Private key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Public key: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

保存好这对密钥,Private key 填入服务端配置,Public key 填入客户端配置。

生成 UUID

xray uuid

服务端配置(/usr/local/etc/xray/config.json)

{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "your-uuid-here",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "www.apple.com:443",
"serverNames": [
"www.apple.com"
],
"privateKey": "your-private-key-here",
"shortIds": [
"a1b2c3d4"
]
}
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
]
}

shortIds 是一个短 ID 列表,用于在服务端区分不同客户端连接,可以是 2–16 位的十六进制字符串。可以使用 openssl rand -hex 4 生成一个 4 字节的短 ID。

启动与验证

systemctl enable xray
systemctl start xray
systemctl status xray
journalctl -u xray -f # 查看实时日志

客户端配置参数(以 sing-box 为例)

{
"type": "vless",
"tag": "vless-reality",
"server": "your.server.ip",
"server_port": 443,
"uuid": "your-uuid-here",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"server_name": "www.apple.com",
"utls": {
"enabled": true,
"fingerprint": "chrome"
},
"reality": {
"enabled": true,
"public_key": "your-public-key-here",
"short_id": "a1b2c3d4"
}
}
}

utls.fingerprint 用于模拟特定浏览器的 TLS 指纹,推荐使用 chromefirefox

VLESS + XTLS-Vision + TLS 配置

适合已有域名和证书的用户,性能极高,是 TCP 直连方案的最优选择。

Xray 服务端配置

{
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "your-uuid-here",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none",
"fallbacks": [
{
"dest": 8080
}
]
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"minVersion": "1.3",
"certificates": [
{
"certificateFile": "/etc/ssl/certs/your.domain.crt",
"keyFile": "/etc/ssl/private/your.domain.key"
}
]
}
}
}
]
}

关于 flow 字段

flow 字段用于指定 XTLS 流控方式,目前有效值为:

flow 值说明
xtls-rprx-vision当前推荐的 XTLS 流控方式,适用于 Reality 和 TLS 方案
空(不填)不启用 XTLS,适用于 WebSocket + TLS 等传输方式
关于旧版 flow 值

早期版本中存在 xtls-rprx-directxtls-rprx-splice 等流控方式,这些已在新版本中废弃。如果你的配置中仍有这些旧值,请升级客户端和服务端并改为 xtls-rprx-vision

优缺点

优点缺点
协议轻量,无冗余加密层,性能高安全部署应配合 TLS / Reality 等可靠传输
Reality 无需域名和证书Reality 配置相对于简单协议稍复杂
XTLS-Vision 性能极高(消除双重加密)WebSocket 变体延迟高于直连方案
抗检测能力在主流协议中最强之一客户端需要较新版本才支持 Reality
支持多种传输方式,灵活性高
回落机制完善(通过 Xray 实现)

适用场景

VLESS + Reality(推荐场景):

  • 新建自用代理节点的首选方案
  • 服务器没有域名,或不想管理证书
  • 网络审查严格,需要最强的 TLS 伪装能力
  • 在特殊区域(如新疆)需要稳定连接

VLESS + XTLS-Vision + TLS(推荐场景):

  • 已有域名和证书,追求最高的 TCP 传输性能
  • 对延迟极为敏感的场景
  • 希望服务端同时提供 Web 服务(回落机制)

VLESS + WebSocket + TLS(推荐场景):

  • 服务器 IP 不稳定或已被封,需要 CDN 中转
  • 部署在不支持直接监听 443 端口的环境(如共享主机)
  • 需要利用 Cloudflare Workers 进行额外处理

客户端支持

平台客户端VLESS + RealityVLESS + TLSVLESS + WS
Windows / macOS / LinuxMihomo支持支持支持
Windows / macOS / Linuxsing-box支持支持支持
Windows / macOS / LinuxXray / v2rayN支持支持支持
iOSShadowrocket支持支持支持
iOSStash支持支持支持
iOSQuantumult X支持支持支持
iOS / macOSSurge不支持不支持不支持
iOSLoon支持支持支持
AndroidNekoBox支持支持支持
AndroidHusi支持支持支持
AndroidExclave支持支持支持
Linuxdae支持支持支持
关于客户端支持

Quantumult X 的官方示例配置已列出 VLESS、VLESS over TLS、VLESS + Reality、VLESS + WebSocket/WSS 以及 vless-flow=xtls-rprx-vision 示例;但 Surge 官方 Proxy Policy 手册未列出 VLESS 代理类型。如果你主要使用 Surge,请选择 VMess、Trojan、Hysteria 2、TUIC、AnyTLS 或 Snell 等其官方支持的协议。

常见问题

Q:VLESS 和 VMess 用哪个?

新建节点一律推荐 VLESS。VMess 的唯一优势是历史兼容性——大量老旧节点和客户端仅支持 VMess。如果你是在使用机场订阅,以实际节点类型为准;如果是自建,选 VLESS + Reality。

Q:Reality 的目标网站(dest / serverNames)如何选择?

选择原则:

  1. 应选择真实存在、稳定、流量特征自然的境外网站
  2. 必须支持 TLS 1.3
  3. 最好选择大型知名网站(苹果、微软、Mozilla 等),因为访问这类网站是正常用户行为
  4. 目标网站必须真实存在并正常运行

Q:shortId 是什么,有什么用?

shortId 是 Reality 握手过程中客户端携带的短标识符,服务端通过它验证连接是否来自合法客户端。你可以配置多个 shortId 对应多个客户端,每个客户端使用不同的 shortId。

Q:VLESS + Reality 能过 CDN 吗?

不能。Reality 依赖直接的 TCP 连接,无法通过 CDN 中转。如果需要 CDN,请使用 VLESS + WebSocket + TLS 方案。

延伸阅读