Closed right0808 closed 5 months ago
因为 ACME 吧
但是,我使用的是自己的证书,不是让它去申请哦
试了下启动挺快的, 能否提供一下你那边的服务端配置以及执行你提供的那条命令的输出, 我们复现一下问题
root@apernet-hk3:/etc/hysteria # date --rfc-3339=ns; hysteria server -c config.yaml
2024-04-19 23:48:25.480813223+08:00
2024-04-19T23:48:25+08:00 INFO server mode
2024-04-19T23:48:25+08:00 INFO traffic stats server up and running {"listen": "127.0.0.1:9999"}
2024-04-19T23:48:25+08:00 INFO server up and running {"listen": ":11443"}
一直以来也被这个问题困扰,表现为:每次解锁手机(锁屏时间大概超过5分钟),都需要等待5秒左右,才能建立起 hysteria2 代理连接,否则访问墙外服务都报错。一旦建立起连接,例如持续看 YouTube 视频,很少出现连接中断的情况。
这个故障导致 Gmail 等无法锁屏接收邮件通知。
Android 13,PixelExperience 系统,使用 Clash Meta for Android 客服端,客户端电源管理设置为无限制,开启自启动。
切换到其它代理协议(如 VMess、VLESS、Trojan 等)则恢复正常。
服务端配置如下:
cat << EOF > /etc/hysteria/config.yaml
listen: :443 # 监听端口
# 使用自签证书
tls:
cert: /etc/hysteria/server.crt
key: /etc/hysteria/server.key
auth:
type: password
password: password # 设置认证密码
masquerade:
type: proxy
proxy:
url: https://bing.com # 伪装网址
rewriteHost: true
EOF
是的,启动是很快的。但是初次建立连接慢。一旦能建立连接后就没有问题了。 怀疑是代码在已经默认有证书的情况下,还去申请了证书,或者已有geo文件,还去下载geo配置。
命令行: /usr/local/bin/hysteria-linux-amd64-avx server --config /etc/hysteria/config.yaml --disable-update-check --log-level=error
配置如下: ccc@s3:/etc/hysteria$ cat config.yaml listen: :5000
tls: cert: /usr/local/ssl/XXX/fullchain.cer key: /usr/local/ssl/XXX/_.XXX.xyz.key
auth: type: password password: XXXXXXX
masquerade: type: string proxy: url: https://news.ycombinator.com/ rewriteHost: true string: content: forbid headers: content-type: text/plain custom-stuff: statusCode: 500
outbounds:
acl: file: /etc/hysteria/server.acl geoip: /etc/hysteria/geoip.dat geosite: /etc/hysteria/geosite.dat geoUpdateInterval: 0
quic: initStreamReceiveWindow: 8388608 maxStreamReceiveWindow: 8388608 initConnReceiveWindow: 20971520 maxConnReceiveWindow: 20971520 maxIdleTimeout: 30s maxIncomingStreams: 1024 disablePathMTUDiscovery: false
ignoreClientBandwidth: false
disableUDP: false
udpIdleTimeout: 60s
@haruue cat server.acl reject(geoip:cn) direct(all)
是的,启动是很快的。但是初次建立连接慢。一旦能建立连接后就没有问题了。
我这边确认一下你遇到的是不是下面这种情况
@haruue 是的。就是这样情况。 换debian,或者 redhat系,都一样,和OS 没有关系。
那么这个问题是已知的, 和上面 @TrayBer 提到的属于同一个问题。 真正的原因是 QUIC 不会像 TCP 协议那样, 对状态无效的连接回应 RST 强制客户端重新连接。 因此客户端只能等待超时重试, 或者手动重启客户端来触发立即重连。 对于客户端程序被暂停(例如系统休眠)导致的问题, 或许可以通过在客户端里添加某些机制来解决。 对于服务端程序被重启的情况则复杂不少, 我们并没有找到一个非常可靠的机制去解决它。
想顺便请教一个问题,Android 系统代理客户端在电源管理是无限制设置,代理连接会一直保持吗?还是说手机锁屏即中断代理连接是 hysteria 协议才有的?
那么这个问题是已知的, 和上面 @TrayBer 提到的属于同一个问题。 真正的原因是 QUIC 不会像 TCP 协议那样, 对状态无效的连接回应 RST 强制客户端重新连接。 因此客户端只能等待超时重试, 或者手动重启客户端来触发立即重连。 对于客户端程序被暂停(例如系统休眠)导致的问题, 或许可以通过在客户端里添加某些机制来解决。 对于服务端程序被重启的情况则复杂不少, 我们并没有找到一个非常可靠的机制去解决它。
好的,谢谢。了解了。 这种问题影响不大。服务也不是需要经常重启的。
为什么启动和重启都很慢呢,都需要等待几秒才有效? 而且,我是配置了:--disable-update-check,这个选项的,难道还需要添加其他的参数,才能快速有效? 或者说,下面的这种配置方法不可以? /usr/local/bin/hysteria-linux-amd64-avx server --config /etc/hysteria/config.yaml --disable-update-check --log-level=error