Hysteria 2 完整部署教程:Windows 11 + 安卓 sing-box + Moonlight / Sunshine

Hysteria 2 完整部署教程:Windows 11 + 安卓 sing-box + Moonlight / Sunshine
Hysteria 2 完整部署教程:Windows 11 + 安卓 sing-box + Moonlight / Sunshine
场景:Windows 11 家用电脑运行 Sunshine 和 Hysteria 2 服务端;安卓手机运行 sing-box 的 VPN/TUN 模式,再通过 Moonlight 串流。家宽没有公网 IPv4,但具有可入站访问的公网 IPv6。
已验证的 Hysteria 版本:v2.13.0(Windows amd64-avx)。不同软件版本的界面可能略有不同。
一、最终网络结构
|
这里借助安卓 sing-box 的 TUN 模式,将 Moonlight 的 TCP/UDP 流量交给 Hysteria 2 转发;Moonlight 填写的是 Windows 局域网 IPv4地址。
二、准备条件
| 项目 | 本文使用的值 |
|---|---|
| 服务端操作系统 | Windows 11 |
| Hysteria 2 程序目录 | D:\hysteria |
| 可执行文件 | D:\hysteria\hysteria.exe |
| 服务端配置 | D:\hysteria\config.yaml |
| 安卓配置 | D:\hysteria\android-singbox.json |
| 域名 | speedtest.20010501.xyz |
| 公网连接 | IPv6,UDP 443 |
| TLS 证书 | Hysteria 内置 ACME,HTTP-01 验证使用 TCP 80 |
| Sunshine 所在电脑 IPv4 | 192.168.2.23(示例为本次实际使用值) |
你需要有:
- 一个正确指向 Windows 当前公网 IPv6 的 AAAA DNS 记录;如果通过 Cloudflare 管理解析,应设为 仅 DNS(灰云),不能用普通网页代理代替 Hysteria 的 UDP 服务。
- Windows 和路由器的 IPv6 防火墙允许 UDP 443 入站;首次申请和以后续期 ACME HTTP-01 证书时,还需要 TCP 80 入站。
- 安卓网络具备通往该 IPv6 地址的能力。仅有 IPv4 且没有 IPv6 转换路径的网络无法直接连接这个 IPv6-only 服务端。
- Windows 上已正常运行 Sunshine;安卓已安装 Moonlight。
安全提醒: 只开放 Hysteria 所需端口,不需要把 Sunshine 端口直接暴露到公网。后文生成的客户端 JSON 含有连接密码,不能公开分享。
三、下载并验证 Hysteria 2
官方来源:
Windows 64 位可选:
hysteria-windows-amd64.exe:普通 x64 版本;hysteria-windows-amd64-avx.exe:需要 CPU 支持 AVX。本次实际使用这一版。
Hysteria 是命令行程序,双击没有安装界面是正常的。
四、配置公网 IPv6 域名
在域名 DNS 管理后台添加:
| 类型 | 主机记录 | 记录值 |
|---|---|---|
| AAAA | speedtest |
Windows 电脑当前的公网 IPv6 |
例如域名为:speedtest.20010501.xyz。
五、放行 Windows 防火墙
以管理员身份启动 PowerShell,执行:
|
如果规则已经创建,无需重复添加。路由器还需允许对应的 IPv6 入站。这里的 UDP 443 和旧版 OpenVPN 的 TCP 443 是不同传输协议,可在不冲突的前提下同时监听。
六、一次生成服务端和安卓客户端配置(推荐)
这是重装时使用的一次性脚本。 如果你当前的 Hysteria 已经稳定运行且设置了开机自启,不要直接覆盖现有配置;否则新密码会让旧客户端无法连接。你可以把这部分保存为以后重装用的教程。
脚本会:
- 让你输入 ACME 证书邮箱和 Windows 局域网 IPv4;
- 随机生成一份强密码;
- 用相同密码同时生成
config.yaml与android-singbox.json,避免之前的空密码和拼写错误; - 固定 ACME 存储目录,方便日后以 Windows 系统账户后台运行。
在 Windows PowerShell 中复制执行整段代码:
|
生成后的服务端配置结构如下(示例密码并非真实密码):
|
其中 acme.dir 明确指定证书与 ACME 账户存储目录,避免使用计划任务的 SYSTEM 账户启动时,默认用户缓存路径与手动运行时不一致。type: http 的证书验证需要外部能够访问 TCP 80。
七、启动 Windows Hysteria 2 服务端
在 PowerShell 中执行:
|
首次启动可能需要申请 TLS 证书。成功时一般能看到:
|
此时不要关闭窗口,先完成手机测试。如果申请证书失败,优先核对:域名 AAAA、TCP 80 入站、防火墙、ACME 邮箱和证书日志。
八、安卓安装 sing-box,导入 TUN 配置
官方客户端:sing-box for Android。它支持运行本地配置和安卓 VPN/TUN 透明代理。
操作步骤:
- 将
D:\hysteria\android-singbox.json传到手机。 - 在 sing-box 中添加本地配置,选择该 JSON 文件。
- 选中配置并启动,允许系统的 VPN 权限。
- 如果手机此前正在运行 OpenVPN,应先断开旧 VPN,避免 Android VPN 互斥。
- 建议用移动数据测试,避免同一局域网环境下误以为已打通公网路径。
本教程生成的配置会把大多数安卓网络流量通过 Hysteria 2,而不只是 Moonlight;这是全局 TUN 测试配置,使用时需要留意数据流量和设备耗电。
其中关键部分如下:
|
注意: 上面 JSON 仅用于理解结构;真正导入安卓的应是第六步生成的、含有效密码的 android-singbox.json。
九、让 Moonlight 连接 Sunshine
在 Windows 上查看局域网 IPv4:
|
找到正在联网的“以太网适配器”或“无线局域网适配器”,例如:
|
安卓操作:
- 确认 Windows 上 Sunshine 运行正常。
- 先启动 sing-box VPN,确保 Hysteria 2 可以连接。
- 打开 Moonlight,点击添加电脑(
+)。 - 输入 Windows 局域网 IP:
192.168.2.23(其他电脑请替换成自己的 IP)。 - 完成 Moonlight 与 Sunshine 配对,然后开始串流。
十、设置 Windows 开机自启、后台运行
这里采用 Windows 任务计划程序:开机即启动、不要求登录桌面,也不需要保留 PowerShell 窗口。
重要: 先保证服务端配置中的 acme.dir 已设为固定路径(本教程是 D:/hysteria/acme)。如果你原来已经用其他目录成功申请证书,切换之前应备份现有证书和配置,避免重新申请时无法访问 TCP 80。
首先关闭手动运行 Hysteria 的窗口(按 Ctrl+C),避免与后台任务争用 UDP 443。
以管理员身份打开 PowerShell,执行:
|
立即启动后台任务:
|
查看状态:
|
任务显示 Running、后台存在 hysteria 进程,并且安卓 Moonlight 能正常串流,才算验证成功。只看进程存在还不足以证明证书和网络连接都正常。
常用管理命令:
|
建议最后重启 Windows 一次,确认在尚未手动打开 PowerShell 时,安卓仍能连上 Moonlight。
十一、曾经遇到的错误及解决方法
| 报错或现象 | 原因 | 处理 |
|---|---|---|
hysteria.exe 无法识别 |
文件原名是hysteria-windows-amd64-avx.exe,或执行目录不对 |
在正确文件夹运行原文件名,或重命名为hysteria.exe |
| 双击 EXE 没反应 | Hysteria 是命令行程序,不是图形安装器 | 在 PowerShell 执行./hysteria.exe version(Windows 建议 .\hysteria.exe version) |
netip.ParsePrefix("/32"): ParseAddr("") |
客户端生成了空的 CIDR 地址,例如"ip_cidr": ["/32"] |
删除错误规则,或填写完整有效的192.168.2.23/32;本文推荐的全局路由配置不需要此规则 |
authentication failed, status code: 404 |
最常见是 Hysteria 2 两端密码不一致;也可能连到了错误服务端 | 核对config.yaml 的 auth.password 与安卓 JSON 的 password,修改服务端后重启 |
| PowerShell 提示“密码不能为空” | Read-Host '文字' 里的文字只是提示;直接回车会得到空字符串 |
在提示符后输入真实密码,或使用本文的一次性生成脚本 |
| 服务端启动失败 / 证书错误 | AAAA 不正确、TCP 80 不通、ACME 失败或系统账户找不到证书缓存 | 检查 DNS、入站防火墙和固定acme.dir |
| sing-box 已运行但 Moonlight 连不上 | Sunshine 未运行、IP 填错、防火墙规则或服务端认证失败 | 查看 sing-box 错误日志,核对 Sunshine 和局域网 IP |
| 本地能连,手机流量连不上 | 手机网络缺少 IPv6 路径,或公网 IPv6/UDP 443 不通 | 测试公网连通性、DNS 与手机当前网络 |
本次真实踩坑: Windows 服务端的密码曾被写成一个拼写,安卓客户端写成另一个拼写,导致
authentication failed, status code: 404。调整两端密码一致并重启服务端后,Moonlight 串流成功且连接稳定。不要在公开教程中附上真实密码。
十二、日常维护建议
- 保持密码安全: 曾经贴到聊天或公开页面的密码应视为已泄露,最好同时更换 Windows 服务端和安卓客户端密码。
- 保持 AAAA 更新: 家庭 IPv6 如果变化,需要使用 DDNS,否则域名会指向旧地址。
- 确认 TLS 自动续期: 使用 ACME HTTP-01 时,需要确保 TCP 80 在续期期间仍可从公网访问。
- 避免重复运行: 手动 PowerShell 与计划任务同时运行时,可能争用 UDP 443。
- 明确转发范围: 当前方案让手机多数流量经 Windows 出网;若只想代理 Moonlight,需要进一步配置 Android 分应用或目标路由规则。
- 游戏串流不是“绝对提速”: Hysteria 2 基于 UDP/QUIC,可能比 OpenVPN TCP 更适合高码率低延迟传输,但最终质量仍取决于运营商、丢包、带宽和路由。
参考资料
- Hysteria 2 官方安装文档
- Hysteria 2 官方服务端指南
- Hysteria 2 完整服务端配置(ACME、认证、监听)
- Hysteria 2 官方故障排除
- sing-box for Android
- sing-box TUN 入站配置
- sing-box Hysteria2 出站配置
完成判据: Windows 重启后 Hysteria 2 自动在后台运行;安卓 sing-box 启动 VPN/TUN;Moonlight 手动添加 192.168.2.23,能够通过手机移动网络稳定连接 Sunshine 并串流。





(1).webp)
.webp)


