由于ACL配置有问题导致访问网页慢

发布时间:  2014-09-20 浏览次数:  237 下载次数:  0
问题描述
组网结构:

业务简介:
USG作为内网连接公网的出口网关,内网用户通过USG上的nat outbound访问公网业务。USG上配置了严格的ACL包过滤,只允许内网用户访问部分IP地址的网站。

内网用户在访问某音乐网站时,访问速度很慢,要20多秒才能打开,但ping该域名包延时很小,并且没有丢包。
处理过程
访问网站很慢,可能是链路上存在丢包或者服务器本身访问慢。但ping该网站的域名延时很小,并且没有丢包,说明链路不存在问题。那是否是服务器本身提供的HTTP服务器反应慢。这个可以通过抓包查看是否是做了GET请求后,服务器回应很慢。结果抓包如下:

从抓包中可以看到,在请求完window.js后,过了21秒才去请求下一个文件thickbox-compressed.js,而window.js已经回应。好像是客户端这边出现了什么问题,导致长时间不会请求。后来想到使用IE浏览器,对网页中的资源文件是一个一个串行的获取的,并且抓包中在请求thickbox-compressed.js之前还有访问其他地址的记录。是否是严格包过滤导致了需要访问的资源没有访问到,而使其余请求被阻塞了21秒。对比配置,203.208.37.20这个地址的确不能被访问。再用自己的PC去访问这个网站,并进行抓包对比,结果如下:

发现在window.js和thickbox-compressed.js之间还请求了ga.js,问题原因应该就是这个,客户端一直在向其他服务器请求ga.js,但该服务器不在包过滤的允许范围内,导致ga.js无法请求到。客户端尝试连接多次后,跳过,去请求下一个资源,结果现象就出现了访问慢的情况。
修改ACL,允许访问抓包中218.200.227.177、211.138.245.81、203.208.39.22、218.200.227.219、218.200.174.132等几个地址,结果访问网页慢的问题不再复现。
根因
网页中包含了多个服务器上的资源,而某几个服务器由于包过滤的原因无法访问,导致客户端连续多次尝试访问该资源,从而出现访问网页慢的现象。
解决方案
通过抓包分析出访问该网站所需要连接的服务器的IP地址,修改ACL,允许访问这些地址。

END