- Published on
使用docker运行hysteria2
- Authors
- Name
- JiGu
- @crypto20x
前言
hysteria2是基于udp的协议,卖点是Brutal拥塞控制算法,可以通过用户手动指定所需速率来抵抗丢包。
测速
curl -Lso- bench.sh | bash
Node Name Upload Speed Download Speed Latency
Speedtest.net 444.96 Mbps 594.47 Mbps 37.92 ms
Los Angeles, US 452.46 Mbps 597.77 Mbps 11.79 ms
Dallas, US 486.78 Mbps 427.94 Mbps 39.87 ms
Montreal, CA 443.80 Mbps 487.58 Mbps 66.85 ms
Paris, FR 412.13 Mbps 750.76 Mbps 148.18 ms
Amsterdam, NL 417.30 Mbps 458.14 Mbps 145.63 ms
运行上面的命令,测试服务器的上传和下载速率,等会要填入配置。我服务器的上传大概400Mbps,下载450Mbps。
安装
使用sing-box
来运行hysteria协议,我使用sing-box的docker来运行,可以使用二进制。
1. 拉取镜像
docker pull ghcr.io/sagernet/sing-box:latest
2. 编辑hysteria服务端配置文件
生成bing.com
自签名证书
openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) -keyout sing-box/server.key -out sing-box/server.crt -subj "/CN=bing.com" -days 36500
#&& sudo chown hysteria sing-box/server.key && sudo chown hysteria sing-box/server.crt
# 某些脚本需要运行上面的命令
我使用的是bing.com自签名证书
vim sing-box/hysteria2.json
{
"inbounds": [
{
"type": "hysteria2",
"listen": "::",
"listen_port": 8080,
"up_mbps": 450,
"down_mbps": 450,
"users": [
{
"name": "sekai",
"password": "123456"
}
],
"tls": {
"enabled": true,
"server_name": "bing.com",
"key_path": "/etc/sing-box/server.key",
"certificate_path": "/etc/sing-box/server.crt"
}
}
]
}
3. 启动容器
docker run -d --name hysteria2 -p 30100:8080/udp --restart unless-stopped -v /root/sing-box:/etc/sing-box ghcr.io/sagernet/sing-box:latest run -c /etc/sing-box/hysteria2.json
客户端配置
windows GUI
我用的是windows GUI客户端,nekobox,手动输入选择hysteria2
协议,输入ip地址、端口号和密码,sni处输入配置里server_name
的域名, 我是用的是bing.com
,因为是自签名证书,勾选不检查服务器证书。
上传速度和下载速度设置,以客户端
实际的速度为准。
sing-box
{
"outbounds": [
{
"type": "hysteria2",
"server": "127.0.0.1",
"server_port": 8080,
"up_mbps": 100,
"down_mbps": 100,
"password": "<password>",
"tls": {
"enabled": true,
"server_name": "example.org",
"insecure": true
}
}
]
}
在outbounds加入这项即可,具体细节按照服务端配置即可。
疑难杂症
android客户端无法访问google.com
将IPv6路由
关闭
后查询hysteria2文档得知,可能是由于访问google.com的ipv6地址时,走的是http/3协议,该协议会 导致一些问题,所以需要将udp/443端口屏蔽。一般在tun
模式下才会出现(手机vpn模式也是tun)
可以在 https://http3check.net/ 查询网站是否支持http/3,advanced可以看到ip地址和端口号
nekobox客户端 在
路由
处添加一条规则,port选择443,network选择udpPC客户端nekoBox 左上角 程序-> 首选项-> 路由设置-> 自定义路由(在下面),将下面的配置粘贴进去:
{ "rules": [ { "network": "udp", "outbound": "block", "port": [ 443 ] } ] }
sing-box cli 在路由处加入上面的配置即可