目录
Open 目录
Hysteria2 通过魔改的 QUIC 协议,可以极大地改善网络不稳定和掉包的情况。但流量大时易被误认为 DDoS 攻击从而遭到拦截。此协议对部分移动用户而言体验不佳。适合对丢包要求不高的场景,比如游戏加速。
1.准备
首先,你需要拥有一台 vps,并确保防火墙已设置妥当(能正常访问互联网,并开启 80、443、ssh 端口和节点端口)。
2.服务端搭建
(1)安装脚本
通过 ssh 连接到 vps ,输入下面的指令并运行(建议以 root 身份运行,可以用sudo -i来切换到 root),安装 Hysteria2 bash 脚本。
脚本常用命令我会放在文章末尾。
bash <(curl -fsSL https://get.hy2.sh/)
如果显示curl not found,请先安装 curl,通常安装命令为apt-get install curl。如果上面的 sudo 命令有同样的问题,将 curl 替换为 sudo 即可。
(2)设置Hysteria2为开机自启
systemctl enable hysteria-server.service
(3)修改服务端配置文件
这一步建议先复制到记事本,修改完成后再复制到 vps 上运行。需要修改的地方已经标注。
cat << EOF > /etc/hysteria/config.yaml
listen: :28349 #监听端口
# 使用自签证书
tls:
cert: /etc/hysteria/server.crt
key: /etc/hysteria/server.key
# 使用CA证书
#acme:
# domains:
# - a.example.com
# email: test@sharklasers.com
auth:
type: password
password: d78Sj9y
masquerade:
type: proxy
proxy:
url: https://bing.com #伪装网址
rewriteHost: true
EOF
上面配置文件中的监听端口,邮箱,认证密码和伪装网址可以根据你的需要随意更改。
对于证书,这里有两种方式,一种是使用 CA 证书,另一种是使用自签证书。需要从中选择一种,将另外一种注释掉或者直接删除。
使用 CA 证书需要确保你的域名已经解析到 vps 的 IP 地址,另外 使用 CA 证书有可能会因为证书颁发机构的原因导致被限流! 不过概率不大。对于没有域名的人或者小白来说,使用自签证书更加方便。
使用自签证书则需要运行以下代码来生成自签证书。
openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) -keyout /etc/hysteria/server.key -out /etc/hysteria/server.crt -subj "/CN=bing.com" -days 36500 && sudo chown hysteria /etc/hysteria/server.key && sudo chown hysteria /etc/hysteria/server.crt
更改完成后复制到 vps 上运行即可。其中有些数据后续还会用到,最好不要删除。万一删除了也可以到/etc/hysteria/config.yaml查看。
(4)启动Hysteria2
systemctl start hysteria-server.service
查看 Hysteria2 运行状态。
systemctl status hysteria-server.service
如果显示:{"error": "invalid config: tls: open /etc/hysteria/server.crt: permission denied"}或者failed to load server conf的错误,则说明 Hysteria 没有访问证书文件的权限,需要执行下面的命令将 Hysteria 切换到 root 用户运行。
sed -i '/User=/d' /etc/systemd/system/hysteria-server.service sed -i '/User=/d' /etc/systemd/system/hysteria-server@.service systemctl daemon-reload systemctl restart hysteria-server.service
再次查看 Hysteria2 状态,显示 active,表示已经成功启动,但并不一定可以使用了。
查看最下面的日志,如果还没有显示serve up and running,可能是因为在申请证书,大家需要等待一下;如果成功显示,则表示服务端已配置完成。
如果等待一段时间后,出现了错误提示,并且再次查看状态显示 hy2 已经退出,这种情况大概率是因为申请证书需要用到 tcp 的 80 和 443 端口,而 vps 的防火墙没有开放端口导致的。
如果你的服务器没有什么敏感服务,可以直接关闭防火墙,或者自行搜索怎么放行指定端口。
此时需要重新执行 restart 指令启动服务,可以看到最后一条日志是server up and running,这样就成功运行了。
3.客户端配置
电脑端推荐使用 V2rayN,安卓推荐使用 NekoBox(目前已停更)、v2rayNG 和 sing-box,iOS可使用 sing-box。
电脑端参考以下进行设置,使用 CA 证书的,SNI 填写你的域名。
NekoBox(目前已停更)、v2rayNG 配置与电脑端类似,不过多赘述。sing-box 需要修改配置文件并导入 app 使用,参考配置文件如下,可参考sing-box官网进行个性化修改。
{
"dns": {
"servers": [
{
"tag": "cf",
"address": "https://1.1.1.1/dns-query"
},
{
"tag": "local",
"address": "223.5.5.5",
"detour": "direct"
},
{
"tag": "block",
"address": "rcode://success"
}
],
"rules": [
{
"geosite": "category-ads-all",
"server": "block",
"disable_cache": true
},
{
"outbound": "any",
"server": "local"
},
{
"geosite": "cn",
"server": "local"
}
],
"strategy": "ipv4_only"
},
"inbounds": [
{
"type": "tun",
"inet4_address": "172.19.0.1/30",
"auto_route": true,
"strict_route": false,
"sniff": true
}
],
"outbounds": [
{
"type": "hysteria2",
"tag": "proxy",
"server": "ip",
"server_port": 443,
"up_mbps": 20,
"down_mbps": 100,
"password": "123456",
"tls": {
"enabled": true,
"server_name": "a.com",
"insecure": false
}
},
{
"type": "direct",
"tag": "direct"
},
{
"type": "block",
"tag": "block"
},
{
"type": "dns",
"tag": "dns-out"
}
],
"route": {
"rules": [
{
"protocol": "dns",
"outbound": "dns-out"
},
{
"geosite": "cn",
"geoip": [
"private",
"cn"
],
"outbound": "direct"
},
{
"geosite": "category-ads-all",
"outbound": "block"
}
],
"auto_detect_interface": true
}
}config.json
更多详细配置和参数设置可参考Hysteria2官网或自行搜索学习。
脚本常用命令合集
| 功能 | 命令 |
|---|---|
| 启动Hysteria2 | systemctl start hysteria-server.service |
| 重启Hysteria2 | systemctl restart hysteria-server.service |
| 查看Hysteria2状态 | systemctl status hysteria-server.service |
| 停止Hysteria2 | systemctl stop hysteria-server.service |
| 设置Hysteria2开机自启 | systemctl enable hysteria-server.service |
| 查看Hysteria2日志 | journalctl -u hysteria-server.service |