AR1左侧连接着192.168.0.0/24、192.168.1.0/24、192.168.2.0/24三个网段,为了让它们能够访问internet,AR1配置了指向AR2的默认路由,而为了让这些网段访问internet的回程流量能够顺利返回,又为了精减路由表,AR2配置了一条静态汇总路由192.168.0.0/22,而下一跳是AR1。这样做看似没有问题,但是却存在一个不小的隐患,考虑这样一种情况:有一个网络攻击者连接到AR1,它开始向AR1发送大量垃圾数据包,这些数据包的目的IP地址为192.168.3.0/24网络中的随机地址(该子网在AR1并不存在),以发往192.168.3.1的垃圾报文为例,该报文首先被发送到AR1,后者通过路由表查询后发现数据包的目的IP地址只能匹配默认路由,,因此将其转发给默认路由的下一跳AR2,然而AR2经过路由表查询后,发现数据包的目的IP地址匹配路由表中的汇总路由192.168.0.0/22,因此又将数据包转发给AR1,AR1又将报文转回AR2,至此就产生了环路,发往192.168.3.1的垃圾报文将不断地在AR1与AR2之间被来回转发,直到它们的TTL(time to live)值减到0时被丢弃。
在AR1上增加一条黑洞路由:ip route-static 192.168.0.0 22 Null0即可。这条路由的出接口非常特殊,是Null0。当其收到发往192.168.23.0/24这个在AR1上并不存在的网段的非法报文时,就会直接丢弃这些报文,而不会再转发给AR2了,因为这些报文的目的地址匹配这条指向Null0的路由。当然,AR1如果收到目的地址为192.168.0.0/24 192.168.1.0/24 192.168.2.0/24这三个网段的数据包时,会把它们从相应的直连接口转发出去,而不会丢弃,因为三个网段在AR1的路由表中存在直连路由,而相比黑洞路由直连路由的掩更长,