VLESS XHTTP
VLESS XHTTP 在 Reality 之上以 HTTP 请求承载 VPN 流量,适用于会切断长时间 TCP 连接的网络。介绍它的工作原理、局限,以及它在 Colitu 中的角色。
VLESS XHTTP 是 Colitu Adaptive Connect 在 Android 和 iOS 上尝试的第三种模式,同时也是 Windows 和 Linux 上按连接时间排序的 TCP 模式之一。它使用与 VLESS Reality 相同的 VLESS 协议和相同的 Reality 伪装,但改变了数据传输的方式:流量不再是一个长期存在的原始数据流,而是以 HTTP 请求和响应的形式承载。
它是什么
XHTTP 是 Project X (Xray) 的一种传输方式,该开源工具集同时也提供 VLESS 和 Reality。它由 Xray 早先的 SplitHTTP 传输发展而来。其思路是使用普通的 HTTP 语义来承载代理会话,上传和下载两个方向可以通过各自独立的 HTTP 请求传输。在其他部署中,这让 XHTTP 能够穿过任何理解 HTTP 的设备;在 Colitu 中,它直接运行在 Reality 之上,因此外层与 VLESS Reality 一样,是同样经过伪装的 TLS 1.3 连接。
工作原理
- Reality 握手。 应用打开一个 TCP 连接并执行 Reality TLS 1.3 握手:类似浏览器的指纹、隐藏的 X25519 认证,以及被中继到真实目标网站的探测。XHTTP 模式有自己的 Reality 密钥对,与 VLESS Reality 的相互独立。
- 秘密路径。 在 TLS 会话内,应用向服务器上一个只有该应用才知道的随机路径发送 HTTP。隧道在任何其他路径上都不会应答。
- 下载方向。 来自服务器的数据以 HTTP 响应体的形式到达,并以流的方式传给应用。
- 上传方向。 根据模式不同,来自应用的数据会作为一系列独立的 POST 请求发送(packet-up),或在一个请求体中以流的方式发送(stream-up),或与下载共用同一个请求(stream-one)。Colitu 将模式设为“auto”,由 Xray 选择。
- 内部的 VLESS。 携带你的用户 ID 和目标的 VLESS 请求,就在这次 HTTP 交互之内传输,就像在原始数据流内一样。
为什么 Colitu 使用它
有些网络会终止或降低质量那些长时间保持打开、或把大量数据作为一个不透明数据流传输的 TCP 连接,而这正是 VPN 隧道的典型形态。把会话拆分成 HTTP 请求,就把这种形态变成了表现得像 HTTP 流量的东西。这正是 XHTTP 所针对的情形,当普通的 VLESS Reality 能够连接但随后停滞或被切断时,它为 Adaptive Connect 提供了一个基于 Reality 的选项。
它的强项
- 会切断长时间 TCP 连接的网络: 流量分散在多个 HTTP 请求中,而不是一个无尽的数据流。
- 被 DPI 过滤的网络: 它继承了 Reality 的伪装、类似浏览器的指纹以及对主动探测的防护。
- 封锁 UDP 的网络: 与其他 TCP 模式一样,它不依赖 UDP。
局限,以及何时它不是最佳选择
- 开销更大。 HTTP 封装和独立的请求会增加开销和少量延迟。在干净的网络上,使用 Vision 的 VLESS Reality 更精简。
- 没有 Vision。 XTLS Vision 需要原始的 TCP 数据流,而 XHTTP 不提供,因此 Vision 对“TLS 套 TLS”规律的处理在此模式中不可用。
- 丢包链路上的 TCP。 在丢包严重的移动数据或糟糕的 Wi-Fi 上,它会像任何 TCP 协议一样降速;在那里 Hysteria2 通常更快。
- 同样的 Reality 局限。 SNI 指向一个第三方网站,而 IP 地址属于另一个网络;对二者进行比较的过滤系统,或按 IP 地址封锁的过滤系统,仍然可以采取行动。
- 较新的传输方式。 XHTTP 比其他模式更新,并且仍在 Xray 中不断演进。
Adaptive Connect 如何使用它
在 Android 和 iOS 上,VLESS XHTTP 排在第三位:位于 Hysteria2 和 VLESS Reality 之后,Trojan 和 Shadowsocks 2022 之前。当 UDP 无法使用,且普通 Reality 无法连接或未通过流量检查时,才会轮到它。在 Windows 和 Linux 上,它与其他 TCP 模式一起按测得的连接时间排序。如果 XHTTP 也没有承载任何流量,应用会把它往后放,并转向下一种模式。
安全与加密
- 加密: 外层是采用 X25519 密钥交换的 Reality TLS 1.3 会话,由 TLS 1.3 的 AEAD 密码保护。
- 服务器认证: 握手必须证明服务器掌握 XHTTP 模式的 Reality 公钥背后的私钥;否则应用不会接受该服务器。
- 客户端认证: Reality 认证数据、秘密的 HTTP 路径以及 VLESS 用户 ID,后者是你的账户在该服务器上的凭据的一部分。
- 密钥处理: 密钥、短 ID、路径和目标以加密形式交付给应用,从不公开。
- 没有访问日志: 参见安全页面。
来源
立即体验
VLESS XHTTP 内置于每个 Colitu 应用中,当长时间的连接不断掉线时会自行介入。下载 Colitu,或查看服务器位置。