Hysteria2客户端怎么导入连接?hy2链接各参数含义和手动填写对照
服务端搭好之后,面板或者脚本会给你一条这样的链接:
1 | hysteria2://密码@your.domain.net:443/?sni=your.domain.net&insecure=0#我的节点 |
很多人把它整条复制进客户端就完事了,导入失败或者连不上时却不知道该改哪里。这条链接其实就是把客户端要填的字段拼在了一起,拆开看一遍,以后不管用哪个客户端都能对上号。服务端那边的配置如果还没写,先看手写 config.yaml 的最小配置。
链接各部分是什么
官方的 URI 规范里,格式是 hysteria2://[认证]@主机[:端口]/?参数#名称,hy2:// 和 hysteria2:// 两种写法都认,只是简写区别。
| 链接里的部分 | 含义 | 客户端里对应的选项 |
|---|---|---|
@ 前面的字符串 |
认证密码(服务端 auth 里设的那个) |
密码 / Auth |
| 主机 | 服务器域名或 IP | 服务器地址 |
| 端口 | 不写默认 443,这是 UDP 端口 | 端口 |
sni= |
TLS 握手时用的服务器名 | SNI / 服务器名称 |
insecure=1 |
不验证服务端证书 | 跳过证书验证 / 允许不安全连接 |
obfs=salamander |
混淆类型 | 混淆 |
obfs-password= |
混淆密码,必须和服务端一致 | 混淆密码 |
pinSHA256= |
证书指纹校验 | 证书指纹 |
# 后面 |
节点备注名,不影响连接 | 节点名称 |
另外官方规范里端口那一栏还支持"多端口"写法,用来做端口跳跃,这部分可以看 S-UI 端口跳跃配置教程。如果认证用的是 userpass 类型(多用户配置),@ 前面要写成 用户名:密码,密码里有特殊字符的话需要做百分号转义,否则链接会被解析错。
导入到客户端
主流的支持 Hysteria2 的客户端有 Clash Meta 系、sing-box 系、NekoBox,v2rayN 的部分版本也支持,导入前先确认你用的版本带 Hysteria2。具体按钮名称和菜单位置每个客户端、每个版本都不太一样,我这里不逐个写界面步骤,通用的思路只有两条:
- 整条导入:复制那条
hy2://链接,客户端里找"从剪贴板导入",或者面板里点二维码用手机扫。 - 手动填写:客户端不认链接的话,新建一个 Hysteria2 节点,把上面表格里的各项对着填进去。
两个最容易填错的选项
证书验证(insecure):这个要看服务端到底用的哪种证书。服务端用 tls 字段配的自签证书,客户端要打开跳过证书验证,链接里就是 insecure=1;服务端用 acme 申请的真实域名证书,就不需要打开,打开了反而降低了安全性。官方文档里也建议如果非要用 insecure,最好配合 pinSHA256 指纹校验一起用,这样至少能确认连的是你自己的服务器。
混淆(obfs):服务端配置里加了 obfs,客户端就必须填同样的类型和密码,少填、填错都会直接连不上,而且报错不一定会明确告诉你是混淆的问题。服务端没开混淆的话,客户端这几项留空。
电脑上用官方命令行客户端测试
怀疑是客户端软件的问题时,用官方命令行客户端测一下最干净。准备一个 config.yaml:
1 | server: your.domain.net:443 |
用自签证书的话,再加上这一段:
1 | tls: |
运行官方二进制文件(-c 可以指定配置文件路径),它会在本地开一个 SOCKS5 端口 1080 和一个 HTTP 代理端口 8080,把浏览器或者其他程序的代理指向它们就能走 Hysteria2。如果官方客户端能连上而图形客户端连不上,问题就在图形客户端的设置,不在服务端。
导入后连不上,按这个顺序查
- UDP 端口放行了没有:系统防火墙和服务商安全组两边都要放行配置端口的 UDP,只放 TCP 是最常见的原因,具体可以看3x-ui配置Hysteria2节点教程。
- 证书验证选项对不对:自签证书没开跳过验证,或者真实证书却填了不匹配的 SNI,都会握手失败。
- 混淆是否一致:服务端有 obfs,客户端类型和密码要一模一样。
- 端口、密码有没有复制错:多了空格或者少了字符,肉眼很难发现,重新复制一遍。
- 看服务端日志:
journalctl --no-pager -e -u hysteria-server.service,用官方脚本装的话服务名是这个,其他方式安装的以实际为准。
服务端还没装的话,安装方式可以看Hysteria2一键安装脚本。
连上之后觉得速度慢,先看Hysteria2速度慢怎么办,bandwidth 填得不对反而更慢。