如果你用过 Reality(VLESS),大概率也遇到过这样的场景:延迟表现平平,尤其在跨国高丢包链路上速度掉得厉害。
Hysteria2 就是为解决这个问题设计的。它跑在 QUIC 之上,天生适应高丢包、高抖动网络;配合 FEC(前向纠错)和动态速率调整,在"烂链路"里反而能跑出比 TCP 更高的有效吞吐。
这篇文章从 QUIC 协议原理解释起,一路走到 服务端部署 + 客户端对接 + 实际优化,帮你判断 Hysteria2 到底适不适合你的场景。
一、为什么需要 Hysteria2
1.1 TCP 在高丢包环境下的困境
TCP 是"公平"的——一旦发现丢包,它会把发送窗口减到一半,然后线性增长。在高丢包(5%+)的跨国链路上,TCP 的有效吞吐会断崖式下跌,即便带宽再大也用不上。
1.2 QUIC 带来什么改变
QUIC 基于 UDP,但为每一条连接建立了独立于 IP 的流控制,丢包只会影响当前流,不会拖慢所有流。Hysteria2 在此基础上进一步:
- FEC 前向纠错:冗余发送少量修复包,丢一个包不需要重传即可恢复。
- 自适应速率:实时探测带宽上限,避免发送队列积压。
- 无队头阻塞(多流):多个用户/连接共享同一 UDP 端口,互相独立。
1.3 Hysteria2 和 VLESS 不是二选一
很多用户的实际部署是一条 VLESS-Reality 节点(兜底)+ 一条 Hysteria2 节点(加速)。VLESS 负责"能通",Hysteria2 负责"更快"。两者互补,后面会专门做组合建议。
二、Hysteria2 协议核心机制
2.1 传输层:QUIC over UDP
Hysteria2 的核心是一个用户态 QUIC 实现,不依赖操作系统内核的 QUIC 栈。服务端和客户端各自维护一个 QUIC 连接,通过这个连接传输所有代理数据。
2.2 认证与混淆
Hysteria2 不像 VLESS 有 Reality 那种"伪装域名"的握手方式,但它有自己的混淆手段:
- Password 认证:客户端和服务端共享同一密码(类似共享密钥),连接前先校验。
- Obfuscation(可选):对 QUIC 数据包做一层轻量混淆,让 DPI 更难识别为代理流量。
三、服务端部署
3.1 环境需求
- VPS:推荐 HK / SG / JP / US 机房,带宽 ≥ 100Mbps(Hysteria2 的优势是吞吐,小带宽看不出来)。
- 系统:Debian 11/12、Ubuntu 22.04/24.04。
- 端口:默认 UDP 443(也可自定义,但 443 最通行)。
- 防火墙:放行 UDP 443。
3.2 安装 hysteria2 核心
官方推荐的安装方式:
# 下载最新 release(手动更新版)
curl -fsSL https://get.hy2.sh/ | bash
这会把 hysteria 二进制放到 /usr/local/bin/。
3.3 生成认证密码
# 生成一个 32 字节随机密码
openssl rand -base64 32
# 示例输出:k3J9xP2mQ7rS5tU1vW8yZ0aB4cD6eF2gH
3.4 服务端配置文件
创建 /etc/hysteria2/config.yaml:
# server config
listen: 0.0.0.0:443
auth:
type: password
password: "你的密码"
tls:
type: none
masquerade:
type: proxy
proxy:
url: https://www.microsoft.com
rewriteHost: true
udp:
hopInterval: 30s
# 速率限制(可选)
bandwidth:
up: 1 gbps
down: 1 gbps
3.5 创建 systemd 服务
cat > /etc/systemd/system/hysteria2.service << 'EOF'
[Unit]
Description=Hysteria2 Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/hysteria server -c /etc/hysteria2/config.yaml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable hysteria2
systemctl start hysteria2
systemctl status hysteria2
3.6 防火墙放行
# ufw(Debian/Ubuntu 默认)
ufw allow 443/udp
# 或 iptables
iptables -I INPUT -p udp --dport 443 -j ACCEPT
四、客户端配置
4.1 通用参数
| 字段 | 值 | 说明 |
|---|---|---|
| 协议 | hysteria2 | 客户端协议标识 |
| 地址 | VPS IP 或域名 | 服务端 IP |
| 端口 | 443 | 默认 UDP 443 |
| 密码 | 服务端配置的密码 | 两端必须一致 |
| SNI / 域名 | (可选) | 配合 TLS 使用时为域名,hysteria2 单独使用通常留空 |
| 跳过证书校验 | 通常开启 | hysteria2 自身认证依赖密码,TLS 可选 |
4.2 Clash Verge / Mihomo 配置
proxies:
- name: "hysteria2-node"
type: hysteria2
server: 你的VPS_IP
port: 443
password: 你的密码
sni: www.microsoft.com # 可选,配合 masquerade 使用
skip-cert-verify: true
up: "100 Mbps"
down: "1 Gbps"
4.3 Clash Meta(旧版)
旧版 Clash Meta 的 hysteria2 字段略有不同:
proxies:
- name: "hysteria2"
type: hysteria2
server: 你的VPS_IP
port: 443
password: 你的密码
up: "100 Mbps"
down: "1 Gbps"
4.4 Shadowrocket(iOS)
Shadowrocket 原生支持 Hysteria2:
- 点击右上角 +
- 类型选择 Hysteria2
- 填写地址、端口、密码
- SNI 填
www.microsoft.com(配合 masquerade) - 保存 → 连接 → 测试延迟
五、性能优化技巧
5.1 FEC 参数调优
FEC(Forward Error Correction)是 Hysteria2 提升高丢包环境吞吐的核心机制。配置文件里可调:
# config.yaml — FEC 设置
fec:
type: ReedSolomon
blockSize: 1280 # 每个数据块大小(字节)
dataShards: 10 # 数据分片数
parityShards: 3 # 校验分片数
调优建议:
- 丢包率 < 2%:用默认值即可,不需要额外 FEC。
- 丢包率 2-5%:parityShards = 3~5,稍微增加冗余。
- 丢包率 > 5%:parityShards 提到 5-8,但代价是带宽开销增大。
5.2 QUIC 连接复用
Hysteria2 会在一个 UDP 端口上复用多条 QUIC 连接。客户端默认的 hopInterval 是 30 秒,表示每 30 秒尝试用新的源端口发送,防止路径上的 NAT 表 Aging Out:
udp:
hopInterval: 30s # 默认,通常不需要改
5.3 服务端系统调优
# 增大 UDP 缓冲区
cat >> /etc/sysctl.conf << 'EOF'
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 5000
EOF
sysctl -p
# 检查 UDP 监听状态
ss -u -lpn | grep hysteria
六、常见问题排查
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 连接超时 | UDP 443 被阻 | 服务端 ss -u -lpn,防火墙检查 |
| 认证失败 | 密码不一致 | 重新比对服务端 config.yaml 里的 password |
| 能连但速度慢 | VPS 带宽瓶颈 | speedtest 测速,FEC 参数重新调优 |
| 低丢包反而不如 TCP | FEC 冗余开销 | 丢包 < 1% 时调小 parityShards 甚至关闭 |
| 手机上有电脑没有 | 客户端内核版本 | 更新到最新版 Clash Verge / Mihomo |
| 连接经常断开 | NAT 超时 / hopInterval | 确认 hopInterval ≦ NAT 超时时间(通常 60s 内) |
6.1 查看服务端日志
journalctl -u hysteria2 -f
# 关键日志
# hysteria2: new connection from 1.2.3.4:54321
# hysteria2: connection established (speed: 150Mbps)
6.2 为什么 Hysteria2 不是所有场景都最佳
Hysteria2 在宽带充足、丢包率低的环境下(如优质区域内网、本地光纤),QUIC 的额外握手开销和 FEC 冗余反而可能让它比 TCP 稍慢。它的优势场景是跨国、长 RTT、丢包率 2%+的链路。
七、与 VLESS-Reality 组合实战
前面提过,两条线路互补是最实用的方案:
| 维度 | VLESS-Reality | Hysteria2 |
|---|---|---|
| 抗探测能力 | ✅ 极强(伪装真实站点握手) | 中等(QUIC 有特征) |
| 高丢包表现 | 一般 | ✅ 强(FEC + QUIC) |
| 低延迟游戏 | 一般 | ✅ 优秀 |
| 大文件 / 视频 | 中 | ✅ 吞吐高 |
| 部署难度 | 中等 | 略简单 |
| 证书维护 | ❌ 不需要 | ❌ 不需要 |
推荐架构:一主一备
主线路 VLESS-Reality:443/TCP,伪装域名握手,稳定、极难被识别。日常浏览、办公通信用这个。
加速线路 Hysteria2:443/UDP,丢包高的国际链路自动启用。大文件下载、视频、游戏开这个。
客户端分流:Clash 规则域名匹配走 Hysteria2,其余走 VLESS;或手动切换。
八、安全与合规注意事项
- 密码管理:hysteria2 的密码是唯一的认证凭据。泄露 = 被人用你的带宽。定期轮换(每 30-90 天)。
- SOCKS5 后门风险:不要开放额外的 SOCKS5 端口。hysteria2 只暴露 443 UDP。
- 日志隐私:服务端日志中不记录用户流量内容,但连接元数据(IP、端口、时间戳)存在,注意合规。
- UDP 限流:考虑在生产环境配置流量上限,防止密码泄露后的滥用 DDoS。