Skip to content

hysteria2在服务地址使用域名的时候,不同DNS厂商,不同的软件中效果不同 #1612

Description

@lseanxyz

我在给hysteria2配置域名的时候,出现了一个情况,使用由Cloudflare 代理DNS域名,不开橙云的情况下,hysteria2服务(是指在代理软件中会连接超时),很不稳定,在clash verge中有时候需要把服务地址先改成IP,然后再换成域名,才可以用,如果开启橙云会更难用(是否开启橙云可能没有影响,可能是我的错误),在v2rayN中也是如此(这两个软件如果服务地址使用IP地址都会变得特别稳定),小火箭没有这个现象。如果使用阿里云DNS的域名,不管是在clash verge还是v2rayN都非常稳定。我的部署背景:
是阿里云轻量国际服务器;
因为服务器配置了nginx,占用了ACME 自动申请证书的端口,域名证书使用certbot --nginx -d xxx域名申请;
bash <(curl -fsSL https://get.hy2.sh/)下载服务后,配置文件改成如下:

cat <<EOF > /etc/hysteria/config.yaml
listen: :443

tls:
  cert: /etc/letsencrypt/live/xxx域名/fullchain.pem
  key: /etc/letsencrypt/live/xxx域名/privkey.pem

auth:
  type: userpass
  userpass:
    xx: xxx

masquerade:
  type: proxy
  proxy:
    url: https://www.bing.com/
    rewrite: true
EOF

使用下面命令给h2服务读取证书分配权限:

apt install -y acl

setfacl -m u:hysteria:--x /etc/letsencrypt/live /etc/letsencrypt/archive
setfacl -m u:hysteria:rx /etc/letsencrypt/live/xxx域名
setfacl -m u:hysteria:rx /etc/letsencrypt/archive/xxx域名

setfacl -m u:hysteria:r "$(readlink -f /etc/letsencrypt/live/xxx域名/fullchain.pem)"
setfacl -m u:hysteria:r "$(readlink -f /etc/letsencrypt/live/xxx域名/privkey.pem)"

然后执行下面命令重载:

systemctl restart hysteria-server
systemctl status hysteria-server --no-pager

还为了保证证书续期成功后自动运行,给新的证书文件重新加 ACL 权限,让 hysteria 用户继续能读证书,顺便重启/重载 Hysteria2:

cat > /etc/letsencrypt/renewal-hooks/deploy/hysteria2-acl.sh <<'EOF'
#!/bin/sh
set -eu

DOMAIN=xxx域名

setfacl -m u:hysteria:--x /etc/letsencrypt/live /etc/letsencrypt/archive
setfacl -m u:hysteria:rx "/etc/letsencrypt/live/$DOMAIN"
setfacl -m u:hysteria:rx "/etc/letsencrypt/archive/$DOMAIN"

setfacl -m u:hysteria:r "$(readlink -f /etc/letsencrypt/live/$DOMAIN/fullchain.pem)"
setfacl -m u:hysteria:r "$(readlink -f /etc/letsencrypt/live/$DOMAIN/privkey.pem)"

systemctl try-reload-or-restart hysteria-server.service >/dev/null 2>&1 || true
EOF

chmod +x /etc/letsencrypt/renewal-hooks/deploy/hysteria2-acl.sh

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions