apernet / hysteria

Hysteria is a powerful, lightning fast and censorship resistant proxy.
https://v2.hysteria.network/
MIT License
14.48k stars 1.62k forks source link

配置都正常但是还是连接不了 failed to initialize client (connect error: timeout: no recent network activity) #929

Closed ZHAN2006 closed 7 months ago

ZHAN2006 commented 7 months ago

描述问题 服务端和客户端都能正常启动但就是访问不了 以前能用,但是上个月服务器没流量断网几天后重启这个月恢复就用不了了

日志 客户端 2024-02-01T20:20:00+08:00 INFO client mode 2024-02-01T20:20:00+08:00 INFO use this URI to share your server {"uri": "hysteria2://111111aA@...:8044/?insecure=1"} 2024-02-01T20:20:00+08:00 INFO HTTP proxy server listening {"addr": "127.0.0.1:1081"} 2024-02-01T20:20:00+08:00 INFO SOCKS5 server listening {"addr": "127.0.0.1:1082"} 2024-02-01T20:20:10+08:00 ERROR HTTP CONNECT error {"addr": "127.0.0.1:52055", "reqAddr": "bing.com:443", "error": "connect error: timeout: no recent network activity"}

服务器端 2024-02-01T20:15:36+08:00 INFO server mode 2024-02-01T20:15:36+08:00 INFO server up and running {"listen": "0.0.0.0:8044"}

配置

客户端

server: ...:8044

auth: 111111aA lazy: true

socks5: listen: 127.0.0.1:1082

http: listen: 127.0.0.1:1081

tls: insecure: true ca: ...(ssl).crt

服务器端

listen: 0.0.0.0:8044

tls: cert: ...(ssl).crt key: ...(ssl).key insecure: true auth: type: password password: 111111aA masquerade: type: proxy proxy: url: https://zhansmpc.cn/ rewriteHost: true bandwidth: up: 512 mb down: 512 mb ignoreClientBandwidth: false

设备和操作系统 系统 CentOS Linux 7 内核 CentOS Linux (6.6.2-1.el7.elrepo.x86_64) 7 (Core)

额外信息 服务器抓包的 ... 是客户端 zhansmpc.cn.8044是服务端 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 20:24:35.390883 IP (tos 0x28, ttl 113, id 51789, offset 0, flags [DF], proto UDP (17), length 1280) ....olsv > zhansmpc.cn.8044: UDP, length 1252 20:24:35.482114 IP (tos 0x28, ttl 113, id 51790, offset 0, flags [DF], proto UDP (17), length 1280) ....olsv > zhansmpc.cn.8044: UDP, length 1252 20:24:35.482328 IP (tos 0x28, ttl 113, id 51791, offset 0, flags [DF], proto UDP (17), length 1280) ....olsv > zhansmpc.cn.8044: UDP, length 1252 20:24:36.288692 IP (tos 0x28, ttl 113, id 51800, offset 0, flags [DF], proto UDP (17), length 1280) ....olsv > zhansmpc.cn.8044: UDP, length 1252 20:24:36.288847 IP (tos 0x28, ttl 113, id 51801, offset 0, flags [DF], proto UDP (17), length 1280) ....olsv > zhansmpc.cn.8044: UDP, length 1252 20:24:37.903046 IP (tos 0x28, ttl 113, id 51823, offset 0, flags [DF], proto UDP (17), length 1280) ....olsv > zhansmpc.cn.8044: UDP, length 1252 20:24:37.903117 IP (tos 0x28, ttl 113, id 51824, offset 0, flags [DF], proto UDP (17), length 1280) ....olsv > zhansmpc.cn.8044: UDP, length 1252

WoaShieShei commented 7 months ago

https://v2.hysteria.network/zh/docs/advanced/Troubleshooting/ Probably: https://github.com/apernet/hysteria/issues/810#issuecomment-1807690164

ZHAN2006 commented 7 months ago

我的内核是更新了的内核 CentOS Linux (6.6.2-1.el7.elrepo.x86_64) 7 (Core),但是上个月服务器没流量断网几天后重启这个月恢复之后就用不了了

ZHAN2006 commented 7 months ago

我的内核是更新了的内核 CentOS Linux (6.6.2-1.el7.elrepo.x86_64) 7 (Core),但是上个月服务器没流量断网几天后重启这个月恢复之后就用不了了

上个月服务期正常的时候是能用的是可以正常使用的

WoaShieShei commented 7 months ago

https://1.1.1.1/ 能进去吗

ZHAN2006 commented 7 months ago

https://1.1.1.1/ 能进去吗

服务器还是本地访问?

本地无法访问 服务器可以访问

WoaShieShei commented 7 months ago

本地不挂代理,直接使用浏览器访问服务端的这个端口[https://服务端ip:8044],忽略证书错误后,查看能不能显示反代的页面 另外可以尝试起一个正常的nginx看看是不是被墙端口了,大流量过墙可能会导致这种情况。

ZHAN2006 commented 7 months ago

访问不了

ZHAN2006 commented 7 months ago

软件不行 用其它反代的可以

ZHAN2006 commented 7 months ago

我尝试更换端口也不行

WoaShieShei commented 7 months ago

@ZHAN2006 先根据这个issue确定一下udp能不能通 另外看一下监听的端口 https://github.com/apernet/hysteria/issues/747#issuecomment-1762000208 还有就是HTTP/3 QUIC 是否被阻断等问题(可以用nginx测试),假设配置和hysteria软件版本都没有变更 那么首先需要排除链路上是否存在问题

ZHAN2006 commented 7 months ago

udp HTTP/3 QUIC 都能连通

WoaShieShei commented 7 months ago

HYSTERIA_LOG_LEVEL=debug /usr/local/bin/hysteria server --config /etc/hysteria/config.yaml 根据实际所在目录进行修改,随后客户端配置中把lazy去掉,观察服务端的日志行为

ZHAN2006 commented 7 months ago

服务端 2024-02-01T23:19:36+08:00 INFO server mode 2024-02-01T23:19:36+08:00 INFO server up and running {"listen": "0.0.0.0:8044"} 2024-02-01T23:19:36+08:00 DEBUG checking for updates {"version": "v2.2.4", "platform": "linux", "arch": "amd64", "channel": "release"} 2024-02-01T23:19:36+08:00 DEBUG no update available

客户端 2024-02-01T23:20:45+08:00 INFO client mode 2024-02-01T23:20:50+08:00 FATAL failed to initialize client {"error": "connect error: timeout: no recent network activity"}

ZHAN2006 commented 7 months ago

[root@vps ~]# tcpdump -i eth0 port 8044 -v tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 23:20:47.332404 IP (tos 0x28, ttl 113, id 4065, offset 0, flags [DF], proto UDP (17), length 1280)

*.*.*.*.mpc-lifenet > zhansmpc.cn.8044: UDP, length 1252

23:20:47.536066 IP (tos 0x28, ttl 113, id 4066, offset 0, flags [DF], proto UDP (17), length 1280) ....mpc-lifenet > zhansmpc.cn.8044: UDP, length 1252 23:20:47.536397 IP (tos 0x28, ttl 113, id 4067, offset 0, flags [DF], proto UDP (17), length 1280) ....mpc-lifenet > zhansmpc.cn.8044: UDP, length 1252 23:20:47.937836 IP (tos 0x28, ttl 113, id 4071, offset 0, flags [DF], proto UDP (17), length 1280) ....mpc-lifenet > zhansmpc.cn.8044: UDP, length 1252 23:20:47.938295 IP (tos 0x28, ttl 113, id 4072, offset 0, flags [DF], proto UDP (17), length 1280) ....mpc-lifenet > zhansmpc.cn.8044: UDP, length 1252 23:20:48.751731 IP (tos 0x28, ttl 113, id 4074, offset 0, flags [DF], proto UDP (17), length 1280) ....mpc-lifenet > zhansmpc.cn.8044: UDP, length 1252 23:20:48.751793 IP (tos 0x28, ttl 113, id 4075, offset 0, flags [DF], proto UDP (17), length 1280) ....mpc-lifenet > zhansmpc.cn.8044: UDP, length 1252 23:20:50.354603 IP (tos 0x28, ttl 113, id 4079, offset 0, flags [DF], proto UDP (17), length 1280) ....mpc-lifenet > zhansmpc.cn.8044: UDP, length 1252 23:20:50.355314 IP (tos 0x28, ttl 113, id 4080, offset 0, flags [DF], proto UDP (17), length 1280) ....mpc-lifenet > zhansmpc.cn.8044: UDP, length 1252

通过抓包,服务器接收到了客户端的udp数据包但是服务端没有反应

WoaShieShei commented 7 months ago

把客户端的配置丢服务端上,然后在服务端上开客户端连接,看下行不行,rhel9目前暂时没法复现,明天开台Centos7试试 不知道是不是和 https://github.com/apernet/hysteria/issues/925 一样的问题,这个issue提出者还没回复 顺便问一下用的证书是自签的吗,还是克隆的,亦或是自有域名的 自签的话可以提供一下参数吗

ZHAN2006 commented 7 months ago

服务端 2024-02-02T00:14:46+08:00 INFO server mode2024-02-02T00:14:46+08:00 INFO server up and running {"listen": "0.0.0.0:8044"} 2024-02-02T00:14:46+08:00 DEBUG checking for updates {"version": "v2.2.4", "platform": "linux", "arch": "amd64", "channel": "release"} 2024-02-02T00:14:46+08:00 DEBUG no update available

客户端 2024-02-02T00:18:40+08:00 INFO client mode 2024-02-02T00:18:40+08:00 FATAL failed to initialize client {"error": "connect error: INTERNAL_ERROR (local): write udp [::]:30561->127.0.0.1:8044: sendmsg: invalid argument"}

证书使用的是https://zerossl.com/ 的ip证书

WoaShieShei commented 7 months ago

@ZHAN2006 HYSTERIA_LOG_LEVEL=debug QUIC_GO_DISABLE_ECN=true QUIC_GO_LOG_LEVEL=DEBUG /usr/local/bin/hysteria server --config /etc/hysteria/config.yaml 抱歉再打扰你一下,如果现在方便的话可以用这个命令再开一次服务端,还是一样客户端和服务端放同一物理机上 观察一下输出吗

我这里已经成功复现了 客户端为 Windows 内网环境 看起来问题和 quic-go 有关 服务端日志:

server GSO failed when sending to xxxx:52832
server Destroying connection with error: write udp [::]:443->xxxxx:52832: sendmsg: invalid argument

添加 QUIC_GO_DISABLE_ECN=true 环境变量后问题解决 这个环境变量好像是关闭 ECN 的,如果你不知道这是什么请不要在实际使用中添加,仅用于测试

WoaShieShei commented 7 months ago

@ZHAN2006 根据这个 issue https://github.com/quic-go/quic-go/issues/3911 添加 QUIC_GO_DISABLE_ECN=true 环境变量后即可恢复正常 @tobyxdd 可以看一下吗

WoaShieShei commented 7 months ago

另外再次使用 uname -a 确认一下内核版本号,确定当前引导的内核版本 下述版本内核均可复现该问题

添加 QUIC_GO_DISABLE_ECN=true 问题解决 升级内核至 _6.7.3-1.el7.elrepo.x8664 后 无需添加上述参数也可使用,我认为很可能你 grub 的引导顺序发生了变化 (或者 GRUB_DEFAULT 没有设置正确) 用这个看一下 awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg

ZHAN2006 commented 7 months ago

成功解决,非常感谢

当前系统内核 Linux vps 3.10.0-1160.102.1.el7.x86_64 #1 SMP Tue Oct 17 15:42:21 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

0 : CentOS Linux (6.6.2-1.el7.elrepo.x86_64) 7 (Core) 1 : CentOS Linux (3.10.0-1160.102.1.el7.x86_64) 7 (Core) 2 : CentOS Linux (3.10.0-1160.42.2.el7.x86_64) 7 (Core) 3 : CentOS Linux (0-rescue-114054dc5a87478f99adbbed6027eea0) 7 (Core)

之前升级系统内核之后没有重启,可能是我设置 grub 的引导顺序有问题,这次务器没流量断网几天后我意外重启服务器才发现问题,非常感谢

ZHAN2006 commented 7 months ago

成功解决,非常感谢

当前系统内核 Linux vps 3.10.0-1160.102.1.el7.x86_64 #1 SMP 2023 年 10 月 17 日星期二 15:42:21 UTC x86_64 x86_64 x86_64 GNU/Linux

0:CentOS Linux (6.6.2-1.el7.elrepo.x86_64) 7(核心)1 : CentOS Linux (3.10.0-1160.102.1.el7.x86_64) 7 (核心)2:CentOS Linux (3.10.0-1160.42.2.el7.x86_64) 7 (核心)3:CentOS Linux(0-rescue-114054dc5a87478f99adbbed6027eea0)7(核心)

之前升级系统内核之后没有重启,可能是我设置 grub 的引导顺序有问题,这次务器没流量断网几天后我意外重启服务器才发现问题,非常感谢

我发现感情是服务器商家官方的重启系统会重启到原本的内核,要在服务器用命令重启系统才会重启到自己设定的内核,无语了

tobyxdd commented 7 months ago

@ZHAN2006 根据这个 issue https://github.com/quic-go/quic-go/issues/3911 添加 QUIC_GO_DISABLE_ECN=true 环境变量后即可恢复正常 @tobyxdd 可以看一下吗

https://github.com/quic-go/quic-go/issues/4178

WoaShieShei commented 7 months ago

~抱歉我搞错了, 无视这个评论~