Hysteria2 安装与配置指南

简介

Hysteria2(简称 Hy2)是一个高性能的代理工具,基于 QUIC 协议(UDP 传输),专为快速、安全的网络连接设计。它支持伪装流量、TLS 加密、混淆和端口跳跃等功能,能够有效应对网络限制,提供低延迟和高吞吐量的连接。Hy2 适用于需要高速网络传输的场景,如科学上网、远程访问和流媒体传输。本指南提供 Hy2 服务器和客户端的配置方法,分为以下三个部分:

  1. 一键部署脚本:通过 GitHub 项目 sindricn/s-hy2 快速搭建。
  2. 手动服务器配置:手搓服务器设置,包括证书、伪装域名和高级配置。
  3. 客户端配置:手动输入节点信息或使用 JSON 模板文件导入,支持端口跳跃和混淆配置。

🎬 视频教程

一键部署脚本

项目介绍

项目地址: https://github.com/sindricn/s-hy2

一键安装脚本命令

1
curl -fsSL https://raw.githubusercontent.com/sindricn/s-hy2/main/quick-install.sh | sudo bash

脚本快捷启动命令

1
sudo s-hy2

手动服务器配置

安装

运行以下命令安装 Hysteria2:

1
bash <(curl -fsSL https://get.hy2.sh/)

卸载

移除 Hysteria2:

1
bash <(curl -fsSL https://get.hy2.sh/) --remove

配置文件编辑

编辑配置文件 /etc/hysteria/config.yaml

1
nano /etc/hysteria/config.yaml

快捷生成配置文件

使用以下命令快速生成 /etc/hysteria/config.yaml 文件,包含 ACME 和自签名证书两种配置选项(根据需要注释掉不需要的部分):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
cat << EOF > /etc/hysteria/config.yaml
listen: :443 #监听端口

#使用ACME证书
#acme:
# domains:
# - hy2.959923.xyz #已解析到服务器的域名
# email: [email protected]

#使用自签证书
tls:
cert: /etc/hysteria/server.crt
key: /etc/hysteria/server.key

auth:
type: password
password: nbvil666 #设置认证密码

obfs:
type: salamander
salamander:
password: nbvil888

masquerade:
type: proxy
proxy:
url: https://cdn.jsdelivr.net #伪装域名
rewriteHost: true
EOF
  • 说明
    • listen: 设置监听端口,默认 443。若需自定义,取消注释并修改。
    • acme: 用于自动获取 ACME 证书,需替换域名(hy2.959923.xyz)和邮箱([email protected])。若使用自签名证书,注释此部分。
    • tls: 用于自签名证书,需生成证书文件(见下文)。若使用 ACME 证书,注释此部分。
    • auth.password: 设置认证密码(默认 nbvil666),需与客户端一致。
    • obfs: 设置混淆密码(默认 nbvil888)。若不启用混淆,删除此部分。
    • masquerade.proxy.url: 设置伪装域名(默认 cdn.jsdelivr.net),可替换为低延迟域名。

配置 ACME 证书

  1. 取消 acme 部分的注释,注释掉 tls 部分。
  2. hy2.959923.xyz 替换为已解析到服务器的域名。
  3. [email protected] 替换为您的电子邮件地址。
  4. 可选:修改认证密码 nbvil666 为自定义密码。
  5. 如果使用默认伪装域名(cdn.jsdelivr.net),保存后启动服务器。

配置自定义伪装域名

测试低延迟域名,列出延迟最低的 10 个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(for d in \
www.cloudflare.com www.apple.com www.microsoft.com www.bing.com www.google.com \
developer.apple.com www.gstatic.com fonts.gstatic.com fonts.googleapis.com \
res-1.cdn.office.net res.public.onecdn.static.microsoft static.cloud.coveo.com \
aws.amazon.com www.aws.com cloudfront.net d1.awsstatic.com \
cdn.jsdelivr.net cdn.jsdelivr.org polyfill-fastly.io \
beacon.gtv-pub.com s7mbrstream.scene7.com cdn.bizibly.com \
www.sony.com www.nytimes.com www.w3.org www.wikipedia.org \
ajax.cloudflare.com www.mozilla.org www.intel.com \
api.snapchat.com images.unsplash.com \
edge-mqtt.facebook.com video.xx.fbcdn.net \
gstatic.cn \
; do \
t1=$(date +%s%3N); \
timeout 1 openssl s_client -connect $d:443 -servername $d </dev/null &>/dev/null && \
t2=$(date +%s%3N) && echo "$((t2 - t1)) $d"; \
done) | sort -n | head -n 10 | awk '{printf "✔️ %s (%s ms)\n", $2, $1}'

masquerade.proxy.url 中的 cdn.jsdelivr.net 替换为选定的低延迟域名。

配置自签名证书

生成自签名证书:

1
2
3
4
5
6
7
8
sudo mkdir -p /etc/hysteria && \
openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) \
-keyout /etc/hysteria/server.key \
-out /etc/hysteria/server.crt \
-subj "/CN=cdn.jsdelivr.net" \
-days 3650 && \
sudo chown hysteria /etc/hysteria/server.key && \
sudo chown hysteria /etc/hysteria/server.crt
  1. -subj 中的 cdn.jsdelivr.net 替换为您的伪装域名。
  2. 更新配置文件:
    • 注释掉 acme 部分,取消 tls 部分的注释。
    • 确保 tls.certtls.key 路径正确。
  3. masquerade.proxy.url 中的 cdn.jsdelivr.net 替换为伪装域名。

服务器管理

启动服务

启用并启动服务:

1
systemctl enable --now hysteria-server.service

重启服务

修改配置文件后重启:

1
systemctl restart hysteria-server.service

检查状态

验证服务状态:

1
systemctl status hysteria-server.service

查看日志

检查服务器日志:

1
journalctl --no-pager -e -u hysteria-server.service

高级配置

修改端口

在配置文件中取消 listen: :443 注释,将 443 替换为自定义端口。

添加混淆

启用混淆(已在快捷命令中包含):

1
2
3
4
obfs:
type: salamander
salamander:
password: nbvil888

nbvil888 替换为自定义混淆密码。若不启用,删除 obfs 部分。

启用端口跳跃

配置端口跳跃:

1
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 20000:50000 -j REDIRECT --to-ports 443
  • 如果不清楚实际网络接口名称,可运行以下命令查看:
    1
    ip link
    1
    ifconfig
    查找活跃的网络接口(如 eth0ens3enp0s3),替换 eth0
  • 调整 20000:50000 为所需端口范围。
  • 如果使用自定义端口,替换 443 为相应端口。
  • 注意:多次配置要跳跃端口的时候,如果有修改需要确认与原有配置的端口不冲突,建议先删除原有跳跃端口配置,在重新配置,避免冲突导致节点失效

客户端配置

Hysteria2 客户端配置支持两种手搓方案:手动输入节点信息或通过 JSON 模板文件导入。模板适配服务器配置,包括端口跳跃和混淆的启用/禁用场景。

方案 1:手动输入节点信息

  1. 收集节点信息
    • 服务器地址:如 your.server.ip:443hy2.959923.xyz:443。若启用端口跳跃,可使用范围内的端口(如 20000)。
    • 认证密码:如 nbvil666
    • SNI:与证书域名匹配:
      • ACME 证书:使用 acme.domains 中的域名(如 hy2.959923.xyz)。
      • 自签名证书:使用证书的 CN(如 cdn.jsdelivr.net)。
      • 默认伪装:通常与 masquerade.proxy.url 一致(如 cdn.jsdelivr.net)。
    • 混淆密码(若启用):如 nbvil888
  2. 选择客户端
    • Hysteria2 官方客户端(Windows/macOS/Linux/Android/iOS):官方支持,推荐。
    • Nekobox(Android/iOS):多协议支持,适合高级用户.
    • Shadowrocket(iOS)或 v2rayNG(Android):需确认支持 Hysteria2。
  3. 输入配置
    • 打开客户端,选择“添加节点”或“新建配置”。
    • 输入服务器地址(端口跳跃时随机选择范围内的端口,如 20000)、认证密码、SNI。
    • 若服务器启用混淆,输入混淆密码;否则跳过。
    • 保存并测试连接。
  4. 注意事项
    • 确保配置与服务器一致,尤其是 authobfs.password
    • SNI 必须与服务器证书的域名匹配。
    • 端口跳跃时,可随机选择 20000-50000 内的端口;未启用时,使用单一端口(如 443)。
    • 自签名证书可能需启用“允许不安全连接”(insecure: true),不推荐。

优点:简单直接,适合单节点或临时测试。
缺点:多节点配置效率低,易出错。

方案 2:节点模板文件导入

  1. 创建节点配置文件:使用以下 JSON 模板,保存为 hysteria2-client-config.json
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"server": "your.server.ip:443",
"ports": "20000-50000",
"auth": "nbvil666",
"tls": {
"sni": "cdn.jsdelivr.net",
"insecure": false
},
"obfs": {
"type": "salamander",
"password": "nbvil888"
}
}
  1. 编辑模板
    • server: 替换为服务器 IP 或域名及单一端口(如 192.168.1.1:443hy2.959923.xyz:443)。若启用端口跳跃,可保持默认端口或留空。
    • ports: 若启用端口跳跃,指定范围(如 20000-50000);若未启用,删除此字段
    • auth: 替换为认证密码(默认:nbvil666)。
    • tls.sni: 替换为证书域名:
      • ACME 证书:使用 acme.domains 中的域名(如 hy2.959923.xyz)。
      • 自签名证书:使用证书的 CN(如 cdn.jsdelivr.net)。
      • 默认伪装:通常与 masquerade.proxy.url 一致(如 cdn.jsdelivr.net)。
    • tls.insecure: 保持 false,自签名证书连接失败时可设为 true(不推荐)。
    • obfs: 若启用混淆,替换密码为 nbvil888 或自定义值;若未启用,删除此字段
  2. 导入客户端
    • Hysteria2 官方客户端: 在“导入配置文件”中选择 hysteria2-client-config.json
    • Nekobox: 在“节点管理”中导入 JSON 文件。
    • Shadowrocket/v2rayNG: 确认支持 JSON 格式,导入或手动输入。
  3. 多节点支持(可选):
    • 创建 JSON 数组,包含多个节点:
      1
      2
      3
      4
      [
      { /* 节点 1 配置,如上述模板 */ },
      { /* 节点 2 配置 */ }
      ]
      保存为 hysteria2-multi-nodes.json,导入支持多节点的客户端。
  4. 测试连接
    • 导入后测试连接,端口跳跃时可随机选择 ports 范围内的端口。
    • 若连接失败,检查服务器日志:
      1
      journalctl --no-pager -e -u hysteria-server.service

优点:便于批量管理,减少输入错误,支持多设备同步。
缺点:需手动编辑 JSON,初期稍复杂。

客户端配置注意事项

  • 配置匹配:客户端配置必须与服务器 /etc/hysteria/config.yaml 一致,尤其是 auth, obfs.password, 和 tls.sni
  • SNI:必须与服务器证书域名匹配(ACME 使用 acme.domains,自签名证书使用 CN,默认配置通常与 masquerade.proxy.url 一致)。
  • 端口跳跃:若启用,客户端可随机使用 ports 范围内的端口(如 20000-50000);若未启用,删除 ports 字段,并在 server 中指定单一端口。
  • 混淆:若服务器未启用混淆,删除 obfs 字段;否则确保密码一致。

总结

本指南提供 Hysteria2 的完整配置流程:

  • 简介概述 Hy2 的功能和适用场景。
  • 一键部署脚本通过 sindricn/s-hy2 简化安装。
  • 手动服务器配置支持 ACME、自签名证书、伪装域名、端口跳跃和混淆,新增快捷生成配置文件命令和网络接口查看提示。
  • 客户端配置提供手动输入和 JSON 模板导入两种方案,模板支持端口跳跃和混淆,明确指导删除未启用的字段(如 portsobfs),并修正 SNI 为证书域名。修改配置后,重启服务并检查状态以确保正常运行。