双出口策略路由NAT Server 不生效

发布时间:  2015-09-24 浏览次数:  1089 下载次数:  0
问题描述
用户在防火墙上配置NAT Server 端口映射向公网提供服务,通过配置策略路由使公网访问内网服务的流量能从映射公网地址的接口(ISP1)转发出去,保证访问流量来回路径一致,同时通过配置到ISP2的默认路由,内网用户通过ISP2访问公网,在公网访问内网服务器失败。

处理过程
步骤 1 一开始怀疑是用户NAT Server 端口配置问题导致服务失败,因此建议用户配置全映射测试,结果还是不通,在防火墙上查看会话,发现防火墙有转发报文,但没有回包的会话。仔细检查策略路由,acl中source中也包含了服务器的IP地址,最后发现在定义策略路由转发下一跳的时候,用户定义为防火墙的出接口,即Apply output-interface XXX。

步骤 2 怀疑可能是运营商对端设备没有开启proxyarp导致防火墙丢包,因此告诉用户将将策略路由配置修改为apply ip-address next-hop XXXX(对端运营商设备接口地址)测试,故障消除,外网能够顺利访问内网的服务。
根因
策略路由配置问题导致此故障,示例:

Policy-based-route abc permit nod 0
If-match acl XXXX
Apply output-interface XXX

从配置上可以看到,策略路由的下一跳是出接口,和配置静态路由下一跳为出接口一样,防火墙会认为到远端目的网络和自己是直连网络,因此例如访问8.8.8.8这个ip地址时,防火墙会在此接口指直接发起IP地址为8.8.8.8对应mac地址的arp请求,如果防火墙的对端设备配置了proxy ARP功能,则会响应此请求报文,将与防火墙的直连接口的mac地址作为应答地址,此场景一般在应用在运营商宽带接入服务中,在Bras设备会上开启proxyarp功能,因此宽带用户的默认路由下一跳都是dialer口。同理若对端设备没有开启proxyarp功能,那就会导致下一跳配置为出接口出现网络不通故障。
建议与总结
在配置静态路由或是策略路由的时候,除了拨号的场景以外,其余时候都建议下一跳配置为对端设备的IP地址而不要只写出接口,在对端设备没有开启proxyarp功能时,会导致网络不通的故障。

END