EIGRP OSFP 利用NULL0接口防止路由環路 Loopback Null0接口揭祕

在EIGRP中,只要發生總結就會在路由表中自動產生一條指向NULL0的路由條目,這條路由的直接意思是:匹配這條路由的數據包會被路由器丟掉。它的目的是爲了避免在某些情況下產生路由環路。

  以第三四學期的中文書P86中的圖4-15爲例做個說明:

  假設RTC向RTD發送總結路由2.1.0.0/16,RTD收到後在自己的路由表中添加相應的條目。到此爲止一切正常,看不出產生一條指向NULL0的路由條目的用處。但是當被RTC所總結的具體路由出現故障時就會遇到問題。(圖中沒有)不妨假設RTC的左側本來有4個子網網段:2.1.0.0/24、 2.1.1.0/24、2.1.2.0/24、2.1.3.0/24(精確總結應該總結爲2.1.0.0/22,但以書中的2.1.0.0/16並不影響我們討論這個問題),如果某一段時間2.1.1.0/24這個網段發生故障,比如接口down了,那麼在RTC上會立即有所反映,RTC上關於 2.1.1.0/24的直連路由消失,同時我們知道彙總路由有這樣一個特點:被總結的路由中哪怕只有一條是正常的,彙總路由都不會發生變化,也就是說僅僅 RTC的左側的2.1.1.0/24這個網段失效RTD並不會有所察覺,它的路由表項2.1.0.0/16仍然存在。這時如果RTD收到一個目的地址爲 2.1.1.0/24網段的數據包它會把它送到RTC上,而RTC接着查看自己的路由表發現沒有2.1.1.0/24這個網段的路由(原因如前所說網段失效後直連路由消失),這樣RTC會把這個數據包丟掉。到此爲止還是看不出產生一條指向NULL0的路由條目到底有何用處。

  但是在前面我們假設的條件下,當RTC上存在一條缺省路由指向RTD時情況就有所不同了,RTC發現沒有2.1.1.0/24這個網段的路由之後,它會按照缺省路由把目的地址爲2.1.1.0/24網段的數據包再送回到RTD上,這樣就產生了路由環路。這類數據包會反覆在RTC和RTD上傳送,直到TTL =0爲止。這樣會佔用RTC和RTD之間線路的帶寬,很沒有必要,而在發生總結的路由器上產生一條2.1.0.0/16 is a summary, Null0 的路由就會打斷這個環路,因爲在缺省路由生效之前,目的地址爲2.1.1.0/24網段的數據包符合2.1.0.0/16 Null0這條路由,因此這類數據包會被RTC丟掉。


  總結:當發生彙總的路由器上存在缺省路由時,指向NULL0的路由條目可以幫助避免產生環路。

  目前高版本的IOS中,類似EIGRP這類高級路由協議(例如OSPF等)在發生總結時都會自動產生指向NULL0的路由條目。而明白了這個原理之後,對於RIP和IGRP這類協議也可以通過手工設置靜態路由的方式(最後的接口直接寫NULL0)實現相同的功能。

 

Loopback、Null0接口揭祕

Loopback、Null0接口揭祕

Loopback接口
Loopback接口簡介
Loopback接口是虛擬接口,大多數平臺都支持使用這種接口來模擬真正的接口。這樣做的好處是虛擬接口不會像物理接口那樣因爲各種因素的影響而導致接口被關閉。事實上,將Loopback接口和其他物理接口相比較,可以發現Loopback接口有以下幾條優點:
Loopback接口狀態永遠是up的,即使沒有配置地址。這是它的一個非常重要的特性。
Loopback接口可以配置地址,而且可以配置全1的掩碼--這樣做可以節省寶貴的地址空間。
Loopback接口不能封裝任何鏈路層協議。
對於目的地址不是loopback口,下一跳接口是loopback口的報文,路由器會將其丟棄。對於CISCO路由器來說,可以配置[no] ip unreachable命令,來設置是[否]發送icmp不可達報文,對於VRP來說,沒有這條命令,缺省不發送icmp不可達報文 。
Loopback接口的應用
基於以上所述,決定了Loopback接口可以廣泛應用在各個方面。其中最主要的應用就是:路由器使用loopback接口地址作爲該路由器產生的所有IP包的源地址,這樣使過濾通信量變得非常簡單。
在遠程訪問中的應用
使用telnet實現遠程訪問。
配置telnet,使從該路由器始發的報文使用的源地址是loopback地址。配置命令如下:
ip telnet source-interface Loopback0
使用RCMD實現遠程訪問。
配置RCMD,使從該路由器始發的報文使用的源地址是loopback地址。配置命令如下:
ip rcmd source-interface Loopback0
在安全方面的應用
在TACACS+中的應用。
配置TACACS+,使從該路由器始發的報文使用的源地址是loopback地址。配置命令如下:
ip tacacs source-interface Loopback0
tacacs-server host 215.17.1.1
可以通過過濾來保護TACACS+服務器--只允許從LOOPBACK地址訪問TACACS+端口,從而使讀/寫日誌變得簡單,TACACS+日誌紀錄中只有loopback口的地址,而沒有出接口的地址。
在RADIUS用戶驗證中的應用。
配置RADIUS, 使從該路由器始發的報文使用的源地址是loopback地址。配置命令如下:
ip radius source-interface Loopback0
radius-server host 215.17.1.1
auth-port 1645 acct-port 1646
這樣配置是從服務器的安全角度考慮的,可以通過過濾來保護 RADIUS服務器和代理--只允許從LOOPBACK地址訪問RADIUS端口,從而使讀/寫日誌變得簡單,RADIUS日誌紀錄中只有loopback口的地址,而沒有出接口的地址。
在紀錄信息方面的應用
輸出網絡流量紀錄。
配置網絡流量輸出,使從該路由器始發的報文使用的源地址是loopback地址。配置命令如下:
ip flow-export source Loopback0
Exporting NetFlow records Exporting NetFlow
這樣配置是從服務器的安全角度考慮的,可以通過過濾來保護 網絡流量收集--只允許從LOOPBACK地址訪問指定的流量端口。
日誌信息方面。
發送日誌信息到Unix或者Windows SYSLOG 服務器。路由器發出的日誌報文源地址是loopback接口,配置命令如下:
logging source-interface loopback0
這樣配置是從服務器的安全角度考慮的,可以通過過濾來保護 SYSLOG服務器和代理--只允許從LOOPBACK地址訪問syslog端口,從而使讀/寫日誌變得簡單,SYSLOG日誌紀錄中只有loopback口的地址作爲源地址,而不是出接口的地址。
在NTP中的應用
用NTP(網絡時間協議)使所有設備的時間取得同步,所有源於該路由器的NTP包都把Loopback地址作爲源地址。配置如下:
ntp source loopback0
ntp server 169.223.1.1 source loopback 1
這樣做是從NTP的安全角度着想,可以通過過濾來保護NTP系統--只允許從loopback地址來訪問NTP端口。NTP將Loopback接口地址作爲源地址,而不是出口地址。
在SNMP中的應用
如果使用SNMP(簡單網絡管理協議),發送traps時將loopback地址作爲源地址。配置命令:
snmp-server trap-source Loopback0
snmp-server host 169.223.1.1 community
這樣做是爲了保障服務器的安全,可以通過過濾來保護SNMP的管理系統--只允許從Loopback接口來訪問SNMP端口。從而使得讀/寫trap信息變得簡單。SNMP traps將loopback接口地址作爲源地址,而不是出口地址。
在Core Dumps中的應用
如果系統崩潰,有Core dump特性的路由器能夠將內存的映像上傳到指定的FTP服務器。配置Core dumps使用loopback地址作爲源地址。配置命令如下:
ip ftp source-interface loopback 0
exception protocol ftp
exception dump 169.223.32.1
這樣的做的好處是保證了Core Dump FTP 服務器的安全,通過過濾能夠保護用於core dumps的FTP服務器--只允許從loopback地址訪問FTP端口。
這個FTP服務器必須是不可見的。
在TFTP中的應用
通過TFTP從TFTP服務器配置路由器,可以將路由器的配置保存在TFTP服務器,配置TFTP,將loopback地址作爲源於該路由器的包的源地址。配置命令如下:
ip tftp source-interface Loopback0
這樣做對TFTP服務器的安全是很有好處的:通過過濾來保護存儲配置和IOS映像的TFTP服務器--只允許從loopback地址來訪問TFTP端口,TFTP服務器必須是不可見的。
在IP unnumbered中的應用
應用IP Unnumbered在點到點鏈路上就不需要再配置地址了。配置舉例:
interface loopback 0
ip address 215.17.3.1 255.255.255.255
interface Serial 5/0
ip unnumbered loopback 0
ip route 215.34.10.0 255.255.252.0 Serial 5/0
在Router ID中的應用
如果loopback接口存在、有IP地址,在路由協議中就會將其用作Router ID,這樣比較穩定--loopback接口一直都是up的。
如果loopback接口不存在、或者沒有IP地址,Router ID就是最高的IP地址,這樣就比較危險--只要是物理地址就有可能down掉。
對於CISCO來說,Router ID是不能配置的,對於VRP來說,Router ID可以配置,那麼我們也可以將Loopback接口地址配成Router ID。
配置BGP
在IBGP配置中使用loopback接口,可以使會話一直進行,即使通往外部的接口關閉了也不會停止。配置舉例:
interface loopback 0
ip address 215.17.1.34 255.255.255.255
router bgp 200
neighbor 215.17.1.35 remote-as 200
neighbor update-source loopback 0
Null0接口
Null0接口簡介
Null0口是個僞接口(pseudo-interface),不能配地址,也不能被封裝,它總是up的,但從不轉發或接收任何通信量。
Null0的配置命令
爲指定空接口,在全局配置模式下使用下面命令:
interface null 0
任何命令,只要有接口類型這個參數的都可以使用null0接口。 對於CISCO路由器來說,Null接口唯一一條配置命令是[no] ip unrechable,該命令的作用是設置是[否]發送icmp不可達報文,對於VRP來說,沒有這條命令,缺省不發送icmp不可達報文 。
Null0接口的應用
Null0接口從不轉發或接收任何通信量,對於所有發到該接口的通信量都直接丟棄,由於它的這個特徵,使它被廣泛應用。
防止路由環
null接口最典型的使用是用來防止路由環。例如,EIGRP在聚合一組路由時,總是創建一條到NULL接口的路由。
舉例如下:
如圖所示,一臺CISCO AS5200通過ISDN爲多個遠端站點路由器提供接入服務。在ISDN連接期間通過RADIUS創建到遠端局域網的路由。在CISCO AS5200有一條到網關路由器的靜態路由,網關路由器通過CISCO AS5200有靜態路由到遠端局域網,還有到Internet的連接。

當ISDN連接down掉時,從Internet向遠端站點傳送的包就會走靜態路由到CISCO AS5200,而CISCO AS5200會將流量再返回給網關路由器--因爲CISCO AS5200已經沒有到遠端局域網的路由了。網關路由器再將包發給CISCO AS5200。這個過程會一直重複到TTL計數器超時。由此產生的“包洪水”會使CPU極爲繁忙,利用率達到98%以上,從而使遠端路由器不能再建連接,直到“風暴”停止。
配置下一跳是null0,目的地址是遠端局域網的浮動靜態路由命令如下:
ip route 192.168.10.0 255.255.255.0 Null0 200
除非ISDN連接是UP的,否則從網關轉發到Cisco AS5200的包會被丟棄。如果連接是UP的,通過RADIUS會創建一條更優的路由,流量也會正常。CPU的負擔會驟然降低,路由器能夠正常工作。
用於安全方面
null0接口提供了過濾通信量的一個可選的方法,可以通過將不想要的通信量引到空接口,來避免過分涉及訪問列表的使用。下面對訪問列表和null0做一下比較。
null0和訪問列表都可以用於過濾通信量,這兩種用法相比,各有裨益。
1、使用null0配置簡單,只要將不想要的通信量的下一跳接口配製成null0就可以了,當路由器收到報文時,直接查找轉發表,發現下一跳是null0,不做任何處理,直接丟棄。而如果使用訪問列表,首先要配置規則,然後將它應用到接口,當路由器收到報文時,要首先查找訪問列表的隊列,如果是deny的,就直接扔掉,如果是permit的,還要查找轉發表。所以對比起來,應用null0效率要高,速度要快。
舉例如下:
某路由器不希望收到目的是131.1.0.0/16的通信量。
用null0實現,只要配置ip route 131.1.0.0 255.255.0.0 null 0就可以了。如果用訪問列表實現,就要先配置一條acl規則如下:access-list 100 deny any 131.1.0.0 0.0.255.255,然後將這條規則在路由器的所有接口上應用。
2、null0不能細化通信量,它面向的對象是整個路由器,而訪問列表是可以面向接口的,如果細緻到面向接口的通信量,null0就不能做到了。
舉例如下:
某路由器不希望在接口s3/1/0收到目的是131.1.0.0/16的通信量。
用null0是不能實現的,只能通過配置acl規則,然後將其應用到接口s3/1/0。

用於BGP的負載分擔

用於防止路由振盪
在IP網絡規劃的比較好時
在一個AS內部用的是IGP,AS之間用的是BGP,不推薦在BGP中將IGP的路由redistribute,因爲IGP的路由不穩定,可能會導致路由振盪,因爲Null0接口是永遠up的,所以可以通過以下配置來將IGP路由發佈出去:
ip route ip_address mask null0
router bgp as_number
network ip_address mask mask
這樣可以防止路由振盪!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章