路由黑洞:
路由黑洞是一种现象,一般是在网络边界做汇总回程路由的时候产生的一种不太愿意出现的现象,就是汇总的时候有时会有一些不在内网中存在的网段,但是又包含在汇总后的网段中,如果在这个汇总的边界设备上同时还配置了缺省路由,就可能出现一些问题。
比如说在核心或者出口路由器上汇总了 10.1.0.0/23 的路由,包括了10.1.0.0、1.0、2.0、3.0 共四个网段,但实际上内网只有10.1.0.0和 1.0、2.0 这三个网段,或者3.0网关地址 down 了,那么这时如果有内网有数据包发向 3.0 网段,核心或者出口路由器则会根据汇总路由,转给4.0的网关,但这时由于4.0网关不存在,则自动走默认路由 0.0.0.0 转发给出口地址,由于出口地址对端没有内网的路由,则会再转回来,于是产生三层环路,直到TTL值耗尽才被丢弃,造成出口带宽的拥塞。
解决的方法是:我们配一个 “低于” 默认路由,但又 “高于” 汇总路由的路由条目,这就是配置一个相应的黑洞路由,如果存在明细路由则直接走明细路由,如果不存在明细路由如3.0/24,则走更 “短” 一些的黑洞路由,如配置10.1.0.0/22 到 null 0 中,从而不会再产生一旦找不到明细就走默认路由转发出去空转的局面。在出口路由器上配置来自相应网段的黑洞路由命令如下:
ip route-static 10.1.0.0 22 null 0
这样,里面的存在的直连路由则会直接转发,不存在的网段则会被这条黑洞路由直接drop
还有一种情况:从EBGP学到的路由,在IBGP内部,如果中间跨越了R3路由器,而R3未在IBGP AS内,那么就会产生两端EBGP在路由层面能相互学习到对端路由,但在数据层面,R3和R4却没有两端EBGP的路由,导致两端无法 ping 通的情况,这样也会产生路由黑洞,如下图:
黑洞路由:
黑洞路由是一个路由目的地址|下一跳地址,名字为 NULL 0,和 Loopback 地址一样,存在于每个网络设备中,只要机器开机,接口就不会Down掉。我们可以用它做为防御放大攻击的手段,也可以用它来配置到一些不希望被访问的目的地址上,类似ACL的deny的作用。
如下图,我们不希望PC1访问到AR8路由器上的某些地址,就在AR7上配置黑洞路由,这样从R7过去的地址,就被R7扔给了黑洞路由直接丢弃,无法访问不了AR8上的这个地址了。
ip route-static 10.8.8.8 255.255.255.255 NULL0