Hysteria代理的搭建部署

HyriKuma

参考:Hysteria2项目文档

1. 简介

Hysteria是一款基于修改版QUIC传输协议下的轻量级加密代理工具,相较于传统网站访问的HTTP以及shadowsocks、Vmess、Trojan等主要基于TCP的网络协议,基于QUIC的Hysteria拥有更快的传输速度。

graph LR;
    客户端1 <---> |50Mbps| 路由转发  
    客户端2 <---> |50Mbps| 路由转发
    客户端3 <---> |50Mbps| 路由转发
    路由转发 <---> |100Mbps| 服务端

如上图所示,当用户访问量过多导致超出网络带宽资源和路由处理的极限时,就会出现链路拥堵和数据丢包的情况。对于底层传输基于TCP可靠传输的网络协议,当出现网络拥堵丢包情况时,就会遵循传统的拥塞控制算法(如BBR),来主动降低传输速率,使得网速变慢。

BBR: 由 Google 为 TCP 开发,我们对其进行了修改以移植到 QUIC。BBR 是标准的拥塞控制算法,包括慢启动和基于 RTT 变化的带宽估算。BBR 能独立运行,不需要用户手动设置带宽。

而对于经过修改后的QUIC之上的Hysteria来讲,当同样出现高延迟高丢包的情况时,Hysteria所采用的Brutal拥塞控制算法并不会主动降低传输速率,而是始终按照用户所设定的固定速度进行全速发送,并根据数据的丢包率来进行速率补偿,从而令其在网络拥堵的情况依然能够保持稳定的网速。

Brutal: 这是 Hysteria 自有的拥塞控制算法。与 BBR 不同,Brutal 采用固定速率模型,丢包或 RTT 变化不会降低速度。相反,如果无法达到预定的目标速率,反而会根据计算的丢包率提高发送速率来进行补偿。Brutal 只在你知道(并正确设置了)当前网络的最大速度时才能正常运行。其擅长在拥塞的网络中抢占带宽,因此得名。

此外,Hysteria同样能进行TLS加密,将数据伪装成访问HTTP3服务器的QUIC流量。

2. 服务端的部署和配置

连接进入服务器,在sudo权限下执行

1
bash <(curl -fsSL https://get.hy2.sh/)

安装成功之后,进入到Hysteria的配置文件目录中,并创建config.yaml配置文件

1
cd /etc/hysteria/ && touch config.yaml

这里可以使用自签TLS证书的方式进行配置,首先生成自签证书

1
openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) -keyout /etc/hysteria/your_key.key -out /etc/hysteria/your_crt.crt -subj "/CN=your-site.com" -days 36500 && sudo chown hysteria /etc/hysteria/your_key.key && sudo chown hysteria /etc/hysteria/your_crt.crt

其中your_key.keyyour_crt.crt对应生成的私钥和证书,而your-site.com为指定域名。

接着修改配置文件config.yaml

1
nano config.yaml

将下面配置信息复制粘贴进去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
listen: :443 

tls:
cert: /etc/hysteria/your_crt.crt
key: /etc/hysteria/your_key.key

auth:
type: password
password: 123456 #自定义密码

masquerade:
type: proxy
proxy:
url: https://your-site.com/ #伪装网址
rewriteHost: true

这里默认指定的端口是443,密码和伪装网址可以自行修改,保存退出。

接下来将Hysteria服务设定为开机自启并启动

1
2
systemctl enbale hysteria-server.service
systemctl start(restart) hysteria-server.service

并查看服务状态

1
systemctl status hysteria-server.service

显示active(running)即为启动成功。

需要注意要将设定端口的防火墙和网络安全组放开。

3. 客户端的配置

首先创建一个config.yaml的配置文件,将下面内容复制粘贴进去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server: your_ip:443 #服务器ip加上对应端口
auth: 123456 #对应的服务端密码

bandwidth:
up: 20 mbps
down: 100 mbps

tls:
sni: https://your-site.com #伪装网址
insecure: true

socks5:
listen: 127.0.0.1:1080 #socks的本地监听端口,根据客户端工具修改
http:
listen: 127.0.0.1:8080 #http的本地监听端口,根据客户端工具修改

其中bandwidth下对应的上下行参数即为用户自行设定的固定传输速率,代表使用Hysteria的Brutal算法进行拥塞控制,这部分在服务端的配置文件中也可以设置,以两者之间的最小值为准。而如果希望使用BBR算法,可以将bandwidth这部分给删除。

以v2rayN为例,要添加Hysteria代理,首先选择服务器,点击添加自定义配置服务器

自定义代理名称,地址导入刚才的yaml配置文件,core类型选择hysteria,Socks端口需要与v2rayN客户端的相对应。保存退出。

到这里就算是搭建完成了,通过测速可以看到网速确实能跑到所设定的速率值,当然这也和本地网络的网速有关。

更进阶的配置可以参考Hysteria2的项目文档 来实现。

On this page
Hysteria代理的搭建部署