Hysteria 2 安装方法及完整配置文件详解

Hysteria 2 经过了全新的设计,无论是性能还是安全性都有了显著的提升。经过小编的试用,效果非常明显,如丝滑般的体验,推荐进行升级。不过需要注意,Hysteria 2 与 Hysteria 1 完全不兼容。

Hysteria 2

下面小编就来说说 Hysteria 2 服务端在 Linux 上的具体安装方法,本机未安装过 Hysteria 1 的朋友可直接从步骤二开始。

1. 删除原 Hysteria 目录相关文件

对于已经安装有 Hysteria 1 的朋友。 首先,请使用以下命令停止运行 Hysteria:

sudo systemctl stop hysteria-server 

然后删除原配置文件 config.json 以及 ACL 文件,如果有必要可以备份一下,待会在 Hysteria 2 配置文件中,有些配置项可以照抄(比如证书路径等)。

主配置及规则文件

在 Linux 各发行版中,这个目录通常在 /etc/hysteria

2. 安装 Hysteria

使用以下命令进行安装,可从常见的 Linux 发行版上自动下载最新版本的 Hysteria 并同步配置 systemd 服务:

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

3. 配置说明及完整配置文件

安装完成后,就可以在 /etc/hysteria 目录中找到服务端默认配置文件 config.yaml。注意,默认配置监听端口为 443,如果本机 443 端口已存在其它服务。请更换端口,比如 8443:

listen: :8443

默认配置文件直接使用的 ACME 作为证书配置,如果您已有 TLS 证书,可以直接把 ACME 配置修改如下(注意缩进):

tls:
  cert: /path/to/your/fullchain.pem
  key: /path/to/your/privkey.pem

注意,上面的路径需要替换为你的 TLS 证书路径,如果您在 Hysteria 1 中也使用了 TLS 证书,可以从备份文件中直接找到该路径直接替换。ACME 与 TLS 只能选择其一,不可并存。

QUIC配置:

quic:
  initStreamReceiveWindow: 8388608 
  maxStreamReceiveWindow: 8388608 
  initConnReceiveWindow: 20971520 
  maxConnReceiveWindow: 20971520 
  maxIdleTimeout: 30s 
  maxIncomingStreams: 1024 
  disablePathMTUDiscovery: false 

以上为默认配置的流和连接接收窗口大小分别为 8MB 和 20MB。除非你完全明白自己在做什么,否则不建议修改这些值。

小编建议使用默认配置即可,如果增大流和连接接收窗口,延迟会增加。根据小编测试结果,如果将流和连接接收窗口增加一倍,延迟约增加 25%

如果一定要改,建议保持流接收窗口与连接接收窗口的比例为 2:5。

更多配置详情,请参考这里

下面给出通用的完整配置文件:

listen: :8443

tls:
  cert: /path/to/your/fullchain.pem
  key: /path/to/your/privkey.pem

quic:
  initStreamReceiveWindow: 8388608
  maxStreamReceiveWindow: 8388608
  initConnReceiveWindow: 20971520
  maxConnReceiveWindow: 20971520
  maxIdleTimeout: 30s 
  maxIncomingStreams: 1024 
  disablePathMTUDiscovery: false 

bandwidth:
  up: 50 mbps
  down: 20 mbps

ignoreClientBandwidth: false

disableUDP: false

udpIdleTimeout: 60s

auth:
  type: password
  password: yourpassword

acl:
  file: /etc/hysteria/server.acl

resolver:
  type: tls
  udp:
    addr: 8.8.4.4:53 
    timeout: 4s
  tls:
    addr: 1.1.1.1:853 
    timeout: 10s
    sni: cloudflare-dns.com 
    insecure: false

outbounds:
  - name: v4_only
    type: direct
    direct:
      mode: 4
  - name: v6_only
    type: direct
    direct:
      mode: 6
  - name: my_proxy
    type: socks5
    socks5:
      addr: myproxy.com:1080

ACL 规格例子:

下面的 ACL 规则配置了针对 CN 的出站拒绝,针对 ai.com 的出站拒绝,针对 google.com 走 IPV6(本机需支持 IPV6 网络) 出站以及针对 openai.com 的出口走 my_proxy 代理(代理地址及端口请根据实际情况填写)

reject(geoip:cn)
reject(*.ai.com)
v6_only(*.google.com)
v6_only(*.instagram.com)
my_proxy(*.openai.com)
direct(all)

可根据您的具体使用场景进行配置,更多配置项请参考这里

另外,如果客户端支持,可配置端口跳跃。服务端请执行以下命令进行端口转发:

iptables -t nat -A PREROUTING -i enp0s3 -p udp --dport 20000:50000 -j DNAT --to-destination :8443

支持 IPV6 的机器可再执行:

ip6tables -t nat -A PREROUTING -i enp0s3 -p udp --dport 20000:50000 -j DNAT --to-destination :8443

同时,请确保 20000 - 50000 范围端口(UDP协议)没有被本机防火墙阻拦。这样,客户端所有发往 20000 - 50000 端口(需在客户端配置端口跳跃范围,或者指定范围内的端口)的请求将被转发到 8443 端口,可以规避针ISP对固定端口的限速。注意, -i 后的网络设备需根据您机器实际名称进行填写

可通过执行以下命令查看:

ifconfig

4. 运行 Hysteria 2

sudo systemctl start hysteria-server

最后,Hysteria 2 拥有自己的客户端,使用及下载可以看这里。第三方客户端支持列表可以看这里