1 前提
最近新上一套服务,部署在DMZ区和内网区,使用的端口有很多,其中包括2000端口,并且使用F5设备承担应用的负载均衡功能
2 现象描述
DMZ服务器可以telnet通内网的F5设备的负载端口,并且F5把请求已经转发到了内网的服务器上(在内网主机上可以看到F5的连接),但是发送HTTP的GET请求,会超时。
3 分析
由于DMZ与内网互联经过了Cisco的防火墙和F5设备,排查难度较大,分析步骤如下:
- F5设备转发了TCP的请求,因为TCP连接的确建立了。
- F5设备的某些网络策略限制了HTTP协议,所以没有转发HTTP请求。
- Cisco防火墙转发了TCP的请求,因为TCP连接会经过防火墙。
- Cisco防火墙阻断了HTTP协议,所以应用数据包没有到达F5设备。
- 应用服务器没有把包发向正确的网关
4 见了鬼了
通过抓包分析,确定F5设备策略没有问题,应用服务器路由也正确,故障点可能出现在Cisco防火墙上,经过抓包分析策略梳理,确定也没有策略阻止HTTP数据包。
5 处理
本着设备不会骗人的这句话,想了很久,联想到Linux上某些端口是固定给某些服务使用的,比如ssh 22,ftp 20/21,等,Cisco防火墙会不会也有自己特定的服务?通过百度搜索相关资料,发现原来2000端口被用于思科的SCCP()。如果一个支持SCCP的思科网络访问端口2000的服务,会有如下提示
Firewalls tend to treat port 2000 as a special port and do some funny thing with the data.
由于我们发送的非SCCP协议接受的数据包,所以被直接丢弃。
解决的办法固然有两种
-
关闭SCCP功能
-
更换服务器的端口
处于长远考虑,我们选择更换了服务端口。
6 总结
由于对设备的特性不是太了解,所以浪费了很多时间,但是好在解决问题了。 哈哈