什么情况下需要配置黑洞路由黑洞原理

扫一扫体验手机阅读
配置NAT后为什么要同时配置黑洞路由
<span type="1" blog_id="1579967" userid='
95篇文章,8W+人气,0粉丝
高并发架构之路
¥51.00135人订阅
9本网络安全实战书籍精华
¥51.00505人订阅
<span type="1" blog_id="1579967" userid='路由黑洞_百度百科
清除历史记录关闭
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
:在汇总时,汇总地址中若包含实际网络下并不存在的网段时,将产生误访。
提到就要提一下null0接口。
null0口是个永不down的口,一般用于管理,详见null0的词条
admin建立一个路由条目,将接到的某个源地址转向null0接口,这样对系统负载影响非常小。
如果同样的功能用(地址访问控制列表)实现,则流量增大时利用率会明显增加。
所以,设置一直是解决固定的最好办法。
相当于洪水来临时,在洪水途经的路上附近挖一个不见底的巨大深坑,然后将洪水引入其中。
最大的好处是充分利用了的包转发能力,对系统负载影响非常小。
在中配置路由黑洞完全是出于安全因素,设有黑洞的路由会默默地抛弃掉数据包而不指明原因。
一个黑洞路由器是指一个不支持PMTU且被配置为不发送“Destination Unreachable--目的不可达”回应消息的路由器。
可以这样看:
如果一个路由器不支持并且配置为不发送ICMP Destination Unreachable消息数据包,那么源可能发送一个永远得不到路由的大数据包。因为没有给源发回应消息,主机不能确定PMTU就是问题的所在。但如果源端启用了PMTU,则源主机在重试几次大的MTU之后,如果还收不到的应答,那源主机自动将PMTU设置为576bytes.
在Windows 2000下PMTU启用设置是---HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
EnablePMTUBHDetect REG_DWORD 0(默认禁用)或1(启用)
在Windows XP下也可以试一下。
(NOTE:PMTU--Path Maximum Transfer Unit是指当一个要发送的数据包的大小与当前路径中的最小的MTU值一样)
清除历史记录关闭Null0接口(黑洞路由)的用法_又又的成长2012_新浪博客
Introduction
一般情况下,路由器提供一个称为NULL0的接口,该接口是一个逻辑接口,有一个重要的特性:永远是UP的,并且发送到该接口的数据帧都会被丢弃。由此可以推断,如果我们在路由器上配置一条静态路由,该路由的出口就是NULL0,那么该路由会有下列特性:
1、这个静态路由永远的有效,那是因为接口不会DOWN掉;
2、使用该路由转发数据帧消耗的系统资源很少,因为路由器只是丢弃接收的数据报;
3、路由器根据配置的参数要不然向数据源发一个丢弃通知(ICMP通知消息),要不就不做任何反应。
&如果路由不可达要实现发送ICMP通知消息,还得做个配置。
正是有了这些特性,使得该接口有广泛而重要的用途,尤其在进行一些高级的路由策略时,比如路由聚合,网络发布等,有灵活而巧妙的应用。下面具几个例子:
NULL0与路由汇总
一般情况下,为了提高网络的可伸缩性,都得在边缘路由器上弄路由聚合。但是路由聚合需要满足一些的条件,比如,OSPF中,只能在区域边界路由器对路由进行汇总,这样,为了进行路由聚合,我们就得进行划分多区域,但是这在某些情况下是不可满足的,再者,在BGP中,为通告一个汇总网络,这个网络就得存在在路由表,否则无法通告。
但如果使用了NULL0接口和静态路由技术,这些问题会很巧妙的被解决。下面我们举两个例子,一个例子说明如何解决单区域情况下的OSPF路由汇总,另外一个例子说明在BGP中如何通告聚合路由。这两个例子都很有代表性。
1.1&单区域模式下OSPF路由汇总
这个网络,RT1经过两个高速的POS链路直接连接上层的两台中心路由器CRT1和CRT2,在RT1下面直接连接了很多DDN的用户,每个DDN的用户用一个C类IP的地址,目前已经使用了四个:
192.168.1.0,192.168.2.0,192.168.3.0,192.168.4.0,按照这样,192.168.0.0/16整个分配给该了路由器下的DDN的用户以使用。
在RT1和两台中心路由器之间运行OSPF协议,RT1和DDN用户之间采用静态路由,为了把DDN用户的静态路由分发到整个INTERNET,在&RT1上把所有静态路由引入了OSPF。这样工作起来是没有问题的,但因为整个192.168.0.0/16路由都分配给了RT1,即说明该网络不会在外部网络上出现,这时候我们可以采用路由聚合的技术,把这些“零碎”网段聚合成192.168.0.0/16,然后通过OSPF发布出去。
当前的问题是,在OSPF,要进行路由聚合,必须在区域边界进行,这时一个解决方案就是把所有连接DDN用户的接口划分到另外一个区域中(RT1和&CRT1,CRT2之间划分为区域0),然后在RT1上进行聚合,把所有DDN路由聚合后发送到区域0里面。这样做有很多弊端,比如,容易造成路由泄露(RT1上的路由可能被DDN用户截获),浪费DDN线路带宽(OSPF要在接口上不断发送HELLO报文)等。
一个不另外划分区域而解决该问题的方式就是应用NULL0接口路由。可以按照下列步骤进行:
1、在RT1上配置静态路由,如下:
(CRT1-config)#ip&route&192.168.0.0&255.255.0.0&NULL0
2、创建访问列表,用于OSPF中的路由分发,如下:
(CRT1-config)#access-list&10&permit&192.168.0.0&0.0.255.255
&#8203;(CRT1-config)#access-list&10&deny&any
3、在OSPF中分发静态路由,并使用访问列表10来控制分发的路由,如下:
(CRT1-config-router-ospf)#redistribute&static
&#8203;(CRT1-config-router-ospf)#distribute-list&10&out&static
以上仅仅列出了跟路由分发相关的配置。完成这样配置后,OSPF在分发静态路由时,就会根据访问列表10来进行控制,而仅仅分发出去一条汇总路由,而其他具体的路由都会被过滤掉。需要注意,OSPF在分发静态路由时,仅分发路由表里存在的路由,因此我们就得新建一条下一跳为NULL0接口的静态路由来欺骗OSPF,这也是上述操作的重点。
1.2&BGP协议中的路由汇总
BGP作为一种边界网关之间的路由协议,有很大的伸缩性和灵活性,可以对路由进行精确的控制和分发。在一些ISP中,往外发布自己的内部路由时往往需要做一些汇总,而不发送具体的路由出去,这样不但有利于保密的目的,而且也不会引入太多的路由到INTERNET上
BGP,我们用SUMMARY-ADDRESS命令来进行路由聚合,但是聚合后出现路由属性的改变问题,像AS-PATH的属性,会由具体的AS的号更换为AS-SET,这样对以后的路由控制有着不利的影响。也就是说,在BGP中,引入路由的最理想方式是使用NETWORK命令直接引入到本地路由表中的路由,这样引入的路由起点属性为IGP,可信度是最好的。
但NETWORK命令总有一个限制,就使用NETWORK来引入的路由必须在路由表中存在,否则就不能引入。实际情况是,路由表中存在着一些具体的路由,而不存在汇总路由,这时候用NETWORK便不起作用。跟上面OSPF的解决方式是一样的,我们可以用配置一条静态的来指向NULL0接口的路由进行欺骗BGP,如下步骤:
1、配置静态路由,如下:
(CRT1-config)#ip&route&192.168.0.0&255.255.0.0&NULL0
2、在BGP中,把聚合路由引入到其中,如下:
(CRT1-config-router-bgp)#network&192.168.0.0&mask&255.255.0.0
完成这些配置后,BGP就会把一条聚合路由引入其中,同样的道理,配置上该条静态路由后,也不会对数据的正常转发造成任何影响。
NULL0的其它应用
2.1&作为备用路由使用
一般,如果一台路由器接收了一个数据包,而在自己的路由表里又没有查询到要转发的路由,该路由器就会把数据报丢弃,并向数据源发送一个目的地不可达的ICMP消息。当然,这是一种正确的行为,但有些情况下就可能不符合人的愿望,
比如,我们在路由器上配置了一条静态路由,使这个路由指向一个物理串口,这个串口正常时,该静态路由就可用,但这个串口DOWN掉时候,该静态路由就会被删除,这样如果再收到这样一个数据报(该数据报需要配置的静态路由进行转发),则丢弃,并给源发送一个ICMP目的地不可达消息,接收到ICMP不可达消息的主机就有可能修改自己的路由表(尤其是在一些UNIX主机),而这是我们所不希望的。
这时候我们可以配置一条指向NULL0接口的备用路由,但是把优先级降低,假设我们在路由器上做如下配置:
(router-config)#ip&route&0.0.0.0&0.0.0.0&Serial&0&preference&60
&#8203;(router-config)#ip&route&0.0.0.0&0.0.0.0&NULL0&preference&20
即使SERIAL0接口断掉了,路由器也就会不断使用下条路由地进行转发(转发的结果当然就是丢弃数据报),而不再给源目的地发送ICMP不可达消息。这在路由摆动比较频繁的情况下也可以使用,不至于影响到其它路由器,而仅仅只是把摆动限制在自己身上。
2.2&在IP策略中的使用
某些情况,我们也可能采取某些IP转发的策略,像,进行源地址的路由等。在这些情况下,我们可能需要转发一些符合条件数据,而丢弃一些不符合条件的数据。有些情况下,比如源地址的路由等,可以通过访问列表解决,但有些特殊情况下,用访问列表是解决不了的,比如,我们在以太网接口上过滤1500字节的数据,即如果数据报的长度超过了1500,我们可以丢弃。该需求可以通过IP策略解决,如下:
1、配置一个路由影像(ROUTE-MAP),如下:
(router-config)#route-map&Deny_1500&permit&100
&#8203;(router-route-map)#match&length&1500
&#8203;(router-route-map)#set&interface&NULL0(router-route-map)#exit
2、到接口的模式下,实施IP的策略,如下:
(router-config-if)#ip&policy&route-map&Deny_1500
完成这样配置后,所有以太网接口上都将收到的1500字节的数据帧过滤掉。
RIP&v2&中的使用
路由器会提示如下信息:
“Summary&mask&must&be&greater&or&equal&to&major&net”
显示的提示信息表明汇总后的掩码升序必须要大于或等主类网络的掩码长度,因为”22&24”,所以不能汇总。
所以,RIPv2不支持CIDR汇总,但是可以传递CIDR汇总。
解决方案如下:
(1)用静态路由发布被汇总的路由
R4(config)#ip&route&192.168.96.0&255.255.252.0&null0
(2)将静态路由重分布到RIP网络中
R4(config)#router&rip
R4(config-router)#redistibute&static&&//将静态路由重分布到RIP网络中
R4(config-router)#no&network&192.168.96.0
R4(config-router)#no&network&192.168.97.0
R4(config-router)#no&network&192.168.98.0
R4(config-router)#no&network&192.168.99.0
(3)在路由器R1上查看路由表
鍙堝張鐨勬垚闀
博客等级:
博客积分:0
博客访问:30,067
关注人气:0
荣誉徽章:查看:3755|回复:8
中级工程师
黑洞路由现在知道是:防止路由环路的;吸收无用路由,让其有来无回;
但路由黑洞是什么呢?还请高手指点~~
~~开始疯狂的实验~~
& && && &&&在路上
最有价值午饭
黑到不该黑的路由,就是路由黑洞?
我瞎猜的,等高手解释。
想法一样,哈哈
思 科 技 术
黑洞就是做路由汇总时候引入的一个概念
比如你有好多个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_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
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***的最好办法。
  相当于洪水来临时,在洪水途经的路上附近挖一个不见底的巨大深坑,然后将洪水引入其中。
  黑洞路由最大的好处是充分利用了路由器的包转发能力,对系统负载影响非常小。
  在路由器中配置路由黑洞完全是出于安全因素,设有黑洞的路由会默默地抛弃掉数据包而不指明原因。
  一个黑洞路由器是指一个不支持PMTU且被配置为不发送“Destination Unreachable--目的不可达”回应消息的路由器。
  可以这样看:
  如果一个路由器不支持PMTU并且配置为不发送ICMP Destination Unreachable消息数据包,那么源主机可能发送一个永远得不到路由的大数据包。因为路由器没有给源主机发回应消息,主机不能确定PMTU就是问题 的所在。但如果源主机端启用了PMTU,则源主机在重试几次大的MTU之后,如果还收不到路由器的应答,那源主机自动将PMTU设置为576bytes.
  在Windows 2000下PMTU启用设置是---HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  EnablePMTUBHDetect REG_DWORD 0(默认禁用)或1(启用)
  在Windows XP下也可以试一下。
  (NOTE:PMTU--Path Maximum Transfer Unit是指当一个要发送的数据包的大小与当前路径中的最小的MTU值一样)
现在的努力 、
是为了实现小时候吹过的牛逼 !!
初级工程师
路由黑洞就是路由都指向了一个路由器,而这台路由器没路由出去。所有的路由都指向了这台路由器。这就是路由黑洞。明白么。可以这么理解所有人都把东西给了你,而你没有给别人。
助理工程师
版主讲得很清晰,本来我也没这概念的,但现在懂一点点了^_^
中级工程师
引用:原帖由 user_cisco 于
22:02 发表
黑洞就是做路由汇总时候引入的一个概念
比如你有好多个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谢谢啦,这一段很有用喔,我明白了。。。。
必须得给你奖励,呵呵~~
~~开始疯狂的实验~~
& && && &&&在路上
中级工程师
一个是路由目的,一个是路由条目
助理工程师
我觉得是路由可达,但数据包不可达,导致死循环Javascript 已禁用
请启用 JavaScript,然后刷新页面
{{search404Captions.content404Description}}
请启用 Cookies,然后刷新页面
CV: {{ getCv() }}

我要回帖

更多关于 静态黑洞路由 的文章

 

随机推荐