路由黑洞一般是在網絡邊界做匯總回程路由的時候產生的一種不太愿意出現的現象,就是匯總的時候有時會有一些網段并不在內網中存在,但是又包含在匯總后的網段中,如果在這個匯總的邊界設備上同時還配置了缺省路由,就可能出現一些問題。這時,如果有數據包發向那些不在內網出現的網段(但是又包含在匯總網段)所在的路由器,根據最長匹配原則,并沒有找到對應的路由,只能根據默認路由又回到原來的路由器,這就形成了環路,直到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
下一篇:軟路由中VPN配置及應用