#hysteria2#proxy#censorship#quic#tutorial#server

Hysteria2 设置指南:最快的绕过审查协议

7 min read

原文件来源: SamNet Learn — Hysteria2 Setup Guide. 本文为中文翻译版。

先决条件

  • 具有公网 IP 地址的 VPS
  • 域名(用于 TLS 证书)
  • 具备基本的 Linux 命令行知识

简答: Hysteria2 是一种基于 QUIC 的代理协议,对于大多数用户来说速度比 VLESS+Reality 更快。安装:下载二进制文件,创建配置文件,获取 TLS 证书,然后启动。客户端:可以使用 Nekobox、Hiddify 或 Clash Meta。它通过伪装成普通的 QUIC/HTTP3 流量来规避深度包检测 (DPI)。

需要 VPS 吗? Vultr(免费额度)、DigitalOcean(200 美元免费额度)或 RackNerd(价格实惠的年度套餐)。


什么是 Hysteria2?

Hysteria2 是一种基于 QUIC(HTTP/3 所用的协议,也被 Google、YouTube 和 Cloudflare 等公司使用)构建的抗审查代理协议。它专为伊朗、中国和俄罗斯等审查严格的国家的用户而设计。

Hysteria2 存在的意义

传统代理协议在审查网络中存在一个根本性问题:

  • VPN 协议(WireGuard、OpenVPN)很容易被深度包检测(DPI)技术检测并阻止。
  • Shadowsocks — 多年来一直很有效,但现代 DPI 现在可以识别它的特征。
  • VLESS+Reality — 隐蔽性极佳,但基于 TCP 协议,在丢包网络上速度较慢。
  • Tor — 匿名但速度极慢

Hysteria2 通过使用 QUIC(基于 UDP)解决了这个问题,QUIC 具有两个巨大的优势:

  1. 在网络状况不佳的情况下,QUIC 比 TCP 更能有效处理丢包。在丢包率高、速度受限的连接上(常见于网络审查严格的国家),Hysteria2 的速度可以比基于 TCP 的协议快 2 到 5 倍。
  2. 难以屏蔽: QUIC 流量看起来与普通的 HTTP/3 流量完全相同。屏蔽 QUIC 就等于屏蔽了谷歌、YouTube 以及半个互联网。

对比情况

| 协议 | 传输 | 速度(有损网络) | DPI 抗性 | 安装简便 | | :---------------: | :---------: | :--------------: | :------------: | :------: | | Hysteria2 | QUIC(UDP) | 最快 | 强 | 简单 | | VLESS+Reality | TCP | 较快 | 强 | 一般 | | VLESS+WS+CDN | TCP via CDN | 一般 | 强 | 复杂 | | Shadowsocks | TCP | 较快 | 一般 | 简单 | | WireGuard | UDP | 快 | 差(容易检测) | 简单 | | Tor | TCP | 一般 | 一般 | 简单 |

何时使用 Hysteria2 而不是 VLESS+Reality:

  • 您的连接存在高丢包率或限速问题
  • 你需要最高速度
  • 您的网络服务提供商限制了 TCP 流量,但没有限制 UDP 流量
  • 你想要的是最简单的高性能配置

何时应使用 VLESS+Reality:

  • 您的网络服务提供商 (ISP) 明确屏蔽了 QUIC/UDP 协议
  • 你需要 CDN 回退方案(需要 VLESS+WebSocket+CDN)
  • 你需要运行在 443/TCP 端口上(有些网络只允许 TCP)

Hysteria2 的工作原理

你的设备 (Nekobox/Hiddify/Clash)
    |
    |  QUIC connection (encrypted, looks like HTTP/3)
    |  SNI: your-domain.com (legitimate TLS certificate)
    |
    v
你的云服务器 (Hysteria2)
    |
    |  Decrypts, forwards to the real internet
    |
    v
目标地址 (websites, apps, services)

技术细节

  1. QUIC 协议: 你的设备会与服务器建立 QUIC 连接。QUIC 是谷歌基于 UDP 协议开发的协议,Chrome、YouTube、Gmail 和大多数现代网站都使用它。深度包检测系统 (DPI) 只会将其视为"另一个 QUIC 连接"。

  2. 真正的 TLS 证书: Hysteria2 使用来自 Let's Encrypt 的真实 TLS 证书来保护你的域名。当审查机构探测你的服务器时,他们会看到一个真实域名的有效证书,而不是自签名或伪造的证书。

  3. 强力拥塞控制: 这是 Hysteria2 的秘密武器。它不使用标准的 QUIC 拥塞控制(QUIC 会在检测到网络拥塞时降低速度),而是采用自定义的"强力"算法,在网络拥塞时会积极地提高传输速率。你只需告知它可用带宽,它就会以该速率发送数据,而不管网络拥塞情况如何。这就是为什么它在限速网络上也能保持如此高的速度。

  4. 混淆(可选): Hysteria2 可以在 QUIC 之上添加一个额外的混淆层(salamander),使流量看起来像是随机的 UDP 而不是 QUIC。如果你的 ISP 会专门识别并屏蔽 QUIC 流量,请使用此功能。


第一部分:服务器设置

安装 Hysteria2

# 官方安装脚本
bash <(curl -fsSL https://get.hy2.sh/)

# 验证
hysteria version

这将安装 hysteria 二进制文件并创建一个 systemd 服务。

获取 TLS 证书

Hysteria2 需要有效的 TLS 证书。最简单的方法是:

# 安装证书工具
sudo apt install certbot -y

# 获取证书 (默认使用 80 端口)
sudo certbot certonly --standalone -d your-domain.com

# 证书文件地址(your-domain.com 替换成你的域名):
# /etc/letsencrypt/live/your-domain.com/fullchain.pem
# /etc/letsencrypt/live/your-domain.com/privkey.pem

另一种方法: Hysteria2 可以使用其内置的 ACME 客户端自动获取证书(请参阅下面的配置)。

创建服务器配置

sudo nano /etc/hysteria/config.yaml
# 监听端口默认 443
listen: :443

# 使用 TLS 证书
tls:
  cert: /etc/letsencrypt/live/your-domain.com/fullchain.pem #替换成实际的地址
  key: /etc/letsencrypt/live/your-domain.com/privkey.pem    #替换成实际的地址

# 或者使用 ACME (自动获取证书):
# acme:
#   domains:
#     - your-domain.com
#   email: your@email.com

# 用户设置
auth:
  type: password
  password: your-strong-password-here  #设置密码

# 伪装域名
masquerade:
  type: proxy
  proxy:
    url: https://www.bing.com
    rewriteHost: true

配置 masquerade

masquerade 部分对于抵抗审查至关重要。当有人(或审查者的探测手段)使用普通浏览器而非 Hysteria2 客户端连接到你的服务器时,服务器会充当反向代理,指向伪装后的 URL。审查者看到的是一个普通的网站(在本例中为 Bing)。

选项:

  • proxy — 将请求代理到真实网站(最具说服力)
  • file — 提供本地文件
  • string — 返回静态字符串

开放防火墙

# UFW
sudo ufw allow 443/udp

# iptables
sudo iptables -A INPUT -p udp --dport 443 -j ACCEPT

重要提示: Hysteria2 使用 UDP 协议,而非 TCP 协议。请确保已打开 UDP 端口 443。

启动服务器

sudo systemctl start hysteria-server
sudo systemctl enable hysteria-server

# 查看状态
sudo systemctl status hysteria-server

# 查看日志
sudo journalctl -u hysteria-server -f

第二部分:客户端设置

Nekobox(安卓系统 — 推荐)

  1. 从 GitHub 发布版本安装 Nekobox
  2. 添加服务器 → 协议:Hysteria2
  3. 输入:
    • 服务器:your-domain.com
    • 端口:443
    • 密码:your-strong-password-here
    • SNI:your-domain.com
  4. 连接。

Hiddify(Android/iOS — 推荐)

  1. 安装 Hiddify(两个平台均可用)
  2. 添加服务器 → Hysteria2
  3. 请输入服务器详细信息
  4. 连接

Clash Meta / Mihomo(桌面/移动端)

添加到你的 Clash 配置中:

proxies:
  - name: "hysteria2"
    type: hysteria2
    server: your-domain.com
    port: 443
    password: your-strong-password-here
    sni: your-domain.com

v2rayN(Windows)

  1. 下载 v2rayN
  2. 添加服务器 → Hysteria2
  3. 输入服务器、端口、密码、SNI
  4. 连接

Sing-Box(高级)

{
  "outbounds": [
    {
      "type": "hysteria2",
      "server": "your-domain.com",
      "server_port": 443,
      "password": "your-strong-password-here",
      "tls": {
        "enabled": true,
        "server_name": "your-domain.com"
      }
    }
  ]
}

URI 格式(用于共享)

hy2://your-strong-password-here@your-domain.com:443?sni=your-domain.com#MyProxy

分享此链接——用户可以将其导入任何兼容 Hysteria2 的客户端。


第三部分:通过 3X-UI 面板进行设置

如果你已经使用 3X-UI 管理 Xray,则可以将 Hysteria2 添加为入站:

安装 3X-UI(如果尚未安装)

bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

添加 Hysteria2 入站

  1. 打开 3X-UI 面板(https://your-ip:2053
  2. 入站添加入站
  3. 设置:

| 环境 | 值 | | :------- | :-------------------------------------------------- | | 协议 | Hysteria2 | | 端口 | 443 | | 安全 | tls | | 域名 | your-domain.com | | 证书路径 | /etc/letsencrypt/live/your-domain.com/fullchain.pem | | 密钥路径 | /etc/letsencrypt/live/your-domain.com/privkey.pem |

  1. 添加带密码的客户端
  2. 复制客户链接/二维码

3X-UI 通过其 Web UI 处理用户管理、流量统计和到期日期。


第四部分:性能调校

带宽配置(Brutal 模式)

Hysteria2 最大的优势在于其"强力"的拥塞控制。请根据你的实际带宽进行配置:

服务器配置:

# 服务端带宽 (你 VPS 支持的带宽)
bandwidth:
  up: 1 gbps
  down: 1 gbps

客户端配置(Clash Meta 示例):

proxies:
  - name: "hysteria2"
    type: hysteria2
    server: your-domain.com
    port: 443
    password: your-strong-password-here
    up: "50 mbps"       # 你的设备实际上传速度
    down: "200 mbps"    # 你的设备实际下载速度

如何设置带宽值:

  • 将客户端 down 设置为你的实际下载速度(运行速度测试)
  • 将客户端 up 设置为你的实际上传速度
  • 服务器参数应与你的 VPS 带宽(通常为 1 Gbps)相匹配
  • 如果这些值设置得太高,会浪费带宽;设置得太低,则无法达到全速

端口跳跃

如果你的 ISP 屏蔽了特定的 UDP 端口,Hysteria2 支持端口跳跃——客户端会轮换使用多个端口:

服务器: 打开一系列端口:

# Open UDP ports 20000-40000
sudo iptables -A INPUT -p udp --dport 20000:40000 -j ACCEPT

# Forward all these ports to Hysteria2 (listening on 443)
sudo iptables -t nat -A PREROUTING -p udp --dport 20000:40000 -j REDIRECT --to-ports 443

客户端: 指定端口范围:

proxies:
  - name: "hysteria2-hopping"
    type: hysteria2
    server: your-domain.com
    port: 443
    ports: "20000-40000"     # Hop through this range
    password: your-strong-password-here

Salamander 混淆

如果你的 ISP 明确屏蔽了 QUIC 协议,请启用 Salamander 混淆功能,将流量伪装成随机 UDP 流量:

服务器配置:

obfs:
  type: salamander
  salamander:
    password: your-obfs-password

客户端配置:

proxies:
  - name: "hysteria2-obfs"
    type: hysteria2
    server: your-domain.com
    port: 443
    password: your-strong-password-here
    obfs: salamander
    obfs-password: your-obfs-password

第五部分:安全加固

使用 Fortify

Fortify 可自动检测 Hysteria2 并加固你的服务器:

bash <(curl -sL https://github.com/SamNet-dev/fortify/raw/main/install.sh)
fortify

它将:

  • 检查 TLS 配置
  • 屏蔽 SMTP 端口(防止垃圾邮件滥用)
  • 添加速率限制
  • 设置 SYN 防洪措施
  • 评估你的整体安全性

封禁滥用行为

防止用户使用你的代理服务器进行垃圾邮件或种子下载:

# Block SMTP (spam relay prevention)
sudo iptables -A OUTPUT -p tcp --dport 25 -j DROP
sudo iptables -A OUTPUT -p tcp --dport 465 -j DROP
sudo iptables -A OUTPUT -p tcp --dport 587 -j DROP

监控使用情况

# View Hysteria2 logs
sudo journalctl -u hysteria-server -f

# Check active connections
ss -unp | grep hysteria

# Monitor bandwidth
vnstat -l

第六部分:多用户设置

使用 Hysteria2 原生身份验证

使用用户名密码文件:

auth:
  type: userpass
  userpass:
    alice: password-for-alice
    bob: password-for-bob
    charlie: password-for-charlie

每个用户都有自己的 URI:

hy2://alice:password-for-alice@your-domain.com:443?sni=your-domain.com#Alice
hy2://bob:password-for-bob@your-domain.com:443?sni=your-domain.com#Bob

采用 3X-UI

3X-UI 提供了一个完整的 Web 用户界面,用于管理 Hysteria2 用户,其功能包括:

  • 每个用户使用单独的密码
  • 流量配额
  • 到期日期
  • 连接限制
  • 二维码和订阅链接

这是管理多个用户的最简便方法。请参阅 3X-UI 设置


Hysteria2 与 VLESS+Reality:何时使用哪种?

| 场景 | 使用 Hysteria2 | 使用 VLESS+Reality | | :--------------------- | :------------------------------ | :----------------------------------- | | 高丢包率/网络限速 | 是的(QUIC 在这方面处理得更好) | 在有损链路上速度较慢 | | ISP 屏蔽 UDP/QUIC | 否(Hysteria2 需要 UDP) | 是的(基于 TCP) | | 需要 CDN 备用方案 | 否(不支持 CDN) | 是的(VLESS+WS+CDN) | | 最高速度 | 是的(Brutal 拥塞控制) | 网络状况不佳时速度较慢 | | 端口 443 仅限 TCP 网络 | 否 | 是的 | | 服务器探测阻力 | 好(masquerade) | 极好的(Reality 握手) | | 客户端应用支持 | 大多数现代客户端 | 大多数现代客户端 |

最佳策略: 同时运行两者。Hysteria2 作为主服务器(速度快),VLESS+Reality 作为备用服务器(在 UDP 被阻塞时可用)。3X-UI 支持在同一服务器上运行两者。


故障排除

# 检查状态
sudo systemctl status hysteria-server

# 检查日志错误
sudo journalctl -u hysteria-server --no-pager | tail -30

# 查看 443 端口是否开放
ss -ulnp | grep 443

# 测试客户端
# 如果连接失败,尝试使用混淆
# 如果仍然失败,你的网络运营商可能屏蔽了所有 UDP 网络 — 去使用 VLESS+Reality (TCP)

| 问题 | 解决方法 | | :-------------------------------------- | :------------------------------------------------------ | | 无法连接 | 检查防火墙是否允许 UDP 443 端口:sudo ufw allow 443/udp | | TLS 证书错误 | 检查配置中的证书路径。续订:sudo certbot renew | | 速度慢 | 在客户端配置中设置正确的带宽值(Brutal 模式) | | 网络连接频繁中断 | 启用端口跳跃(参见第四部分) | | ISP 屏蔽 QUIC | 启用 Salamander 混淆或切换到 VLESS+Reality | | 服务器显示无连接 | 检查客户端 SNI 是否与你的域名完全匹配 | | WiFi 模式下可用,但移动数据模式下不可用 | 移动运营商可能会屏蔽 UDP 协议。尝试切换端口或切换协议 | | "身份验证失败" | 服务器和客户端配置之间的密码不匹配 |


相关指南

📖 原文件来源: SamNet Learn — Hysteria2 Setup Guide. 本文为中文翻译版。

Comments