1

图片描述

搜索了一大圈没找到到答案,最终通过重启ss所在的服务器解决。过程如下

在服务器查看ss服务的端口的使用情况,
发现大量tcp半连接状态(SYN_RECV),因为刚刚尝试连接网络失败
图片描述
百度得出两种可能:

1、一种是客户端没有收到服务器发送的[SYN,ACK]包

尝试ping客户端ip,成功,排除这种可能

2、另一种可能是对方收到了[SYN,ACK]包却没有ACK,

这种情况又分为两种可能
1.一种是对方根本就不打算ACK,一般在对方程序有意为之才会出现,如SYN Flood类型的DOS/DDOS攻击;(排除)
2.一种可能是对方收到的[SYN,ACK]包不合法,常见的是SYN包的目的地址(服务地址)和应答[SYN,ACK]包的源地址不同。这种情况在只配置了DNAT而不进行SNAT的服务网络环境下容易出现,主要是由于inbound(SYN包)和outbound([SYN,ACK]包)的包穿越了不同的网关/防火墙/负载均衡器,从而导致[SYN,ACK]路由到互联网的源地址(一般是防火墙的出口地址)与SYN包的目的地址(服务的虚拟IP)不同,这时客户机无法将SYN包和[SYN,ACK]包关联在一起,从而会认为已发出的SYN包还没有被应答,于是继续等待应答包。这样服务器端的连接一直保持在SYN_RCVD状态(半开连接)直到超时。
………………
超出现有知识能解决的范围,干脆重启ss服务所在服务器实例
启动ss服务,发现ip更换,重新配置ss客户端
连接google
bingo!连接成功


徐先森
5 声望0 粉丝