黑洞路由与路由黑洞

  路由黑洞一般是在网络边界做汇总回程路由的时候产生的一种不太愿意出现的现象,就是汇总的时候有时会有一些网段并不在内网中存在,但是又包含在汇总后的网段中,如果在这个汇总的边界设备上同时还配置了缺省路由,就可能出现一些问题。这时,如果有数据包发向那些不在内网出现的网段(但是又包含在汇总网段)所在的路由器,根据最长匹配原则,并没有找到对应的路由,只能根据默认路由又回到原来的路由器,这就形成了环路,直到TTL值超时,丢弃。

  这是我们不愿意看到的现象,所以要有解决这个问题的方案,就是黑洞路由啦,其实就是一条特殊的静态路由,下一跳指向null 0口,一个不存在的口,结果就是将匹配这条路由的数据包丢弃…

  所以说,如果是精确汇总的话,就不会出现路由黑洞。举个例子

   黑洞路由与路由黑洞

  R1上有172.16.0.0/24、172.16.1.0/24、172.16.2.0/24三个网段,现对其进行了汇总:172.16.0.0/22

  这就出现了问题:并没有172.16.3.0/24这个网段,但是汇总后就出现了,并通告了给了R2。

  并且在R1上配置了一条默认路由:当有未知目的地址的数据包时,转发到R2。

  现在,R2收到一个目的地址在172.16.3.0/24网段的数据包,根据路由表172.16.0.0/22—>R1  ,将该数据包转发到了R1,因为R1上并没有这个172.16.3.0/24网段,根据默认路由又发回了R2,形成了环路,直到TTL为0,才会被丢弃,这同时也耗费了这两个路由器的系统资源。

  解决方法:就是在汇总路由的时候加一条指向null0的路由(黑洞路由):172.16.0.0/22 –>null0

  相当于直接将这个数据包丢弃。

  一。

  黑洞就是做路由汇总时候引入的一个概念

  比如你有好多个c类地址:

  192.168.1.0/24 – 192.168.200.0/24

  那么对外公告路由的时候你可以选择进行路由汇总。

  汇总为192.168.0.0/16的路由

  但是路由汇总会产生“路由黑洞”问题

  因为192.168.201.0/24 – 192.168.254.0/24这段路由存在但却没有对应的主机。

  因此可能造成目的地址为192.168.201.0/24 – 192.168.254.0/24往你的路由器上转发但地址却不可达的情况(理论上要发送回icmp unreachable的)

  一个可行的办法是在汇总路由时就写好一条黑洞路由丢弃这些垃圾流量

  ip route 192.168.0.0 255.255.0.0 null 0

    二、

  一般是在路由汇总的时候,有可能把一些本来没有的路由条目汇总了进来

  路由器处理这些本来不存在的路由条目的数据包的时候会占用路由器本身的资源

  这个时候如果大量的数据包涌向路由器,有可能变成DOS攻击

  所以就自动写出一条通往NULL0接口的路由,然后把那些垃圾数据包直接丢往NULL0,不要进行其他处理。

  黑洞路由与路由黑洞这两个概念容易混淆,为了方便区别,在此做了一下比较。

  黑洞路由,便是将所有无关路由吸入其中,使它们有来无回的路由。黑洞路由最大的好处是充分利用了路由器的包转发能力,对系统负载影响非常小。如果同样的功能用ACL(地址访问控制列表)实现,则流量增大时CPU利用率会明显增加。所以,一直是解决固定DOS攻击的最好办法。相当于洪水来临时,在洪水途经的路上附近挖一个不见底的巨大深坑,然后将洪水引入其中。当然,这只是个比喻,真要是洪水来的时候,正确的方法是―――跑!

  在路由器中配置路由黑洞完全是出于安全因素,设有黑洞的路器会默默地抛弃掉数据包而不指明原因。

  一个黑洞路由器是指一个不支持PMTU且被配置为不发送“Destination Unreachable–目的不可达”回应消息的路由器。

  可以这样看:

  如果一个路由器不支持PMTU并且配置为不发送ICMP Destination Unreachable消息数据包,那么源主机可能发送一个永远得不到路由的大数据包。因为路由器没有给源主机发回应消息,主机不能确定PMTU就是问题的所在。但如果源主机端启用了PMTU,则源主机在重试几次大的MTU之后,如果还收不到路由器的应答,那源主机自动将PMTU设置为576bytes.

  在Windows 2000下PMTU启用设置是—HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters

  EnablePMTUBHDetect REG_DWORD 0(默认禁用)或1(启用)

  在Windows XP下也可以试一下。

  (NOTE:PMTU–Path Maximum Transfer Unit是指当一个要发送的数据包的大小与当前路径中的最小的MTU值一样)

  区别于黑洞路由的是,这是路由器自动总结生成总结路由后产生的副效果。

  无类域间路由协议例如EIGRP,网络192.168.1.0/24 和192.168.2.0/24 被汇聚成192.168.0.0/16的了,但后来如果连接192.168.1.X的接口down掉后,192.168.1.0/24 路由就丢失了,但192.168.0.0/16的汇总路由还存在,那么去192.168.1.0/24的流量就会被丢到null0接口,相对于丢弃,就形成路由黑洞.

  所以一般汇总指向的下一跳为NULL 0

  ——————————————————————————–

  附加内容:

  在配置eigrp汇总时会产生一条指向null0的路由,

  它是为了防止循环而出现的,那它是如何防止循环的呢?

  详细举例说明,拓朴图如下:

  10.1.1.0/24, 10.1.3.0 /24 A—–B the rest of network 10.0.0.0—–>10.1.0.0/16

  10.0.0.0/8<———–

  A:router eigrp 1

  Network 10.0.0.0

  Interface s0

  Ip summary eigrp 1 10.1.0.0 255.255.0.0

  B:router eigrp 1

  Network 10.0.0.0

  Interface s0

  Ip summary eigrp 1 10.0.0.0 255.0.0.0

  可以想像:如果B上有个到目标10.1.2.0/24 的包,它会被发到A上,但是A上没有匹配的路由,只能匹配10.0.0.0/8,这时候包又发到B,包就是这样LOOP的。

  如果在A上有指向null0的汇总10.1.3.0/24 ,A就会把上面的那个包放到软件意义上的垃圾垌里了。。

  所以,目的地址不在A中也不在B中,但属于较长掩码汇总路由的子网的地址,就会被EIGRP路由协议产生的路由黑洞处理掉。

  在eigrp 中在作汇总时会产生这样一条指向null0的接口,但在其它路由协议中没有,所以为了防止循环,在配置is-is,ospf这样的协议的时候也应该配置一条静态的指向NULL0的路由,注意0.0.0.0/0也是一条最不具体的汇总路由

  路由黑洞

  黑洞路由,便是将所有无关路由吸入其中,使它们有来无回的路由,一般是admin主动建立的路由条目。

  提到黑洞路由就要提一下null0接口。

  null0口是个永不down的口,一般用于管理,详见null0的词条

  admin建立一个路由条目,将接到的某个源地址转向null0接口,这样对系统负载影响非常小。

  如果同样的功能用ACL(地址访问控制列表)实现,则流量增大时CPU利用率会明显增加。

  所以,设置黑洞路由一直是解决固定DOS攻击的最好办法。

  相当于洪水来临时,在洪水途经的路上附近挖一个不见底的巨大深坑,然后将洪水引入其中。

  黑洞路由最大的好处是充分利用了路由器的包转发能力,对系统负载影响非常小。

  NULL口是个伪接口(pseudo-interface),不能配地址,也不能被封装,它总是UP的,但是从来不转发或者接受任何通信量,对于所有发到该接口的通信量都直接丢弃。

  不管是手动汇总还是自动汇总汇总的接口都是空接口NULL0

  EIGRP中的null0接口:指向null0 ,因为这个路由是拿来通告的,给自己接口方向的邻居减少路由表用的,而不表示一个实际的可以到达明细网络的路由,从邻居通过汇总路由来的到分组,还是要查本身的明细路由的,如果进来分组在汇总路由不匹配,直接丢给null 0端口.就是说使用接口null0能避免路由器转发分组的时候寻找匹配程度更高的路由,阻止分组在网络内形成环路。

  比如说A和B是邻居

  A连了三个网络192.168.1.0/24 192.168.2.0/24 192.168.3.0/24

  然后在A上做了汇总192.168.0.0/16

  A把这个汇总路由传给B

  然后B传过来一个包,目的是192.168.4.0/24

  如果,不是汇总到NULL0接口,看其过程:先分条细细匹配192.168.1.0/24 192.168.2.0/24 192.168.3.0/24,由于匹配不到,则匹配汇总路由192.168.0.0/16,则根据最长匹配原则,该分组与汇总路由匹配,那就出现了一种现象,如果这路由器有默认路由,则此包会沿默认路由转发分组,这样有可能造成了路由环路

  再来看看,如果有了NULL0接口,看其过程,看其过程:先分条细细匹配192.168.1.0/24 192.168.2.0/24 192.168.3.0/24,由于匹配不到,则被转发到NULL0接口(注意,不是再

  来跟汇总路由匹配),而转发到NULL0,它就被丢弃或者到了比特桶(bit bucket,路由器确定的被丢弃比特(被丢弃的分组)的目的地),避免产生了以上的环路

  from: http://hi.baidu.com/lgddylan/item/f136586725c52e147cdecc6f

  http://baike.baidu.com/link?url=jXqnUkJu3RuiOCpTnVq8fNNjbmxrx2JRBRN-inp_3iFwgzVnk0VR9cIOnPhKqcim_eozSAZK4py6SLwGmnTeGK

 

发表评论

邮箱地址不会被公开。 必填项已用*标注