跳转至内容
YMDR
Go back

Hysteria2搭建教程

Updated:

目录

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 填写你的域名。

电脑v2rayN客户端配置
电脑 v2rayN 客户端配置

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官网或自行搜索学习。

脚本常用命令合集

功能命令
启动Hysteria2systemctl start hysteria-server.service
重启Hysteria2systemctl restart hysteria-server.service
查看Hysteria2状态systemctl status hysteria-server.service
停止Hysteria2systemctl stop hysteria-server.service
设置Hysteria2开机自启systemctl enable hysteria-server.service
查看Hysteria2日志journalctl -u hysteria-server.service

Share this post on:

Previous Post
酒馆云端部署
Next Post
Cloudflare Tunnel客户端部署