七、NAT场景下黑洞路由作用

——————————————————————————————————————————————————

1.源NAT场景下的黑洞路由

先搭建一个典型的源NAT组网环境。

在这里插入图片描述

防火墙上NAT相关配置如下:

1、配置NAT地址池

nat address-group GW 
 section 0 110.1.1.10 110.1.1.10

2、配置NAT策略

nat-policy
 rule name sounat
  source-zone trust
  destination-zone untrust
  source-address 192.168.100.0 mask 255.255.255.0
  action source-nat address-group GW

3、配置安全策略

security-policy
 rule name sounatpolicy
  source-zone trust
  destination-zone untrust
  source-address 192.168.100.0 mask 255.255.255.0
  action permit

4、默认路由

ip route-static 0.0.0.0 0.0.0.0 110.1.1.2

NAT地址池是110.1.1.10,防火墙与路由器相连接口地址是110.1.1.0/30,NAT地址池和防火墙公网接口地址不在同一网段。

正常情况下,私网PC访问公网WEB服务器,会生成会话表,源地址进行了转换,一切都没有问题。

在这里插入图片描述

此时,如果公网上的一台PC,主动访问防火墙的NAT地址池地址,会发生什么情况?

在公网WEB执行Ping 110.1.1.10,发现无法Ping通。

在这里插入图片描述

显然,这是正常的结果,因为NAT地址池只有在转换私网地址的时候才会用到,也就是说,私网PC必须先发起访问请求,防火墙收到该请求后才会为其转换地址。NAT地址池地址并不对外提供任何单独的服务。所以当公网PC主动访问NAT地址池地址时,报文无法穿过防火墙到达私网PC,结果肯定不通。

但实际情况远远没有这么简单,我们在防火墙的G1/0/0口上抓包,然后再次在公网WEB上执行PING 110.1.1.10命令,使用-c 1参数,就Ping一次报文。

在这里插入图片描述
不看不知道,一看吓一跳,报文的TTL值逐一递减,最后变为1。

TTL是报文的生存时间,每经过一台设备的转发,TTL值减1,当TTL值为0时,就会被设备丢弃。这说明公网PC主动访问NAT地址池地址的报文,在防火墙和路由器之间相互转发。

梳理下过程:

1、路由器收到公网PC访问NAT地址池地址报文后,发现目的地址不是自己的直连网段,因此查找路由表,发送到防火墙。

2、防火墙收到报文后,该报文不属于私网访问公网的回程报文,无法匹配会话表,同时目的地址也不是自己的直连网段(防火墙没有意识到该报文的目的地址是自己的NAT地址池地址),只能根据缺省路由来转发。因为报文从同一接口入和出,相当于一个安全区域流动,默认情况下不受安全策略控制,这样报文又从防火墙出接口发送至路由器。

3、路由器收到该报文后,再次查找路由表,还是发送到防火墙,如此反复。

下来我们配置一条路由黑洞,为了避免影响其他业务,将掩码设置为32位。

ip route-static 110.1.1.10 255.255.255.255 NULL0

第二种方法:在防火墙配置NAT地址池时,配置命令:

nat address-group GW 
 route enable
 section 0 110.1.1.10 110.1.1.10

两者作用相同

在这里插入图片描述
Ping了一次,抓到了1个ICMP报文,说明防火墙收到路由器发送过来的报文后,匹配到了黑洞路由,直接将报文丢弃。此时就不会在防火墙和路由器之间产生路由环路,及时收到再多的报文,都会送到黑洞中。且不会影响正常业务。

上面只是用了一个Ping报文来演示这个过程,如果公网上的捣乱分子利用成千上万的PC主动向NAT地址池地址发起大量访问,无数的报文就会在防火墙和路由器之间循环,占用链路带宽资源,消耗大量的系统资源来处理这些报文,可能会导致正常报文无法处理。

所以,在防火墙上NAT地址池地址和公网接口地址不在同一网段时,必须配置路由黑洞,避免在防火墙和路由器之间产生路由环路。

———————————————————————

如果NAT地址池和防火墙公网接口地址在同一网段,还会出现这种问题?再次验证下。

interface GigabitEthernet1/0/0
 ip address 110.1.1.1 255.255.255.0

在来Ping抓包看看。

在这里插入图片描述
抓到了ARP报文和ICMP报文,但是没有在防火墙和路由器之间相互转发。过程:

1、路由器收到PC访问NAT地址池地址报文后,发现目的地址属于自己的直连网段,发送ARP请求,防火墙会回应这个ARP请求,前两个ARP就是来完成这一交互过程。路由器使用防火墙告知的MAC地址封装报文,发送至防火墙。

2、防火墙收到后,发现报文的目的地址和自己的G1/0/0接口在同一网段,直接发送ARP请求报文,寻找该地址的MAC地址(防火墙依然没有意识到该报文的目的地址是自己的NAT地址池地址),但是网络中其他设备都没有配置这个地址,肯定就不会回应,最终防火墙将报文丢弃。

所以说,在这种情况下不会产生路由环路,但是如果公网上捣乱分子发起大量访问时,防火墙将发送大量ARP请求报文,也会消耗系统资源。所以,当防火墙上NAT地址池地址和公网接口地址在同一网段时,建议也配置黑洞路由,避免防火墙发送ARP请求报文,节省防火墙系统资源。

ip route-static 110.1.1.10 32 NULL 0

在这里插入图片描述
配置了路由黑洞后,防火墙再也不会发送ARP请求报文。

———————————————————————

还有一种极端的情况,配置源NAT时,直接把公网接口地址作为转换后地址Easy-IP方式。也可以把公网接口地址配置成地址池地址。这样NAT转换使用的地址和公网接口地址是同一个地址。

Easy-IP方式下不需要配置路由黑洞。防火墙收到PC报文后,发现访问自身报文,这时候取决于公网接口所属安全区域和Local区域之间的安全策略。安全策略允许通过就处理,安全策略不允许通过,就丢弃。不会产生环路,也不需要配置黑洞路由。

——————————————————————————————————————————————————

2.NAT Server场景下的路由黑洞

NAT Server也存在环路的问题,不过发生环路的前提条件比较特殊,要看NAT Server是怎么配置的。先看看NAT Server Global地址和公网接口地址不再同一网段的情况。

在这里插入图片描述

假设接口地址、安全策略、安全区域、路由都已完成配置。

如果我们在防火墙上配置一条粗犷型NAT Server,将私网Web服务器发布到公网。

nat server 0 global 110.1.1.10 inside 192.168.100.2

公网PC访问110.1.1.10,目的地址都会转换成192.168.100.2,然后发送给私网Web服务器,自然不会产生环路。

但是如果配置了一条精细化的NAT Server,只把私网Web服务器特定的端口发布到公网上:

nat server protocol tcp global 110.1.1.10 8889 inside 192.168.100.2 80

此时,如果公网PC不按常理出牌,没有访问110.1.1.10的8889端口,而使用ping命令访问110.1.1.10,防火墙收到该报文,既无法匹配server-map表,也无法匹配会话表,就只能查找路由,从G1/0/0接口发出,路由器收到报文后,还是送到防火墙,依然产生环路。

在这里插入图片描述
所以,当防火墙配置了特定协议和端口的NAT Server并且NAT Server的Global地址和公网接口地址不在同一网段,必须配置路由黑洞,避免在防火墙和路由器之间产生环路。

如果NAT Server的Global地址和公网接口地址在同一网段,会发送ARP请求,和上面说的情况是一样的。

所以,当防火墙配置了特定协议和端口的NAT Server并且NAT Server的Global地址和公网接口地址在同一网段,建议也配置路由黑洞,避免在防火墙发送ARP请求报文,节省防火墙系统资源。

如果配置NAT Server时,把公网接口地址配置成Global地址,防火墙收到PC报文,匹配Server-map表然后转换目的地址,发送到特定私网。如果匹配不上Server-map表,就会认为是访问自身报文,由公网接口所属安全区域和Local区域之间安全策略决定如何处理,不会产生环路,也不需要配置黑洞路由。

——————————————————————————————————————————————————

3.总结

源NAT来说:
—————————————————

如果NAT地址池地址与公网接口地址不在同一网段,必须配置黑洞路由。
如果NAT地址池地址与公网接口地址在同一网段,建议配置黑洞路由。

对于特定协议和端口的NAT Server来说:
—————————————————

如果NAT Server的Global地址与公网接口地址不在同一网段,必须配置路由黑洞。
如果NAT Server的Global地址与公网接口地址在同一网段,建议配置路由黑洞。

——————————————————————————————————————————————————

4.黑洞路由其他作用

除了防止环路,节省系统资源,其实黑洞路由还有一个作用,就是在防火墙上引入到OSPF中,发布给路由器。

当NAT地址池地址或NAT Server的Global地址与公网接口地址不在同一网段,在路由器上需要配置静态路由,保证路由器可以把去往NAT地址池地址或NAT Server的Global地址的报文发送到防火墙。

[Router]ip route-static 110.1.1.10 255.255.255.255 110.1.1.1

如果防火墙和路由器之间运行OSPF协议,那么可以通过OSPF协议来学习路由,减少手动配置的工作量,但是NAT地址池不同于接口地址,无法在OSPF中通过network命令发布,路由器如何才能学到路由?

此时可以使用OSPF中引入静态路由方式,把黑洞路由引入到OSPF中,然后通过OSPF发布给路由器。 这样路由器就知道去往NAT地址池地址或NAT Server的Global地址的报文都要发送到防火墙上。

ospf 100
 import-route static
 area 0.0.0.0
  network 110.1.1.0 0.0.0.3

在这里插入图片描述
——————————————————————————————————————————————————

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值