关于Juniper SSG或ISG系列防火墙配置NAT映射(VIP)时的 Server Auto Enable参数问题

 

       记录一下Juniper SSG或者ISG 系列防火墙上配置一对多NAT映射 VIP(Viritual Internet Protocol)时碰到的一个特殊的问题, 就是在内部服务器ICMP报文被阻断的情况下,启用VIP的Server Auto Enable 功能引起的NAT映射失效问题,希望可以给碰到相同问题的人一些参考。

       测试平台:Juniper ISG 1000 防火墙,软件版本为 6.3.0。

遇到的问题:

       任务是将内网的一台Windows服务器(IP地址:192.168.X.X)的公网出口地址更换为新的公网出口地址(IP地址:60.X.X.X),所以在出口防火墙上添加了一条新的VIP映射,将公网地址 60.X.X.X 的8080端口映射到内网服务器 192.168.X.X 的 8080端口,如下图所示:

        默认配置VIP时会开启Server Auto Dectection,这里就保持默认了,但是配置完成后,就直接 telnet 公网地址60.X.X.X的8080端口进行测试,发现不通。

        然后就去检查服务器,服务器上发现8080端口和对应的服务状态都是正常的,直接在出口防火墙上telnet服务器192.168.X.X的8080端口也是正常的。

        那就说明是对外的VIP映射出了点问题,但奇怪的是同事发现把服务器自身的防火墙关闭之后,外网就能访问到服务器的8080端口了,但是开启之后又不能访问了,这就把问题又引入另一个奇怪的方向了?服务器8080端口不管有没有关闭自身防火墙在内网一直是可以访问的,但是关闭它自身的防火墙却可以影响外网对它8080端口的访问?然后检查了服务器的防火墙,8080端口没有被阻断,也没配置任何跟它相关的安全策略。

       最后再次检查了防火墙,确认了一下VIP的配置,没什么问题,只是这条VIP映射状态显示为Down,一个有经验的前辈让我把VIP的Server Auto Detection参数去掉试试,我就去掉了,然后发现通了!!!

问题原因:

        最后确认问题是Juniper ISG 防火墙配置VIP时开启了 Server Auto Detection 导致的,但以前配置的时候都是正常的,这次是因为服务器也有锅,服务器自身防火墙上出于安全考虑配置了阻断外部ICMP报文(ping)的策略,而Juniper防火墙的 Server Auto Detection自动检测功能是通过ping来检测服务器的连通性进而判断配置的VIP映射是否有效,有效则显示状态为OK,无效则显示状态为Down,如果判定为无效,数据包进来时就无法使用此映射规则了。

       所以正常情况下服务器自身没有配置任何安全策略的时候,Juniper防火墙上直接配置VIP并默认开启 Server Auto Detection是不影响正常通信的,这里是因为服务器自身阻断了ICMP报文这种特殊情况,导致防火墙使用 Server Auto Detection 对该服务器进行连通新检测时失败,进而将映射到该服务器的VIP 判定为无效映射,从而无法使用映射规则进行通信,对应的映射端口自然也无法访问了。

解决办法:

        针对这种问题,解决办法有两个,要么就是关闭服务器自身防火墙的阻断ICMP报文的策略,要么就是关闭防火墙VIP映射里的 Sever Auto Detection 功能,也不会影响正常通信。我这里直接关闭了VIP配置中的 Sever Auto Detection。

        这里简单说一下关闭 Sever Auto Detection 的功能的两种方法,在Web界面只需在VIP配置界面,去掉 Sever Auto Detection 的勾选即可,在命令行配置VIP时,可以通过帮助信息看到,在 VIP配置后添加 manual 参数即表示关闭 Sever Auto Detection功能,通过默认参数配置的VIP都会不会添加 manual 参数。

nsisg1000-> set interface ethernet3/4 vip 60.X.X.X + 8088 "tcp-8088" 192.168.X.X ? <return> manual               turn off server auto detection