故障现象
用户反馈客户端连接服务器使用s3上传文件,http采用get、post方式上传正常,但是使用put方式被服务器reset端口断开连接,业务异常告警。
故障分析
客户端抓包,可以看到,PUT方法请求后,收到了服务器的RST断开连接响应。这里出现了异常,可以看到服务器在三次握手阶段,TTL是54,但是发起RST的报文,服务器TTL变成了120。
服务器抓包,可以看到三次握手成功建立后,服务器收到了客户端发送的RST报文。客户端的TTL也从52变成了127。
对比客户端和服务器的抓包,可以发现,RST报文都不是对方发出的,但是双方又收到了RST的报文,很明显是传输网络中间有设备同时向客户端和服务器发起了该RST报文断开连接(同时TTL的变化也佐证了这一点)。
按照以往经验,可能是这中间有WAF设备拦截了请求。
知识补充:TTL(time to live):即生存时间,该字段表示一个IP数据报能够经过的最大的路由器跳数,TTL字段是由IP数据报发送端初始设置的,每个处理该数据报的路由器都需要将其 TTL值减1。正常来说,会话双方的传输路径是基本稳定的,TTL不会出现大的变化。
故障处理
联系了网络运维人员,机房有防火墙WAF设备,启用了安全默认策略,拦截了put、delete等高危的http方法,要求其启用白名单策略后,故障恢复。