許多讀者朋友錯誤地認為靜態路由很簡單,就一個命令,沒什么好學的。其實這是因為他們根本沒有深入理解靜態路由的工作原理,對于僅有一條靜態路由配置命令中的各參數和選項的含義和使用方法也是一知半解,結果造成的是遇到一些靜態路由故障時無法進行分析,而對于一些靜態路由配置也無法區分是否正確。本文將全面介紹靜態路由的各主要特點,以及Cisco設備中的靜態路由配置命令詳解。
靜態路由的主要特點
其實就因為靜態路由的配置比較簡單,決定了靜態路由也包含了許多特點。可以說靜態路由的配置全由管理員自己說了算,想怎么配就怎么配,只要符合靜態路由配置命令格式即可,因為靜態路由的算法全在管理員人思想和對靜態路由知識的認識中,并不是由路由器IOS系統來完成的。至于所配置的靜態路由是否合適,是否能達到你預期的目的那別當別論。在配置和應用靜態路由時,我們應當全面地了解靜態路由的以下幾個主要特點,否則你可能在遇到故障時總也想不通為什么:
手動配置
靜態路由需要管理員根據實際需要一條條自己手動配置,路由器不會自動生成所需的靜態路由的。靜態路由中包括目標節點或目標網絡的IP地址,還可以包括下一跳IP地址(通常是下一個路由器與本地路由器連接的接口IP地址),以及在本路由器上使用該靜態路由時的數據包出接口等。
路由路徑相對固定
因為靜態路由是手動配置的,靜態的,所以每個配置的靜態路由在本地路由器上的路徑基本上是不變的,除非由管理員自己修改。另外,當網絡的拓撲結構或鏈路的狀態發生變化時,這些靜態路由也不能自動修改,需要網絡管理員需要手工去修改路由表中相關的靜態路由信息。
永久存在
也因為靜態路由是由管理員手工創建的,所以一旦創建完成,它會永久在路由表中存在的,除非管理員自己刪除了它,或者靜態路由中指定的出接口關閉,或者下一跳IP地址不可達。
不可通告性
靜態路由信息在默認情況下是私有的,不會通告給其它路由器,也就是當在一個路由器上配置了某條靜態路由時,它不會被通告到網絡中相連的其它路由器上。但網絡管理員還是可以通過重發布靜態路由為其它動態路由,使得網絡中其它路由器也可獲此靜態路由。
單向性
靜態路由是具有單向性的,也就是它僅為數據提供沿著下一跳的方向進行路由,不提供反向路由。所以如果你想要使源節點與目標節點或網絡進行雙向通信,就必須同時配置回程靜態路由。這在與讀者朋友的交流中經常發現這樣的問題,就是明明配置了到達某節點的靜態路由,可還是ping不通,其中一個重要原因就是沒有配置回程靜態路由。
如圖1所示,如果想要使得PC1(PC1已配置了A節點的IP地址10.16.1.2/24作為網關地址)能夠ping通PC2,則必須同時配置以下兩條靜態路由,具體配置方法在此不作介紹。
靜態路由單向性示例
① :在R1路由器上配置了到達PC2的正向靜態路由(以PC2 10.16.3.2/24作為目標節點,以C節點IP地址10.16.2.2/24作為下一跳地址);
② :在R2路由器上配置到達PC1的回程靜態路由(以PC1 10.16.1.1/24作為目標節點,以B節點IP地址10.16.2.1/24作為下一跳地址),以提供Ping過程回程ICMP消息的路由路徑。(ICMP提供網絡是否可用、數據是否可達信息,并不傳輸數據。)
接力性
如果某條靜態路由中間經過的跳數大于1(也就是整條路由路徑經歷了三個或以上路由器結點),則必須在除最后一個路由器外的其它路由器上依次配置到達相同目標節點或目標網絡的靜態路由,這就是靜態路由的“接力”特性,否則僅在源路由器上配置這么靜態路由還是不可達的。
就像你要從長沙到北京去,假設中間要途經的站點包括:武漢-鄭州-石家莊,可人家只告訴你目的地是北京,以及從長沙出發的下一站是武漢。對于一個沒有多少旅游經驗的人來說,你是不可能知道到了武漢后又該如何走,必須有人告訴你到了武漢后再怎么走,到了鄭州后又該怎么走,……。這就是“接力性”。
如圖2所示是一個三個路由器串聯的簡單的網絡,各個路由器節點及PC機的IP地址均在圖中進行了標注,PC1已配置好指向R1的A節點地址的網關,現假設要使PC1能ping得通PC2,則需要在各路由器上配置以下四條靜態路由(兩條正向,兩條回程):
圖2 靜態路由接力性示例
① :在R1路由器上配置了到達PC2的正向靜態路由(以PC2 10.16.4.0/24作為目標節點,以C節點IP地址10.16.2.2/24作為下一跳地址);
② :在R2路由器上配置了到達PC2的正向接力靜態路由(同樣以PC2 10.16.4.0/24作為目標節點,以E節點IP地址10.16.3.2/24作為下一跳地址);
③ :在R3路由器上配置到達PC1的回程靜態路由(以PC1 10.16.1.1/24作為目標節點,以D節點IP地址10.16.3.1/24作為下一跳地址),以提供Ping通信回程ICMP消息的路由路徑。
④ :在R2路由器上配置到達PC1的回程接力靜態路由(同樣以PC1 10.16.1.1/24作為目標節點地址,以B節點IP地址10.16.2.1/24作為下一跳地址),以提供Ping通信回程ICMP消息的接力路由路徑。
【經驗之談】路由器各端口上所直接連接的各個網絡都是直接互通的,因為它們之間默認就有直連路由,無需另外配置其它路由。也即連接在同一路由器上的各網絡之間的跳數為0。如圖2中R1路由器上連接的10.16.1.0/24和10.16.2.0/24網絡,R2路由器上連接的10.16.2.0/24和10.16.3.0/24網絡,R3路由器上連接的10.16.3.0/24和10.16.4.0/24網絡都是直接互通的。也正因如此,在圖7-3中,PC1要ping通PC2,只需要配置圖中所示的正、反向各兩條靜態路由,而不用配置從R2到R3路由器,以及從R2到R1路由器的靜態路由。
遞歸性
許多讀者一直存在一個錯誤的認識,那就是認為靜態路由的“下一跳”必須是與本地路由直接連接的下一個路由器接口,其實這是片面的。前面說了,靜態路由沒有建立鄰接關系的Hello包,靜態路由也不會被通告鄰居路由器,所以它的下一跳是路徑中其它路由器中的任一一個接口,只是能保證到達下一跳就行了。這就是靜態路由的“遞歸性”。
如圖2所示的網絡中,如果要在R1上配置一條到達R3所連接的10.16.4.0/24靜態路由。按照正常思維的話,其下一跳應該是R2的C接口。不過,其實也可以是R2的D接口,或者R3的E接口,或者F接口。只是通過其它路由能到達這些接口,則這條靜態路由就是成功的。
優先級較高
因為靜態路由明確指出了到達目標網絡,或者目標節點的路由路徑,所以在所有同目的地址的路由中,靜態路由的優先級是除“直連路由”外最高的,也就是如果配置了到達某一網絡或者某一節點的靜態路由,則優先采用這條靜態路由,只有當這條靜態路由不可用時才會考慮選擇其它的路由。
適用小型網絡
靜態路由一般適用于比較簡單的小型網絡環境,因為在這樣的環境中,網絡管理員易于清楚地了解網絡的拓撲結構,便于設置正確的路由信息。同時小型網絡所需配置的靜態路由條目不會太多。如果網絡規模較大,拓撲結構比較復雜,則不宜采用靜態路由,因為這樣的配置工作量實在太大,一般要用于本章后面或者本書后面章介紹的各動態路由協議實現動態路由。
靜態路由的缺點在于:它們需要在路由器上手動配置,如果網絡結構復雜,或者跳數較多的話,僅通過靜態路由來實現路由,則要配置的靜態路由可能非常多,而且還可能造成路由環路;而且如果網絡拓撲結構發生改變,路由器上的靜態路由必須跟著改變,否則原來配置的靜態路由將可能失效。
靜態路由配置命令詳解
當Cisco IOS系統不能建立到達某一目標網絡的動態路由時,你就需要建立對應的靜態路由。靜態路由配置很簡單,就一條命令,但在靜態路由配置中最關鍵的就是7.1.1節介紹的理解靜態路由特性,以及靜態路由配置命令中各可選項和參數的真正含義,否則很可能配置的靜態路由不正確,或者雖然已正確配置了某條靜態路由,仍不能達到你的期望。
在Cisco路由器中,靜態路由的配置很簡單,僅需一條如下全局配置命令:
ip route vrf vrf-name prefix mask {ip-address | interface-type interface-number [ip-address]} [dhcp] [distance] [namenext-hop-name] [permanent | track number] [tag tag]
在Cisco路由器中使用的是ip route命令(在H3C路由器中的靜態路由配置命令為ip static-route命令),其包含了許多參數選項,而且有些參數選項的具體含義一直是許多讀者所模糊的。下面是這些參數選項進行具體解釋。
vrf-name:該靜態路由所作用的VRF(VPN路由轉發)示例名稱,也就是為對應的VPN配置靜態路由。僅在為特定的VRF示例配置靜態路由時才需要指定本參數。
prefix:靜態路由中目標主機或目標網絡的IP地址前綴,也就是靜態路由的目的地址。如果是目標主機或節點,則填上對應主機或節點的IP地址,如果是目標網絡或子網,則是對應網絡或子網的網絡地址。
mask:靜態路由目的地址的掩碼(僅代表路由目標的主機范圍,不能認為等同于“子網掩碼”),不能全以IP地址前綴長度表示。如果目的地址是主機或節點IP地址,則其掩碼必須是255.255.255.255,而不是所在網段的子網掩碼,代表靜態路由的目標僅一臺主機,而不是一個網絡或子網。
ip-address:與下面的“interface-type interface-number”參數一起是二選一參數,指定靜態路由到達目標網絡的下一跳IP地址(也就是下一個路由器與本地路由器連接的接口IP地址)。
interface-type interface-number:與上面的“ip-address”參數一起是二選一參數,指定靜態路由在本地路由器上的出接口(特別注意:這里不是下一跳接口,而是靜態路由在本地路由器上的出接口)的接口類型和接口號。
ip-address:這個參數與上面“interface-type interface-number”參數是一起的,是個可選項。它與前一個“ip-address”參數選項是一樣的,也是指下一跳的IP地址。
dhcp:可選項,啟用DHCP服務器為默認網關(也就是靜態路由中的下一跳)分配IP地址。當你指定一個DHCP服務器來下一跳自動分配IP地址時,你可能還需要指定上面介紹的“出接口”(interface-type interface-number)和下面將要介紹的“管理距離”(distance)參數,但一定沒有指定下一跳IP地址。
distance:可選參數,指定靜態路由的管理距離,在0~255之間(如果靜態路由的下一跳IP地址是本地路由器的出接口的IP地址,則其管理距離為0),靜態路由默認的管理距離為1,無需指定,如果為255則表示該路由不可達。它主要用于在本章后面將要介紹的浮動靜態路由中使用。
【注意】管理距離(administrative distance)是指一種路由協議(包括像RIP、OSPF、IS-IS、EIGRP、BGP等動態路由協議)的路由可信度。每一種路由協議按可靠性從高到低,依次分配一個信任等級(值越小,等級越高),這個信任等級就叫管理距離。靜態路由的默認管理距離為1,是所有路由管理距離最小的,也即靜態路由的可靠性最高。如果你為某條靜態路由指定了非默認的管理距離,則你正標記該靜態路由可以被到達相同目標網絡的動態路由所替代。例如,EIGRP動態路由的默認管理距離為100,如果你配置了一條靜態路由的管理距離大于100,則該條靜態路由將被到達同一目標網絡的EIGRP動態路由所替代。
l name next-hop-name:可選參數,為該靜態路由指定一個下一跳名稱,一般無需配置。但通過這個關鍵字和參數組合允許你在運行配置中以名稱來關聯靜態路由。如果你有幾條靜態路由,你可以通過以它們的不同用途描述來作為這些靜態路由的名稱,以便更容易區分它們。
permanent:可選項,指定該靜態路由在路由表中永久存在,即使對應接口處于關閉狀態。
track number:可選參數,指定一個可用于追蹤對應靜態路由的號碼(代表一個對象,需事先通過track object-numberinterface type numberip routing命令配置要跟蹤的對象號和對應接口的IP路由),取值范圍為1~500。這個關鍵字和參數組合指定對應靜態路由僅當配置跟蹤的對像呈激活狀態時才安裝。
tag tag:(可選)指定一個用于通過路由映射控制路由重發布的匹配標記值(可是一個字符串),以便路由映射時調用。
【注意】從以上靜態路由配置命令參數的介紹可知,凡是在靜態路由中出現了接口,則該接口一定是指本地路由器上的出接口,而不是許多讀者誤認為的下一跳接口,下一跳始終間以IP地址表示的。另外,在一些低檔路由器中,如Cisco SOHO,800系列路由器只支持基本的靜態路由,上述可選項和可選參數可能并不支持。可用no格式的以上命令刪除對應的靜態路由,也可以通過在特權模式下執行show running-configuration | include ip route命令查看配置文件中配置的所有靜態路由。
【示例1】以下示例顯示了如何把到達172.31.0.0網絡的數據包在IP地址為72.31.6.6(此為下一跳IP地址)的路由器上被路由。
ip route 172.31.0.0 255.255.0.0 172.31.6.6
【示例2】以下示例顯示了如何為靜態路由配置管理距離110。在本示例中把到達10.0.0.0網絡的包將在IP地址為172.31.3.4(此為下一跳IP地址)的路由器上被路由,并配置管理距離為110。這樣一來,如果沒有管理距離小于110的動態路由情況下,該靜態路由將有效。
ip route 10.0.0.0 255.0.0.0 172.31.3.4 110
【示例3】以下示例顯示如何把到達192.168.1.0網絡的包通過本地由器Ethernet 0接口(為靜態路由的出接口),再經過下一跳IP地址10.1.2.3被路由出去。但此時如果Ethernet 0接口關閉,則該靜態路由將從路由表中被刪除,直到出接口Ethernet 0重新恢復。
ip route 192.168.1.0 255.255.255.0 Ethernet 0 10.1.2.3
【示例4】以下示例顯示僅在所跟蹤的對象123狀態為激活的情況下安裝以Ethernet 0/1為出接口,IP地址為 10.1.1.242作為下一跳的默認靜態路由。有關默認靜態路由將在本章后面具體介紹。
ip route 0.0.0.0 0.0.0.0 Ethernet 0/1 10.1.1.242 track 123
【示例5】以下示例顯示如何通過dhcp關鍵字分別使兩條配置了出接口ethernet1和ethernet2接口的靜態路由自動從DHCP服務器中獲得下一跳IP地址(掩碼均為255.255.255.255)。
ip route 10.165.200.225 255.255.255.255 ethernet1 dhcp
ip route 10.165.200.226 255.255.255.255 ethernet2 dhcp 20
【示例6】以下示例顯示如何通過name next-hop-name 關鍵字和參數對對靜態路由進行標識,以便區分每條靜態路由。
ip route 172.0.0.0 255.0.0.0 10.0.0.1 name Seattle2Detroit
原文鏈接:http://blog.csdn.net/sky220104/article/details/13510557