USG5310NAT后访问业务异常

发布时间:  2012-07-17 浏览次数:  117 下载次数:  0
问题描述
系统业务异常,客户端无法连接远程服务器
组网结构:
          trust            untrust
        client ------------ USG5310 -------- Internet ------- server
192.168.1.156    G0/0/2       G0/0/3                     218.94.92.150
故障现象:
USG5310上面做nat转换,client上安装了系统的客户端,是可以ping通服务器,也可以telnet服务器的7001端口,客户咨询过系统软件商,称只要连接上服务器7001端口就能访问服务器,但是客户端打不开(正常情况是打开客户端会弹出输入用户名和密码的提示框,不正常时点客户端的时候,不弹出输密码的提示框,卡住不动),将USG5310换成DLINK路由器,可以访问上报。
告警信息
处理过程

1.分析异常时客户端抓包,发现服务器回应的数据报文TCP校验和不对,导致被客户端TCP协议栈丢弃,进而引起业务异常。而使用DLINK路由器时,业务正常时抓包,发现服务器回应的数据报文TCP检验和是正确的。

2.客户端收到服务器的TCP校验和错误的数据报文,有可能是因为防火墙NAT转换时TCP校验和计算出错,也有可能是因为防火墙收到的服务器数据报文TCP检验和就已经出错。在防火墙内外网口同时镜像抓包,确认防火墙收到的服务器数据报文TCP校验和就已经出错

3、而为什么使用DLINK就没有问题,仔细对比DLINK内外网抓包和USG5310内外网抓包数据,发现报文NAT转换后,DLINK路由器源端口没有变化,仍为4位端口号,而USG5310源端口改变了,将4位端口转换为5位端口号。怀疑有可能是该差异导致服务器端或者中间网络设备计算TCP检验和出错。
4、对该客户端配置全局NAT Server进行测试,业务正常,服务器回应的数据报文TCP检验和正确。

5、为了进一步确认是源端口变化引起还是源端口为5位导致,使用小工具在一线电脑上测试,确认只要转换后的源端口大于61170,服务器回应的数据报文TCP校验和就是错误的,小于该值就正常,与NAT转换源端口变化无关。
6、现场通过在防火墙上配置nat port range 12288 61100命令,设置转换后的NAT端口范围解决。
 

根因
USG5310 NAT转换后的源端口只要大于61170,USG5310收到的服务器回应的数据报文TCP校验和计算错误,可能服务器计算TCP校验和出错,或者中间NAT设备计算TCP校验和出错,最终导致业务异常。
建议与总结
定位问题分析抓包数据时,需要关注TCP/UDP检验和等IP/TCP/UDP首部各个字段的正确性。

END