源NAT中NO-PAT模式下的黑洞路由实验
实验拓扑如图:
实验基本配置:
防火墙配置:
防火墙安全策略:
security-policy rule name NO_PAT description NAT策略(NO_PAT)引入 source-zone trust destination-zone untrust source-address 10.1.1.0 mask 255.255.255.0 action permit
nat地址池配置:
nat address-group NO_PAT 0 mode no-pat global section 0 1.1.1.1 1.1.1.2
防火墙NAT策略:
nat-policy rule name NO_PAT source-zone trust destination-zone untrust source-address 10.1.1.0 mask 255.255.255.0 action source-nat address-group NO_PAT
安全区域设置
firewall zone trust set priority 85 add interface GigabitEthernet1/0/0 # firewall zone untrust set priority 5 add interface GigabitEthernet1/0/1
默认路由配置
ip route-static 0.0.0.0 0.0.0.0 GigabitEthernet1/0/1 202.100.1.2
路由器AR1配置:
IP地址配置
interface GigabitEthernet0/0/0 ip address 202.100.1.2 255.255.255.0
默认路由配置:
ip route-static 0.0.0.0 0.0.0.0 GigabitEthernet0/0/0 202.100.1.1
实验现象验证:
当完成配置后,发现可以使用 PC1 ping 通AR1的IP地址202.100.1.2,并且发生地址转换。这步不可省略!
验证结果:
pc1的IP地址为10.1.1.1,观察wireshark抓包的结果:
这个实验主要讨论黑洞路由,接下来:
黑洞路由验证:
AR1 ping 防火墙地址池地址 1.1.1.1 和 1.1.1.2
ping 1.1.1.1
此时通信失败,观察wireshark抓包结果,发现此时只有一个icmp 的echo request报文。
再使用AR1ping 地址池中的另外一个地址:1.1.1.2,发现前方高能。
虽然通信失败,但是请看wireshark抓包结果:
此时出现了大量的 icmp request报文!!!
路由环路分析:原理如下图。
AR1将目的地址为1.1.1.2(为什么不是1.1.1.1稍后再谈)的数据发送至防火墙,
由于该地址没有和防火墙的出接口在同一个网段,防火墙查路由表,遵循默认路由,将这个数据包从G1/0/1再发送出去
数据包再次到达AR1,AR1查路由表,遵循默认路由,再把数据包发送给防火墙,循环往复,直至数据包的TTL值耗尽(见抓包那张图,ttl一直减小到1),数据包被丢弃,路由环路结束。
再来谈谈为什么AR1 ping 1.1.1.1不会出现这种情况,抓包只抓到一个报文:
在做完pc1 ping AR1的 202.100.1.2 验证的时候,发现结果是可以通信的,此时,在防火墙当中,生成了一条server-map,如下图
所以,此时关于1.1.1.1 在防火墙的server-map还没有被老化,所以当AR1的数据包过来,不会先匹配路由表,而是先匹配server-map,同时规定,nat产生的server-map,也一定要有安全策略,但是在这个场景中,并没有关于 untrust --> trust的安全策略(我们可以看到,通过server-map,目的地址1.1.1.1已经被转换成10.1.1.1了,但是防火墙没有相关的安全策略,很遗憾,数据包不能发送至PC1)
此时这个数据包就被丢弃了,而不会通过防火墙的默认路由向外发送。大家也可以等这条server-map老化掉(默认老化时间TTL:360s),再次在AR1ping 1.1.1.1,观察wireshak的抓包结果。
路由环路的解决方案:
由于地址池和出接口不在同一网段,会导致路由环路,解决方案:针对地址池的地址配置黑洞路由:
[FW1]ip route-static 1.1.1.1 32 NULL 0 [FW1]ip route-static 1.1.1.2 32 NULL 0
再次使用AR1ping 1.1.1.2,抓包发现路由环路消失。
查看防火墙路由表:
第二种方案!!
nat address-group NO_PAT 0 mode no-pat global route enable section 0 1.1.1.1 1.1.1.2
route enable 相当于直接配置黑洞路由,此时不需要手工配置
此时再查看防火墙路由表
可以看到系统配置的黑洞路由,优先级为61的 unr(user network routing),前提要先取消刚才手工配置的黑洞路由。