Hysteria2 服务端搭建教程:Cloudflare DNS + VPS 部署
本文记录如何使用自己的域名和 VPS 搭建 Hysteria2 服务端。示例中使用的子域名是:
1 | hy2.example.com |
请把文中的域名、邮箱和 VPS IP 替换成你自己的真实信息。
本文只适合合法自用、远程办公、授权测试和个人网络环境优化。不要用于违法用途,也不要用于违反服务条款的场景。
一、准备工作
开始之前,你需要准备好以下内容:
- 一个自己的域名;
- 一台 VPS,系统建议 Debian 或 Ubuntu;
- VPS 的公网 IPv4 地址;
- 可以 SSH 登录 VPS 的 root 权限;
- 域名 DNS 管理权限,例如 Cloudflare。
本文默认使用的服务端域名是:
1 | hy2.example.com |
后面所有命令里的 hy2.example.com、[email protected] 和 你的VPS_IP 都需要替换。
二、进入 DNS 设置页面
先找到你的域名 DNS 设置页面。
如果你使用 Cloudflare,常见路径是:
1 | 网站 -> DNS -> Records |
进入 DNS Records 页面后,准备添加一条新的 DNS 记录。
三、添加子域名解析
添加一条 A 记录:
| 类型 | 名称 | 内容 | TTL | 代理状态 |
|---|---|---|---|---|
| A | hy2 | 你的 VPS IPv4 地址 | Auto 或 300 | DNS only / 灰云 |
示例:
| 类型 | 名称 | 内容 | TTL | 代理状态 |
|---|---|---|---|---|
| A | hy2 | 123.123.123.123 | Auto | DNS only |
这里的最终访问域名就是:
1 | hy2.example.com |
注意,Cloudflare 里一定不要开启橙云代理,要保持 DNS only,也就是灰云状态。
原因很简单:普通 Cloudflare CDN 不会直接代理 Hysteria2 的 UDP 443 流量。开启橙云后,客户端连接到的是 Cloudflare,而不是你的 VPS,Hysteria2 会连不上。
四、等待 DNS 生效
添加 DNS 记录后,等待几分钟。
可以在本地电脑或 VPS 上测试:
1 | ping hy2.example.com |
如果能解析到你的 VPS IPv4 地址,说明 DNS 已经生效。
如果暂时没有解析到,先等几分钟再试。DNS 生效时间和本地缓存、运营商缓存、域名服务商有关。
五、SSH 登录 VPS
DNS 准备好后,SSH 登录 VPS:
1 | ssh root@你的VPS_IP |
示例:
1 | ssh [email protected] |
登录后再继续执行下面的命令。
六、更新系统并安装基础工具
先更新系统:
1 | apt update && apt upgrade -y |
安装基础工具:
1 | apt install -y curl wget nano openssl ca-certificates |
这些工具后面会用于下载安装脚本、编辑配置文件、生成随机密码和处理证书相关请求。
七、开启 BBR 网络优化
BBR 不是 Hysteria2 的必需项,因为 Hysteria2 主要使用 UDP/QUIC,net.ipv4.tcp_congestion_control=bbr 直接优化的是 TCP 拥塞控制。
不过 VPS 上通常还会跑 SSH、证书申请、网站伪装页、订阅服务或其他 TCP 服务,所以建议把 BBR 作为基础网络优化一起开启。
先写入 BBR 配置。注意:请点击代码块右上角的复制按钮完整复制,确保粘贴到终端时包含换行。下面这一段要从第一行复制到 EOF,作为一个整体执行:
1 | tee /etc/sysctl.d/99-bbr.conf > /dev/null <<'EOF' |
再应用系统参数:
1 | sysctl --system |
检查是否生效:
1 | sysctl net.ipv4.tcp_congestion_control |
正常情况下可以看到类似结果:
1 | net.ipv4.tcp_congestion_control = bbr |
如果 lsmod | grep bbr 没有输出,但前面的 sysctl 已经显示 bbr,通常也可以继续部署。部分内核会把 BBR 编进内核,不一定以模块形式显示。
八、安装并配置 UFW 防火墙
Debian 或 Ubuntu 可以直接安装 UFW:
1 | apt update |
然后放行必要端口:
1 | ufw allow 22/tcp |
启用 UFW:
1 | ufw enable |
查看状态:
1 | ufw status |
注意:一定要先放行 22/tcp,再执行 ufw enable。否则启用防火墙后,SSH 可能会被阻断。
如果你的 VPS 服务商还有额外的安全组、防火墙或云防火墙,也需要同步放行:
22/tcp:SSH 登录;80/tcp:ACME 证书申请;443/udp:Hysteria2 连接端口。
九、安装 Hysteria2
执行官方安装脚本:
1 | bash <(curl -fsSL https://get.hy2.sh/) |
安装完成后,生成认证密码和混淆密码:
1 | AUTH=$(openssl rand -base64 32) |
这两个变量会写入 Hysteria2 配置文件。
十、创建 Hysteria2 配置文件
执行下面的命令创建配置文件:
1 | cat > /etc/hysteria/config.yaml <<EOF |
这里需要替换两处:
1 | hy2.example.com |
hy2.example.com 改成你自己的 Hysteria2 子域名,[email protected] 改成你的邮箱。
命令执行完成后,终端会输出两项重要信息:
1 | auth password: xxxxx |
请保存好这两个密码,后面配置客户端时会用到。
十一、检查配置文件
写入配置后,先检查一下文件内容:
1 | cat -n /etc/hysteria/config.yaml |
重点确认下面几项:
- 域名是否是你的真实域名;
- 邮箱是否填写正确;
listen是否是":443";auth.password是否已经生成;obfs.salamander.password是否已经生成;- YAML 缩进是否正常。
十二、重启并检查服务
重启 Hysteria2 服务:
1 | systemctl restart hysteria-server.service |
查看服务状态:
1 | systemctl status hysteria-server.service |
如果正常运行,应该可以看到类似状态:
1 | Active: active (running) |
这表示 Hysteria2 服务端已经启动成功。
十三、常见问题排查
1. 服务没有启动成功
查看服务日志:
1 | journalctl -u hysteria-server.service -e |
优先检查:
- DNS 是否已经解析到 VPS;
- Cloudflare 是否保持灰云;
- VPS 防火墙是否放行
80/tcp和443/udp; - 云厂商安全组是否放行
443/udp; - 配置文件缩进是否正确;
- 邮箱和域名是否填写正确。
2. 客户端无法连接
先检查 UFW:
1 | ufw status |
确认里面有:
1 | 443/udp |
然后再检查 Cloudflare DNS 记录,代理状态必须是:
1 | DNS only |
也就是灰云,不能是橙云。
3. 域名能 ping 通但服务仍然连不上
ping 只能说明域名解析到了某个 IP,并不代表 UDP 443 一定通。
继续检查:
- VPS 系统防火墙;
- VPS 服务商安全组;
- Hysteria2 服务状态;
- Hysteria2 日志;
- 客户端里的认证密码和混淆密码是否填写正确。
总结
整个流程可以概括为:
- 在 Cloudflare 添加
hy2的 A 记录; - 代理状态保持
DNS only,不要开启橙云; - 等待 DNS 解析生效;
- SSH 登录 VPS;
- 安装基础工具;
- 开启 BBR 基础网络优化;
- 安装 UFW,并放行
22/tcp、80/tcp、443/udp; - 安装 Hysteria2;
- 写入
/etc/hysteria/config.yaml; - 重启并检查
hysteria-server.service。
最后服务状态显示:
1 | Active: active (running) |
就说明 Hysteria2 服务端已经正常运行,可以继续配置客户端。
