Hysteria2
Hysteria2 运行在 QUIC 之上,使用 TLS 1.3 和自有的拥塞控制。介绍它的工作原理、为何在丢包的链路上很快、UDP 对它有何限制,以及 Colitu 如何使用它。
Hysteria2 是 Colitu Adaptive Connect 在所有平台上最先尝试的连接模式。它是一种基于 QUIC 构建的代理协议,QUIC 是 HTTP/3 底层基于 UDP 的传输层,其设计目标是在丢包的网络上保持吞吐量。
它是什么
Hysteria2 由开源项目 apernet 开发,文档位于 v2.hysteria.network。第 2 版重新设计了协议,使认证发生在一次标准的 HTTP/3 交互之中,这让 Hysteria2 服务器看起来就像一个普通网站。它建立在三项公开标准之上:
- QUIC(RFC 9000):基于 UDP 的加密传输层,一个连接内包含许多相互独立的数据流。
- TLS 1.3(RFC 8446):QUIC 始终使用 TLS 1.3 握手来协商密钥并认证服务器。
- HTTP/3(RFC 9114):运行在 QUIC 之上的 HTTP 版本;Hysteria2 在认证步骤中使用它。
工作原理
- 应用通过 UDP 向服务器打开一个 QUIC 连接。QUIC 握手就是一次 TLS 1.3 握手,应用会像浏览器一样检查服务器的证书。在 Colitu 服务器上,这是通过 ACME 自动签发的真实证书。
- 在连接内,应用发送一个携带其凭据的 HTTP/3 请求。如果凭据有效,服务器予以确认,连接便成为隧道。没有有效凭据的请求会被当作普通的网络请求处理,因此任何探测该服务器的人看到的都是一台正常的 HTTP/3 网络服务器。
- 在这次交互中,双方还会共享带宽信息,供下文所述的拥塞控制使用。
- 你的设备发出的每个 TCP 连接(例如网页或下载)都会得到自己的 QUIC 数据流。数据流相互独立,因此其中一个丢包不会拖住其他数据流。
- 你的设备发出的 UDP 流量(例如通话、游戏和 DNS)以 QUIC 数据报的形式传输,而不是被塞进数据流中。
拥塞控制:为什么它在丢包的链路上能保持速度
传统的 TCP 拥塞控制会把每个丢失的数据包都解读为路径过载的迹象,并降低发送速率。在 Wi-Fi 和移动链路上,丢包往往另有原因:干扰、小区之间的切换、信号弱。这时 TCP 会在不必要的时候降速,而且恢复缓慢,尤其是在长距离上。
Hysteria2 自带一套拥塞控制,称为 Brutal。当可用带宽已知时,Brutal 会按该速率发送,并通过重传而不是退让来弥补丢包。当未设置带宽时,Hysteria2 会回退到 BBR,它估算可用带宽,而不是对每个丢失的数据包做出反应。在这两种情况下,在丢包链路上的结果都是比基于丢包的 TCP 更稳定的吞吐量。
为什么 Colitu 使用它
人们在移动中使用 VPN 遇到的许多问题并不是封锁,而是链路质量差:火车上、拥挤的咖啡馆里、国家之间的长距离线路。基于 TCP 的协议在这些地方会损失速度;Hysteria2 正是为这种情况而生。它还带来了真正的伪装:有效的证书,以及看起来像 HTTP/3 的握手,而 HTTP/3 正是大型网站已在提供的协议。
它的强项
- 移动数据。 无线丢包和不断变化的信号,正是 Brutal 的丢包补偿和 QUIC 的独立数据流所擅长应对的。
- 繁忙或距离较远的 Wi-Fi。 干扰造成的丢包并不是拥塞;Hysteria2 保持其速率,而不是将其减半。
- 长距离国际线路。 往返时间很长时,TCP 在每次丢包后需要很久才能恢复;Hysteria2 只是重传。
- 通话和游戏。 UDP 流量以数据报形式传输,因此一个丢失的数据包不会延迟其后的数据包。
- 仍然允许 QUIC 的被过滤网络。 被动观察者看到的是访问带有效证书的网站的 HTTP/3,而没有凭据的主动探测得到的是网络服务器的应答。
局限,以及何时它不是最佳选择
- UDP 可能被封锁或限速。 一些企业、酒店、校园和移动网络会限制 UDP 或 QUIC。这时 Hysteria2 无法连接或运行缓慢,TCP 模式是更好的选择。
- QUIC 可能被单独挑出来。 一些过滤系统对发往陌生地址的 QUIC 与对 TCP 区别对待,例如将其减速。基于 Reality 的模式在那里融入得更好。
- 在较弱的共享链路上的公平性。 激进的发送对你自己的连接有利,但可能挤占同一条非常弱的链路上的其他设备。
- 强制门户。 在酒店或咖啡馆的 Wi-Fi 上,你必须先在门户页面登录;在此之前,任何 VPN 模式都无法连接。
Adaptive Connect 如何使用它
Hysteria2 在 Android、iOS、Windows 和 Linux 上都排在顺序的第一位。如果它连接成功且真实流量通过了检查,你就继续使用它。如果 UDP 被封锁、握手失败或隧道没有承载任何流量,应用就会继续往下:
- 在 Android 和 iOS 上,依次转到 VLESS Reality、VLESS XHTTP、Trojan 和 Shadowsocks 2022;
- 在 Windows 和 Linux 上,转到 TCP 模式,按它们测得的连接时间排序。
没有承载任何流量的 Hysteria2 尝试会被往后放(在 Windows 和 Linux 上为 10 分钟),因此下次连接不会在它上面浪费时间。
安全与加密
- 加密: 密钥来自 QUIC 内的 TLS 1.3 握手,握手之后的每个数据包都经过加密和认证。
- 服务器认证: 服务器出示由公共证书颁发机构签发的真实证书,通过 ACME 自动获取和续期。应用会验证它,因此中间人无法冒充服务器。
- 客户端认证: 你的账户为每台服务器使用独立的凭据,服务器在承载任何流量之前都会先检查它们。
- 同一个域名: 与其他模式一样,Hysteria2 通过服务器的域名访问,Trojan 使用同一份证书。
- 没有访问日志: Colitu 服务器不会记录你访问的网站;参见安全页面。
来源
立即体验
Hysteria2 无需任何设置即可在每个 Colitu 应用中使用,当 UDP 被封锁时,应用会自行切换到 TCP 模式。下载 Colitu,或查看服务器位置。