Hysteria2 详解
Hysteria2 是 Hysteria 协议的下一代版本,它是一种高性能、抗审查的代理协议,专注于在高丢包、高延迟、带宽受限的网络环境下提供稳定快速的连接。Hysteria2 在其前身的基础上进行了多项重大改进,将底层传输协议从 QUIC 升级为基于自定义 UDP 的协议栈,并引入了更灵活的流量控制和更强大的抗审查特性。其核心理念是通过高效的 UDP 传输、TCP BBR 拥塞控制算法和 TLS 加密,在恶劣网络条件下最大化可用带宽,同时保持高度的隐蔽性。
核心思想:在不可靠的 UDP 传输之上构建一个可靠的、高性能的、基于 TCP BBR 算法的传输层,并结合 TLS 加密和流量伪装,以应对高丢包、高延迟和严格审查的网络环境。
一、为什么需要 Hysteria2?
传统的代理协议,无论是基于 TCP (如 Shadowsocks TCP, VLESS/Trojan over TCP+TLS) 还是基于 QUIC (如 Hysteria1),在高丢包率、高延迟的网络环境中(例如跨国长距离传输、卫星网络、受到干扰的网络)都可能表现不佳:
- TCP 协议的固有局限性:TCP 旨在保证可靠传输,但在高丢包和高延迟环境下,其拥塞控制机制可能会过于保守,导致带宽利用率低下,传输速度慢。
- QUIC 协议的特定问题:Hysteria1 基于 QUIC 协议。虽然 QUIC 解决了 TCP 的队头阻塞问题,但在某些网络环境下,QUIC 的特征可能仍然容易被识别和阻断。
- 复杂审查环境:审查者可能不仅仅是识别协议特征,还会通过分析流量模式、连接行为来阻断代理。
Hysteria2 旨在通过以下改进来解决这些问题:
- 完全自定义的 UDP 协议栈:摆脱了 QUIC 的束缚,拥有更大的自由度来优化传输和抗审查能力。
- 更强大的抗审查特性:引入了更灵活的流量伪装选项。
- 极致的性能优化:在高丢包、高延迟环境下,能够提供更接近线路极限的传输速度。
二、Hysteria2 协议的核心特性
2.1 基于 UDP 的自定义协议栈 (Custom UDP Protocol Stack)
Hysteria2 的底层传输完全建立在 UDP 之上,但它不是简单地转发 UDP 数据,而是在 UDP 报文内部实现了一套可靠传输、拥塞控制和流量控制机制,类似于 QUIC,但拥有更大的定制空间。
- 优势:
- 摆脱 TCP 的队头阻塞 (Head-of-Line Blocking):一个数据包的丢失不会阻塞其他独立流的传输。
- 摆脱 QUIC 协议指纹:不再暴露 QUIC 的特定握手和流量特征,提供了更高的隐蔽性。
- 传输灵活性:可以根据网络状况更精细地控制重传、流量整形等行为。
2.2 TCP BBR 拥塞控制 (TCP BBR Congestion Control)
Hysteria2 核心集成了 Google 的 TCP BBR (Bottleneck Bandwidth and RTT) 拥塞控制算法。BBR 旨在通过测量网络路径的带宽和延迟来优化传输,而不是简单地通过丢包来判断拥塞。
- 优势:
- 高带宽利用率:在高丢包、高延迟、长距离传输等恶劣网络环境下,能显著提高带宽利用率,实现更快的速度。
- 更公平的带宽分配:在与其他流量竞争时,BBR 表现更激进但更合理。
- 适应性强:能够更好地适应不断变化的网络条件。
2.3 基于 TLS 1.3 的安全传输 (TLS 1.3 based Security)
Hysteria2 使用标准的 TLS 1.3 协议进行加密和认证,确保数据传输的机密性、完整性和真实性。
- 优势:
- 强安全性:TLS 1.3 是目前最安全的加密协议之一。
- 抗审查:通过 TLS 加密,代理流量看起来与正常的加密流量无异。
- 快速握手:TLS 1.3 优化了握手过程,减少了延迟。
2.4 可配置的伪装 (Configurable Obfuscation/Masking)
Hysteria2 提供了多种伪装选项,以增强其抗审查能力:
mask字段:允许将 Hysteria2 的流量伪装成访问一个真实网站的 HTTPS 流量。例如,你可以指定mask: "https://www.google.com",这样 Hysteria2 的握手和部分数据包就会模仿访问 Google 网站的特征。自定义 HTTP 请求头:在
mask的基础上,可以进一步定制伪装 HTTP 请求头,使其更难以被识别。混淆模式 (Obfuscation Mode):通过对 UDP 包的头进行一定程度的混淆,使其不那么容易被识别出是 Hysteria2 流量。
IP 模糊 (IP Confusion):通过同时监听多个 IP 地址或端口,增加探测的难度。
优势:极大增强了流量的隐蔽性,使其在深度包检测下更难以被识别和阻断。
2.5 流量控制 (Rate Limit & Congestion Control)
Hysteria2 允许用户对上传和下载速度进行精细的控制,可以设置最大速率,防止单个连接耗尽服务器所有带宽。
- 优势:
- 服务器资源管理:有效管理服务器带宽,防止滥用。
- 用户体验优化:在多用户环境下,可以提供更公平的带宽分配。
2.6 NAT 类型支持 (NAT Type Support)
Hysteria2 能够更好地穿透各种 NAT (Network Address Translation) 类型,这对于 P2P 连接或某些特殊的网络环境非常重要。
三、Hysteria2 协议结构概述
Hysteria2 的协议结构是建立在 UDP 数据报文之上的。大致可以分为以下几个阶段:
- UDP 握手阶段:
- 客户端和服务器之间通过自定义的 UDP 报文进行初次握手。
- 这个握手过程会协商连接 ID、加密参数等。
- 在此阶段,如果配置了
mask,则会发送伪装成 HTTP/TLS 的请求,使得外部看起来像是一个正常的 HTTPS 连接。
- TLS 1.3 握手阶段:
- 在 UDP 握手成功后,双方建立一个 TLS 1.3 会话。
- 这提供了端到端的加密和身份验证。
- 客户端会验证服务器证书,服务器会根据配置验证客户端身份(可选,通常通过密码)。
- Hysteria2 数据传输阶段:
- TLS 握手成功后,所有代理数据都通过 TLS 1.3 加密,封装在 Hysteria2 的 UDP 报文内进行传输。
- Hysteria2 在 UDP 报文内部实现了可靠性、顺序性、流量控制和拥塞控制。
- 每个 UDP 报文可能包含多个 Hysteria2 帧,每个帧又可能包含多个应用数据包。
四、Hysteria2 的工作流程 (简化)
sequenceDiagram
participant client as 客户端 (Hysteria2 Client)
participant hysteria_server as Hysteria2 服务器
participant target_server as 目标网站/服务
client->>hysteria_server: 1. UDP 连接建立 (Hysteria2 握手 + 伪装)
hysteria_server->>hysteria_server: 2. 验证 Hysteria2 握手
client->>hysteria_server: 3. TLS 1.3 握手 (客户端验证服务器证书, 携带密码)
hysteria_server->>hysteria_server: 4. 验证 TLS 证书和客户端密码
alt 握手成功
client->>hysteria_server: 5. Hysteria2 数据流 (通过 TLS 1.3 加密, BBR 拥塞控制)
hysteria_server->>target_server: 6. 转发请求 (解密 Hysteria2 -> 原始请求)
target_server->>hysteria_server: 7. 返回响应
hysteria_server->>client: 8. Hysteria2 数据流 (原始响应 -> 加密 Hysteria2)
else 握手失败
hysteria_server->>client: 9. 关闭连接
end
流程说明:
- UDP 握手与伪装:客户端首先向 Hysteria2 服务器的 UDP 端口发送经过 Hysteria2 特有头部封装和伪装(如果配置了
mask)的 UDP 报文,开始 Hysteria2 协议的握手。 - TLS 握手:在 Hysteria2 握手成功后,客户端和服务器之间进行 TLS 1.3 握手。客户端验证服务器的 TLS 证书,并发送客户端密码进行认证。
- 身份验证:服务器验证 TLS 证书的合法性以及客户端密码的正确性。
- 数据传输:一旦 TLS 握手和身份验证成功,客户端和服务器之间就建立了一个安全的 Hysteria2 隧道。所有后续的代理数据都将通过这个隧道传输:
- 客户端应用数据被 Hysteria2 客户端捕获。
- 数据被封装、加密(TLS 1.3)、并通过 Hysteria2 的自定义 UDP 协议栈(包含 BBR 拥塞控制)发送。
- 服务器接收 UDP 报文,解封装、解密,并将原始应用数据转发到目标服务。
- 目标服务的响应数据反向经过 Hysteria2 服务器、封装加密,通过 UDP 隧道返回给客户端。
- BBR 优化:在整个数据传输过程中,BBR 拥塞控制算法会持续监测网络状况(RTT、带宽),动态调整发送速率,以最大化吞吐量并减少延迟。
五、Hysteria2 的优缺点与适用场景
5.1 优点:
- 极致性能 (高丢包/高延迟环境):
- 基于 UDP 和 BBR 拥塞控制,在高丢包、高延迟、长距离网络条件下表现卓越,能够充分利用带宽。
- 比传统 TCP 代理和基于 QUIC 的代理在恶劣网络中提供更快的速度和更稳定的连接。
- 强大的抗审查能力:
- UDP 传输:UDP 流量在某些审查环境中可能比 TCP 更不容易被限制。
- TLS 1.3 加密:保证流量加密和伪装。
- 可配置的伪装 (Masking):能将流量伪装成访问真实网站的 HTTPS 流量,进一步增强隐蔽性。
- 自定义协议栈:摆脱了 QUIC 的特定指纹。
- 灵活性高:多种伪装和流量控制选项,适应不同网络和审查环境。
- 部署相对简单:相比 REALITY,Hysteria2 仍然需要域名和 TLS 证书,但其配置逻辑相对直观。
5.2 缺点:
- 仍需域名和 TLS 证书:为了安全性、隐蔽性和避免 IP 被封,通常需要一个域名和合法 TLS 证书。
- UDP 端口开放问题:部分严格的网络环境可能对 UDP 流量有限制或 QOS 较低,或默认关闭所有 UDP 端口。
- 需要服务器资源:BBR 算法和复杂的 UDP 传输层需要一定的 CPU 资源。
- 可能存在特定 UDP 流量的识别:尽管进行了伪装和混淆,但 UDP 流量的特征本身仍可能被高级审查系统识别。
5.3 适用场景:
- 网络环境恶劣:用户所在地区网络丢包率高、延迟大(例如跨国链路拥堵)、带宽受限。
- 需要突破 UDP 限制:希望使用 UDP 协议进行代理传输,特别是用于游戏、VoIP 等对实时性要求高的应用。
- 对代理性能有较高要求:追求在高负载或挑战性网络条件下仍能保持高速稳定连接。
- 对抗复杂的流量识别和审查。
- 对安全性有较高要求。
六、总结
Hysteria2 作为新一代的抗审查代理协议,在高丢包、高延迟网络环境下展现出卓越的性能和强大的抗审查能力。它通过在 UDP 上构建自定义的、基于 BBR 拥塞控制的可靠传输协议栈,并结合 TLS 1.3 加密和灵活的流量伪装,有效地解决了传统协议在恶劣网络条件下效率低下的问题,并进一步提升了隐蔽性。对于那些面临严苛网络环境或追求极致代理速度的用户而言,Hysteria2 是一个非常值得关注和部署的解决方案。
