摘要:在網絡維護中,有一種常常被技術人員忽視的網絡故障叫“路由環路”,路由環路也會跟其它網絡故障一樣占用網絡帶寬,消耗設備資源。黑洞路由能很好地解決路由環路問題,而且比用ACL系統負載更小。
關鍵詞:路由環路;黑洞路由
1???? 前言
中原通信網絡結構分二層和三層,二層就是簡單的VLAN透傳,三層有OSPF動態路由協議和RIP協議。OSPF在寬帶數據核心網和傳輸環網中使用,而大部分專網更多使用的是RIP協議中的靜態路由,畢竟網絡結構簡單,源地址到達目標地址路由躍點數不超過5跳。
在網絡維護中,有一種常常被技術人員忽視的網絡故障叫“路由環路”,因為寬帶數據核心網采用動態路由協議居多,OSPF的鏈路狀態算法不會產生路由環路,只有RIP采用距離向量協議的靜態路由才會發生,所以很少有人留意這個問題,但路由環路也會跟其它網絡故障一樣占用網絡帶寬,消耗設備資源。
那么路由環路是如何產生的呢?這是一種在網絡邊界做匯總回程路由的時候出現的現象,有一些網段并不在內網中存在,但是又包含在匯總后的網段中,如果在這個匯總的邊界設備上同時還配置了缺省路由,就可能出現這個問題。這時,如果有數據包發向那些不在內網的網段(但是又包含在匯總網段)所在的路由器,根據最長匹配原則,并沒有找到對應的路由,只能根據默認路由又回到原來的路由器,這就形成了環路,直到TTL值超時才丟棄,然后如此反復。這樣用戶的數據包就不停在網絡上循環發送,最終造成網絡資源的嚴重浪費。
2???? 何為黑洞路由?
黑洞路由主要是指指向null接口的路由,null接口是一個虛擬的接口無法被配置IP地址,它是將所有無關路由吸入其中,使它們有來無回的路由,是需要主動建立的路由條目。轉發到該接口上的數據包都會被丟掉,所以對于所有可能產生路由回路的路由都加上一條黑洞路由。
如果同樣的功能用ACL(地址訪問控制列表)實現,則流量增大時CPU利用率會明顯增加。所以,設置黑洞路由一直是解決固定DOS攻擊的最好辦法。相當于洪水來臨時,在洪水途經的路上附近挖一個不見底的巨大深坑,然后將洪水引入其中。黑洞路由最大的好處是充分利用了路由器的包轉發能力,對系統負載影響非常小。
3???? 黑洞路由在星形網絡中的應用
3.1? 配置R1,R2,R3,R4及loopback口
R1:
interface Ethernet0/0/0
ip address13.1.1.1255.255.255.0
#
interface LoopBack0
ip address10.1.1.1255.255.255.0
#
ip route-static10.1.0.0255.255.0.013.1.1.3
ip route-static34.1.1.0255.255.255.013.1.1.3
此外、還有R2、R3、R4
3.2? 斷開R2和R3之間的鏈路,用R4路由跟蹤R2
在R3的接口斷開之后,當R4上ping10.1.2.1,R4上會根據第四條路由去R3,到R3后查詢第二條路由表之后是到R4的,如此循環往復就出現了環路。wireshark抓包結果:ping5個包,但是wireshark抓包抓取了1280個包。
3.3? 構建靜態黑洞路由后的結果
[r3]ip route-static10.1.0.016NULL0
traceroute to10.1.2.1(10.1.2.1),max hops:30,packet length:40,pressCTRL_C
to break
正常黑洞路由的掩碼要比R3上的這條[R3]ip route-static10.1.2.0255.255.255.023.1.1.2的路由的掩碼要長,因為根據路由器查看路由表的最長匹配原則,掩碼越長越優先匹配。即使R2和R3的斷了的接口恢復了,發往10.1.0.0/16的報文也不會再匹配黑洞路由,因為黑洞路由的掩碼比R2上的網段的路由掩碼要短。
4???? 黑洞路由在防火墻NAT中的應用
NAT地址池地址是202.1.1.10,防火墻與路由器互聯接口地址的掩碼是30位,與NAT地址池地址不在同一網段。防火墻上配置了一條缺省路由,下一跳是202.1.1.2,這樣就能把私網PC訪問公網Server的報文送到路由器。為了保證公網Server的回程報文能夠順利到達防火墻,路由器上還要配置了一條到NAT地址池地址的路由。
正常情況下,私網PC訪問公網上的服務器Server,生成會話表,源地址也進行了轉換,業務很正常。因為NAT地址池只有在轉換私網地址的時候才會用到,也就是說,私網PC必須先發起訪問請求,防火墻收到該請求后才會為其轉換地址,NAT地址池地址并不對外提供任何單獨的服務。所以當公網PC主動訪問NAT地址池地址時,報文到達防火墻后,無法匹配會話表,防火墻肯定就會把報文丟棄了。如果在防火墻的GE0/0/1接口抓包,然后再次在公網PC上執行ping202.1.1.10命令發送一個ping報文。
抓到了大量的ICMP報文,而且報文的TTL值逐一遞減,直到變為1。TTL是報文的生存時間,每經過一臺設備的轉發,TTL的值減1,當TTL的值為0時,就會被設備丟棄。這說明公網PC主動訪問NAT地址池地址的報文,在防火墻和路由器之間相互轉發,直到TTL變成0之后,被最后收到該報文的那臺設備丟棄。
(1)???? 路由器收到公網PC訪問NAT地址池地址的報文后,發現目的地址不是自己的直連網段,因此查找路由,發送到防火墻。
(2)???? 防火墻收到報文后,該報文不屬于私網訪問公網的回程報文,無法匹配到會話表,同時目的地址也不是自己的直連網段(防火墻沒有意識到該報文的目的地址是自己的NAT地址池地址),只能根據缺省路由來轉發。因為報文從同一接口入和出,相當于在同一個安全區域流動,缺省情況下也不受安全策略的控制,就這樣報文又從GE0/0/1接口送出去了。
(3)???? 路由器收到報文后,查找路由,還是發送至防火墻,如此反復。
5???? 總結
如果不處理這種路由環路,無數的報文就會在防火墻和路由器之間循環轉發,占用鏈路帶寬資源,同時防火墻和路由器將會消耗大量的系統資源來處理這些報文,就可能導致無法處理正常的業務。當防火墻上NAT地址池地址和公網接口地址不在同一網段時,必須配置黑洞路由,避免在防火墻和路由器之間產生路由環路。
6???? 結論
路由環路在實際的網絡組網和維護中時有出現,通過設備日志通??床怀鰜恚砻嫔纤坪鯇I務沒啥影響,但環路對網絡和設備的資源消耗是實實在在存在的。從網絡精細化管理的角度,路由環路必須消除,如果遇到大數據量請求或者有人惡意DDOS攻擊,勢必會造成網絡鏈路擁塞,從而導致業務崩潰。黑洞路由的配置并不復雜,但關鍵是要搞清網絡結構,適時使用,徹底消除網絡隱患。
作者簡介:
尹衛峰(1972年12月出生),男,工程師,從事油田通信網絡技術工作.