VLESS
VLESS 是由 Xray 项目核心开发者 @rprx 于 2020 年设计的轻量级代理协议。它可以看作 VMess 的精简重构版:去掉了 VMess 中多余的应用层加密和时间戳校验机制,将所有加密工作交由底层传输层(TLS 或 Reality)处理,从而在保持安全性的同时获得更高的性能。
VLESS 目前是自建代理节点的首选协议之一,尤其是 VLESS + Reality 组合,在 2023 年后迅速成为社区最推荐的新建节点方案。
与 VMess 的核心区别
理解 VLESS,首先需要理解它和 VMess 的本质差异:
| 设计决策 | VMess | VLESS |
|---|---|---|
| 应用层加密 | 有(独立于 TLS) | 无(完全依赖 TLS / Reality) |
| 时间戳校验 | 有(90 秒窗口) | 无 |
| 身份认证 | UUID + 时间戳哈希 | UUID(无时间绑定) |
| 协议开销 | 中(双重加密时有损耗) | 低(无冗余加密层) |
| XTLS 支持 | 不支持 | 支持 |
| Reality 支持 | 不支持 | 支持 |
VMess 在没有 TLS 的情况下也能通过自身的加密层运行(尽管不推荐),而 VLESS 设计上必须配合 TLS 或 Reality 使用——这不是缺陷,而是一种"职责分离"的设计哲学:让专业的加密协议(TLS)做加密,让 VLESS 只做最核心的身份认证和流量转发。
VLESS 的传输方案
VLESS 本身只是一个轻量的认证层,其实际的抗检测能力和性能高度依赖所选择的传输方案。以下是主要的几种组合:
VLESS + XTLS-Vision + TLS(推荐,需要域名)
XTLS-Vision 是 Xray 项目独创的流控方案。普通的 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 的扩展特性(ECH/ESNI 的原理类似),在不与目标网站建立真实连接的情况下,让客户端的 TLS 握手看起来像在访问一个指定的真实网站(如 www.apple.com、www.microsoft.com 等):
观察者视角:
客户端 ---[TLS 握手,SNI = www.apple.com]---> 服务端
实际发生:
客户端与服务端通过 VLESS + Reality 建立代理连接
服务端并没有也不需要拥有 apple.com 的证书
Reality 通过一对专用的密钥对(privateKey / publicKey)实现这一过程中的安全认证,防止第三方冒充服务端。
Reality 的优势:
- 无需域名,无需 TLS 证书
- 流量 TLS 指纹与访问指定真实网站完全一致(因为使用了真实的 TLS 1.3 实现)
- 不会因为证书过期或域名失效而中断服务
- 在"新疆"等特殊网络审查环境下被社区验证具有极高的抗检测能力
关于 Reality 的目标网站选择
Reality 配置中的 serverNames(SNI 目标)应选择真实存在、在中国大陆无法直接访问、且使用 TLS 1.3 的网站(如 www.apple.com、addons.mozilla.org、www.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 指纹,推荐使用 chrome 或 firefox。
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-direct、xtls-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 + Reality | VLESS + TLS | VLESS + WS |
|---|---|---|---|---|
| Windows / macOS / Linux | Mihomo | 支持 | 支持 | 支持 |
| Windows / macOS / Linux | sing-box | 支持 | 支持 | 支持 |
| Windows / macOS / Linux | Xray / v2rayN | 支持 | 支持 | 支持 |
| iOS | Shadowrocket | 支持 | 支持 | 支持 |
| iOS | Stash | 支持 | 支持 | 支持 |
| iOS | Quantumult X | 不支持 | 支持 | 支持 |
| iOS / macOS | Surge | 支持(需新版) | 支持 | 支持 |
| iOS | Loon | 支持 | 支持 | 支持 |
| Android | NekoBox | 支持 | 支持 | 支持 |
| Android | Husi | 支持 | 支持 | 支持 |
| Android | Exclave | 支持 | 支持 | 支持 |
| Linux | dae | 支持 | 支持 | 支持 |
关于 Quantumult X
Quantumult X 不支持 Reality,但支持标准的 VLESS + TLS 和 VLESS + WebSocket + TLS 方案。如果你主要使用 QX,且节点需要最强抗检测能力,可以考虑搭配 Shadowrocket 或 Stash 使用。
常见问题
Q:VLESS 和 VMess 用哪个?
新建节点一律推荐 VLESS。VMess 的唯一优势是历史兼容性——大量老旧节点和客户端仅支持 VMess。如果你是在使用机场订阅,以实际节点类型为准;如果是自建,选 VLESS + Reality。
Q:Reality 的目标网站(dest / serverNames)如何选择?
选择原则:
- 必须是在中国大陆无法直接访问的境外网站
- 必须支持 TLS 1.3
- 最好选择大型知名网站(苹果、微软、Mozilla 等),因为访问这类网站是正常用户行为
- 目标网站必须真实存在并正常运行
Q:shortId 是什么,有什么用?
shortId 是 Reality 握手过程中客户端携带的短标识符,服务端通过它验证连接是否来自合法客户端。你可以配置多个 shortId 对应多个客户端,每个客户端使用不同的 shortId。
Q:VLESS + Reality 能过 CDN 吗?
不能。Reality 依赖直接的 TCP 连接,无法通过 CDN 中转。如果需要 CDN,请使用 VLESS + WebSocket + TLS 方案。