VLESS
VLESS 是 Xray 生态中的无状态轻量代理传输协议,负责客户端到代理服务端的请求表达与身份字段;传输方式和 TLS/REALITY 等传输安全属于独立层。
[!info] related notes
- 所属 MOC: 计算机网络 MOC
- 前置概念: 代理协议
- 并列概念: SNI
- 易混淆概念: REALITY
- 关系笔记: REALITY、Cloudflare 与 fallback 流量滥用
- 实践: 在 Oracle VPS 上部署 sing-box 代理
VLESS
一句话定义
VLESS 是 Xray 生态中的无状态轻量代理传输协议,用来在客户端与代理服务端之间表达认证/身份信息、目标地址和代理数据流。
它解决的是“代理客户端如何告诉代理服务器要访问哪里,并传递后续数据”,而不是单独承担完整的 TLS 外观或传输层加密。
VLESS 位于哪一层
理解 VLESS 最重要的是把三层拆开:
代理协议
VLESS
↓
传输方式
RAW / XHTTP / gRPC / WebSocket / ...
↓
传输安全
TLS / REALITY / none
因此:
- VLESS ≠ TLS;
- VLESS ≠ REALITY;
- VLESS ≠ WebSocket;
- 这些层可以按照实现支持情况组合。
Project X 当前文档把 VLESS 描述为 stateless lightweight transport protocol,并把 transport method 与 transport security 作为独立配置层。
一条 VLESS 请求包含什么
从协议语义看,客户端至少需要让服务端知道:
- 协议版本;
- 客户端身份字段(常见配置表现为 UUID);
- 命令类型;
- 目标端口;
- 目标地址;
- 后续请求数据。
因此真正的“代理目标”在 VLESS 请求内部,例如:
destination = youtube.com:443
这与外层 TCP/TLS/REALITY 连接的地址不是同一个概念。
外层服务器与内层目标
典型 VLESS + REALITY:
Client
│
│ outer connection
│ server = VPS_IP
│ SNI = camouflage.example
▼
VPS / VLESS server
│
│ inner proxy destination
▼
youtube.com:443
因此一条代理连接同时可能出现:
- 代理服务器地址:客户端真正连接的 VPS;
- TLS/REALITY serverName / SNI:外层握手使用的主机名;
- VLESS destination:代理服务器随后代表客户端访问的真正互联网目标。
三者不能混为一谈。
VLESS 与加密
VLESS 的安全边界应与传输安全分开理解。
在常见配置中,VLESS 自身不等于 HTTPS/TLS;实际公网部署通常依赖 TLS、REALITY 等传输安全层提供普通 TLS 外观、机密性与更完整的握手安全性质。
Xray 当前还存在可选的 VLESS Encryption,但默认配置仍常见 encryption: "none"。因此讨论具体安全性时必须看完整组合,而不能只看到“VLESS”三个字。
VLESS 与 REALITY
REALITY 是传输安全机制,不是 VLESS 的同义词。
常见组合:
VLESS + REALITY
含义是:
- VLESS 负责代理协议语义;
- REALITY 负责外层握手、传输安全与伪装特征。
这也解释了为什么 REALITY 的 fallback/target 行为即使发生在“非法客户端”上,也不意味着 VLESS UUID 已被破解:流量可能根本没有进入合法 VLESS 会话。
常见误解
VLESS 的 SNI 就是最终访问网站
错误。SNI 属于 TLS/REALITY 外层;最终网站由 VLESS 代理请求中的目标地址决定。
VLESS 本身就是 TLS
错误。VLESS 是代理协议,TLS/REALITY 是传输安全层。
节点流量异常一定代表 UUID 泄漏
不一定。还可能来自公网开放服务、REALITY fallback、错误反代、开放中转、面板/API 泄漏等其他链路。
学习检查
- VLESS、传输方式、传输安全分别负责什么?
- 为什么
server = VPS_IP与 VLESS destination 可以不同? - SNI 属于 VLESS 本身吗?
- VLESS + REALITY 中,哪一层负责代理目标,哪一层负责 TLS 外观?
- 为什么“流量被跑光”不能直接推断 UUID 已泄漏?
参考
- Project X — VLESS Protocol: https://xtls.github.io/en/development/protocols/vless.html
- Project X — Transport Configuration: https://xtls.github.io/en/config/transport.html