防火墙引发的应用问题
2017-11-07
应用背景
最 近,单位有一个新的项目启动,需要内部电脑访问外部某单位一台服务器的IIS(IP地址为10.155.215.70)应用,端口号为5060。网络逻辑结构如图1所示,内网电脑→核心交换机→IPS设备→Juniper防火墙→外部IIS服务器。
图1 简式逻辑结构图
我们通过以下几个步骤,将内网与外部地址10.155.215.70连通。
1.在核心交换机上做了路由策略:ip routestatic 10.155.215.70 32 192.168. 100.251
2.在Juniper防火墙上开通路由允许通过策略以及NAT策略。
3.ISP设备为透明模式。
故障现象
上述步骤设置完毕后做测试。首先Ping命令测试,内网某台电脑Ping外部服务器10.155.215.70,结果如图2所示,能Ping通。接着做 telnet测 试,telnet 10.155.215.70 5060,结果也是能通的。
但是,在通过浏览器访问http://10.155.215.70:5060时,一直显示无法访问,后来尝试访问该外部服务器的其他端口,比 如http://10.155.215.70:5070,http://10.155.215.70:5080等 均 能 正常访问,此时怎么也想不明白,是什么原因导致无法访问http://10.155.215.70:5060这网址。
故障排查
经重新商讨,最终决定采取排除法一步步找原因。
1.排查内网环境问题
在内网中搭建一台IIS服务器,新建Web站点页面并设置5060端口,之后通过内网某台PC电脑访问此Web页面,测试结果能正常访问,证明内网环境没有问题。
图2 Ping测试
图3 ALG设置
2.排查IPS设备问题
将IPS电源直接切断(基于二层回退和掉电保护的机制),再从内网PC访问http://10.155.215.70:5060地址,测试结果依然显示无法访问成功,证明IPS设备没有阻拦此端口设置。
3.排查外部环境问题
将连接到Juniper防火墙的线路直接连到笔记本电脑上,设置好相应的IP地址后,再访问http://10.155.215.70:5060地址,测试结果显示访问成功,证明外部环境设置没有问题。
确定防火墙问题
经过以上几步测试后,最终将问题确定在Juniper防火墙上。经过专业人士细心诊断,发现Juniper防 火 墙 有 一 个“ALG”(Application Level Gateway,应用级网关)功能菜单,里面有一项SIP(Session Initiation Protocol,会话初始协议)选项,它所占用的端口正好是5060端口,将它改成未勾选后保存应用(如图 3),内网电脑访问http://10.155.215.70:5060 地址,测试结果显示访问成功,证明就是这个Juniper防火墙的设置问题,导致内网电脑一直无法访问外部服务器Web站点的5060端口地址,但是Telnet 等方式都是能正常通的,这就让人很容易产生错觉。
经验总结
防火墙是一把“双刃剑”,在给予内部网强大安全的同时,也会对出口的访问做很多限制。就这次事件而言,Web站点使用的5060端口就是一个常用端口,而Juniper防火墙的应用级网关功能默认是不允许此端口当普通端口使用,故而发生了这种应用层面的错误。