ZH
试用 Bebra试用

深度解析

什么是 VLESS,为什么同一套配置在有些网络中用不了?

Roman Sedov Roman Sedov

阅读约 7 分钟

什么是 VLESS
目录
  1. VLESS 是 VPN 吗?
  2. 从应用到网站
  3. 加密由谁来做
  4. 运营商能看到什么
  5. 为什么在一个网络中能用,在另一个网络中不行
  6. Bebra 怎样应对
  7. 常见问题

VLESS 是一种协议,应用通过它告诉服务器是谁在连接、流量应该发往哪里。在典型配置中,VLESS 自己并不加密任何内容,加密由 TLS 或 REALITY 完成。2025 年又加入了可选的 VLESS Encryption,用于特殊场景。下面我们来看看 VLESS 算不算 VPN、运营商仍然能看到什么,以及为什么同一套配置在一个网络中能用,在另一个网络中却不行。

VLESS 是 VPN 吗?

VLESS 常被归入 VPN 协议,但从设计上看,它更接近代理。应用请求服务器把它连接到指定的地址和端口,服务器自己建立这个连接,并在两个方向上转发数据。两者有什么区别,我们在 VPN 和代理的区别一文中讲过。

VPN 这一部分由应用提供。像 Bebra 这样的应用会在设备上建立一个系统级 VPN,让设备的全部流量都经过它,再通过 VLESS 或类似的协议把每个连接送到服务器。对您来说,它用起来和任何 VPN 一样。VLESS 本身只负责让服务器知道它在为谁服务、下一步该去哪里。

从应用到网站

一个 VLESS 连接要经过四站。

  1. 应用。它在您的数据前面加上一个简短的 VLESS 头部,其中有您的用户 ID(一个 UUID)、目标地址和端口。
  2. 外层。头部和数据装在 TLS 或 REALITY 里传到服务器。从外面看,这就像通过 HTTPS 访问一个网站。
  3. 服务器。它拆开外层,校验 UUID。如果 ID 未知,连接到此为止。如果 ID 有效,服务器就去连接头部中的地址。
  4. 网站。它收到服务器发来的请求并作出回应,回复再沿原路返回给您。

在这条路径上,VLESS 只有一项任务:告诉服务器您是谁、要去哪里。其他一切,从加密到连接在外人看来是什么样子,都由外层负责。所以说到“VLESS 连接”,几乎总是指 VLESS + REALITY 这样的组合。

加密由谁来做

在 Xray 的设置里,VLESS 有一个必填的 encryption(加密)字段,典型配置中它的值是 none。数据由外层的 TLS 或 REALITY 保护。

这正是 VLESS 与 VMess 的不同之处。VMess 是同一个 V2Ray 项目中更早的协议,它自己用 AES-128-GCM 或 ChaCha20-Poly1305 加密,而且要求设备时钟准确。VLESS 于 2020 年加入 V2Ray,是一个更简单、不依赖时钟的替代方案。

现在 VLESS 也有了自己的加密。VLESS Encryption 于 2025 年加入 Xray,用于特殊配置。在与 TLS 或 REALITY 搭配的常见用法中,encryption 字段仍然是 none。

运营商能看到什么

您的运营商和 Wi-Fi 提供方看不到 VLESS 头部,因为它在加密通道里。他们也看不到您打开的是哪个网站、页面上有什么。我们介绍什么是 VPN 的文章跟随一次请求展示了这一点。不过,有几样东西从外面还是看得到的。

  • 服务器的地址。您的设备连接的 IP 地址总是可见的。
  • 握手中的名称。TLS 的第一条消息以明文发送,通常包含一个网站名称(SNI)。使用普通 TLS 时,这是服务器自己的域名。使用 REALITY 时,则是服务器所冒充的那个真实第三方网站的名称。
  • 数据包的大小和时序。内容是加密的,但来回传了多少字节、顺序如何,并没有加密。

REALITY 还增加了两层保护。客户端会像常见的浏览器那样发起握手,而 REALITY 的设置强制要求使用这种指纹。此外,如果有人连接服务器想看看里面是什么,服务器会把这个连接转交给那个真实网站,访客得到的是该网站的响应。只有知道密钥的客户端才能进入 VLESS。

为什么在一个网络中能用,在另一个网络中不行

过滤手段因运营商而异,它们找的正是上面列出的这些痕迹。有的运营商按列表封锁服务器地址,这时只有换新地址才有用。有的检查握手,还有的寻找数据包大小的规律。所以在家能连上的配置,换到手机流量或酒店 Wi-Fi 上可能就会失败。

最能暴露身份的痕迹之一,是握手里套着握手。通过 VLESS 打开 HTTPS 网站时,网站自己的 TLS 运行在外层 TLS 之内,它的头几个数据包很短,长度也很好认。论文《Fingerprinting Obfuscated Proxy Traffic with Encapsulated TLS Handshakes》(USENIX Security 2024)的作者们,就在一家约有百万用户的网络运营商那里寻找这种痕迹。他们识别出了伪装的代理流量,几乎没有误伤普通流量。论文还表明,仅靠随机填充或多路复用都藏不住这个痕迹,因为两者都不会改变流量突发的大小和往返次数。

Xray 针对这一痕迹的对策是 XTLS Vision。它会填充内层握手的短数据包,让它们的长度不再暴露握手,握手完成后则只是简单地转发数据。它的作者也承认,Vision 无法隐藏握手的时间特征。

Bebra 怎样应对

在 Bebra 中,VLESS + REALITY 是几种连接方式之一,另外还有 XHTTP、Hysteria2 和 Shadowsocks。它们在网络上的特征各不相同,所以妨碍其中一种的过滤系统,未必会注意到另一种。应用会决定用哪种协议、走哪条线路,某条线路失效时会切换到另一条。四种协议有什么不同,请看我们关于 VPN 协议的文章。

您什么都不用配置。应用里没有选择协议的设置,它会自动为您的设备创建账户,轻点国家方块即可连接。如果某个国家仍然连不上,请进入“账户” → “设置”,轻点“查找可用服务器”。应用会重新测试线路并获取新的服务器地址,最多需要两分钟。运营商封锁了旧地址时,新地址正好能解决问题。

想试试 Bebra,可以先从 10 ₽ 的试用开始。3 天完整访问权限,之后每月 500 ₽。订阅会自动续订。

常见问题

为什么说 VLESS 是不加密的协议?

因为在典型配置中,它自己不加密任何内容。它的 encryption 字段是 none,加密由 TLS 或 REALITY 完成。2025 年加入了可选的 VLESS Encryption,用于特殊场景。

可以在 Bebra 中手动选择 VLESS 吗?

不可以,应用里没有选择协议的设置。Bebra 会自己决定通过 VLESS + REALITY、XHTTP、Hysteria2 还是 Shadowsocks 连接,当前线路失效时会换到另一条。

VLESS 和 Shadowsocks 有什么区别?

Shadowsocks 自己加密数据,用的是客户端和服务器事先都知道的密钥。它的数据流以一段随机盐值开头,后面是加密的数据块,外面没有 TLS。VLESS 自己不加密,而是在 TLS 或 REALITY 里传输,所以从外面看就像通过 HTTPS 访问网站。

运营商能看到我通过 VLESS 打开了哪些网站吗?

不能。网站地址在 VLESS 头部里,位于加密通道之内。运营商能看到的是服务器的地址、TLS 握手中的名称和数据包的大小。

探测 REALITY 服务器的人会得到什么?

服务器所冒充的那个真实网站的响应。REALITY 会把没有正确密钥的连接转交给那个网站,只让自己的客户端进入 VLESS。

XTLS Vision 有什么作用?

它会填充在加密通道内进行的那次握手的短数据包,让它们的长度不再暴露这次握手。之后,Vision 只是转发数据。它的作者表示,Vision 无法隐藏握手的时间特征。

Roman Sedov

关于作者

Roman Sedov

网络与协议作者

关注协议和网络:您的流量在应用和网站之间经历了什么,连接为什么会有这样的表现。

Bebra 应用

提供 iPhone、iPad、Android、Windows、Mac、Linux、Android TV 和 Apple TV 版应用。一份订阅可用于任意数量的设备,每个套餐都包含全部 187 个国家。