本文描述了网络连接异常的问题分析及解决方案。问题包括域名解析耗时大、服务器返回HTTP 400和416错误、DNS解析延迟严重、TCP包分块传输频繁、数据帧延迟高等。原因是WAF防火墙处理不当、DNS解析延迟、MTU设置不合理及设备老化。建议关闭WAF缓存、更换DNS服务器、检查MTU设置、重启路由器并优化内部网络结构。
【Question】系统检测到您的网络连接或服务器响应异常
【Analysis】
1.打开cmd输入nslookup 域名,发现域名解析有3个IPV4,2个IPV6,客户做了两地三中心的异地灾备,用的是电信云数据中心架构,查询IPV4地址发现一个节点在浙江嘉兴,两个节点是在福建福州。
2.追踪TCP流发现服务器是WAF,请求Bad Request 400,被WAF云防火墙给拦截了部分数据,类似于nginx反向代理的部署架构,业务操作报错HTTP416是(请求范围不符合要求) 如果请求是针对网页的无效范围进行的,那么,服务器会返回此状态代码。
3.过滤可以看到时间戳耗时964ms,进一步证实了http返回报文被清空,提示头部有非法字符。
4.进一步发现DNS解析耗时大,检查下DNS解析是否延迟。
5.发现TCP包分块传输比较频繁,检查下新华三路由器的MTU是否=1500,对应参数可能设置不合理;
6.一层数据帧延迟搞大1040秒,一般跟设备老化,数据转发性能存在瓶颈有关系,可以去机房检查下设备硬件状,跟内部网络架构有关系,
6.域名解析成115.231IP时出现TCP ZeroWindow,延迟太大,一般是内部网络问题。
【Solution】
发现http返回报文被Truncated清空,跟WAF防火墙反向代理有关系,WAF处理chunked传输中会将返回 json接收到的数据可能会少一截,造成丢包,WAF配置可以参考Nginx配置,可以在配置中将缓存关闭,添加一条proxy_buffering off;
发现运营商DNS解析延迟已经高达1007秒,建议将DNS可以改成国内的Public DNS,114.114.114.114,119.29.29.29,然后再刷新下DNS,一般建议内部自建DNS服务器,防止DNS被劫持;
检查下外网设备新华三路由器上的MTU最大传输单元是否=1500;
新华三上的数据帧高达1040秒,一般跟设备老化,数据转发性能存在瓶颈有关系,临时解决方法可以在允许时间重启下路由器,一般支持自检下,去机房下检查下硬件是否有问题,
[TCP ZeroWindow]作为接收方发出现的标志,表示接收缓冲区已经满了,此时发送方不能再发送数据,一般会做流控调整,看出客户内部网络是傻瓜式交换机(HUB)数据转发性能较差,不是那种网管式交换机,压力都集中到出口H3C路由器上,内网还是要遵循接入-汇聚-核心,至少是大二层(三层)网络拓扑结构。
推荐阅读