轉發數據包是路由器的最主要功能。路由器轉發數據包時需要查找路由表,管理員可以通過手工的方法在路由器中直接配置路由表,這就是靜態路由。雖然靜態路由不適合于在大的網絡中使用,但是由于靜態路由簡單、路由器負載小、可控性強等原因,在許多場合中還經常被使用。
路由器在轉發數據時,要先在路由表(routing table)中查找相應的路由。路由器有這么三種途徑建立路由:
- 直連網絡:路由器自動添加和自己直接連接的網絡的路由
- 靜態路由:管理員手動輸入到路由器的路由
- 動態路由:由路由協議(routing protocol)動態建立的路由
靜態路由的缺點是不能動態反映網絡拓撲,當網絡拓撲發生變化時,管理員就必須手工改變路由表;然而靜態路不會占用路由器太多的 CPU 和 RAM 資源,也不占用線路的帶寬。如果出于安全的考慮想隱藏網絡的某些部分或者管理員想控制數據轉發路徑,也會使用靜態路由。在一個小而簡單的網絡中,也常使用靜態路由,因為配置靜態路由會更為簡捷。
各廠商配置靜態路由命令有所差異,包括各操作系統,但是原理都是一樣的,所以建議學習還是以掌握原理為主,命令操作啥的只是查找相關手冊或百度一下的事情了,這里以思科命令為例,格式如下:
ip route 目的網絡 掩碼 { 網關地址 | 接口 }
例子:
ip route 192.168.1.0 255.255.255.0 s0/0 ip route 192.168.1.0 255.255.255.0 12.1.1.2
在路由上使用“show ip route”命令查看路由表

路由表
在輸出中,首先顯示路由條目各種類型的簡寫,如:“C”為直連網絡,“S”為靜態路由。以帶下劃線的路由為例,“R”表示這條路由是“RIP”協議學習得到的,“10.2.0.0”是目的網絡,“[120/1]”是管理距離/度量值,“via 10.1.0.2”是指達到目的網絡的下一跳路由器的IP地址,“00:00:21”是指路由器最近一次得知路由到現在的時間,“Serials 0/0”是指到達下一跳應從哪個端口出去。
管理距離(Administrative Distance,AD):用來表示路由的可信度,路由器可能從多種途徑獲得同一路 由,例如:一個路由器要獲得“10.2.0.0/24”網絡的路由,可以來自動態路由RIP,或者OSPF,也可以是靜態路由。不同途徑獲得的路由可能采取不同的路徑到達目的網絡,為了區別它們的可信度,用管理距離加以表示。路由表中管理距離值越小說明路由的可靠程度越高,靜態路由的管理距離為 1,說明手工輸入的路由優先級高于其他的路由。

路由協議的默認管理距離
度量值(Metric):某一路由協議判別到目的網絡的最佳路徑的方法。當一個路由器有多條路徑到達某一目的網絡時,路由協議必須判斷其中的哪一條是最佳的并把它放到路由表中,路由協議會給每一條路徑計算出一個數,這個數就是度量值,通常這個值是沒有單位的。度量值越小,這條路徑越佳。
靜態路由的主要特點
其實就因為靜態路由的配置比較簡單,決定了靜態路由也包含了許多特點。可以說靜態路由的配置全由管理員自己說了算,想怎么配就怎么配,只要符合靜態路由配置命令格式即可,因為靜態路由的算法全在管理員人思想和對靜態路由知識的認識中,并不是由路由器IOS系統來完成的。在配置和應用靜態路由時,我們應當全面地了解靜態路由的以下幾個主要特點,否則你可能在遇到故障時總也想不通為什么。
1.手動配置
靜態路由需要管理員根據實際需要一條條自己手動配置,路由器不會自動生成所需的靜態路由的。靜態路由中包括目標節點或目標網絡的IP地址,還可以包括下一跳IP地址(通常是下一個路由器與本地路由器連接的接口IP地址),以及在本路由器上使用該靜態路由時的數據包出接口等。
2.路由路徑相對固定
因為靜態路由是手動配置的,靜態的,所以每個配置的靜態路由在本地路由器上的路徑基本上是不變的,除非由管理員自己修改。另外,當網絡的拓撲結構或鏈路的狀態發生變化時,這些靜態路由也不能自動修改,需要網絡管理員需要手工去修改路由表中相關的靜態路由信息。
3.永久存在
也因為靜態路由是由管理員手工創建的,所以一旦創建完成,它會永久在路由表中存在的,除非管理員自己刪除了它,或者靜態路由中指定的出接口關閉,或者下一跳IP地址不可達。
4.不可通告性
靜態路由信息在默認情況下是私有的,不會通告給其它路由器,也就是當在一個路由器上配置了某條靜態路由時,它不會被通告到網絡中相連的其它路由器上。
5.單向性
靜態路由是具有單向性的,也就是它僅為數據提供沿著下一跳的方向進行路由,不提供反向路由。所以如果你想要使源節點與目標節點或網絡進行雙向通信,就必須同時配置回程靜態路由。經常發現這樣的問題,就是明明配置了到達某節點的靜態路由,可還是ping不通,其中一個重要原因就是沒有配置回程靜態路由。

如圖所示,如果想要使得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作為下一跳地址);
ip route 10.16.3.0 255.255.255.0 10.16.2.2
② :在R2路由器上配置到達PC1的回程靜態路由(以PC1 10.16.1.1/24作為目標節點,以B節點IP地址10.16.2.1/24作為下一跳地址),以提供Ping過程回程ICMP消息的路由路徑。
ip route 10.16.1.0 255.255.255.0 10.16.2.1
6.接力性
如果某條靜態路由中間經過的跳數大于1(也就是整條路由路徑經歷了三個或以上路由器結點),則必須在除最后一個路由器外的其它路由器上依次配置到達相同目標節點或目標網絡的靜態路由,這就是靜態路由的“接力”特性,否則僅在源路由器上配置這條靜態路由還是不可達的。就像你要從長沙到北京去,假設中間要途經的站點包括:武漢-鄭州-石家莊,可人家只告訴你目的地是北京,以及從長沙出發的下一站是武漢。對于一個沒有多少旅游經驗的人來說,你是不可能知道到了武漢后又該如何走,必須有人告訴你到了武漢后再怎么走,到了鄭州后又該怎么走,……。這就是“接力性”。

如圖所示是一個三個路由器串聯的簡單的網絡,各個路由器節點及PC機的IP地址均在圖中進行了標注,PC1已配置好指向R1的A節點地址的網關,現假設要使PC1能ping得通PC2,則需要在各路由器上配置以下四條靜態路由(兩條正向,兩條回程):
① :在R1路由器上配置了到達PC2的正向靜態路由(以PC2 10.16.4.0/24作為目標節點,以C節點IP地址10.16.2.2/24作為下一跳地址);
ip route 10.16.4.0 255.255.255.0 10.16.2.2
② :在R2路由器上配置了到達PC2的正向接力靜態路由(同樣以PC2 10.16.4.0/24作為目標節點,以E節點IP地址10.16.3.2/24作為下一跳地址);
ip route 10.16.4.0 255.255.255.0 10.16.3.2
③ :在R3路由器上配置到達PC1的回程靜態路由(以PC1 10.16.1.1/24作為目標節點,以D節點IP地址10.16.3.1/24作為下一跳地址),以提供Ping通信回程ICMP消息的路由路徑。
ip route 10.16.1.0 255.255.255.0 10.16.3.1
④ :在R2路由器上配置到達PC1的回程接力靜態路由(同樣以PC1 10.16.1.1/24作為目標節點地址,以B節點IP地址10.16.2.1/24作為下一跳地址),以提供Ping通信回程ICMP消息的接力路由路徑。
ip route 10.16.1.0 255.255.255.0 10.16.2.1
7.遞歸性
許多人一直存在一個錯誤的認識,那就是認為靜態路由的“下一跳”必須是與本地路由直接連接的下一個路由器接口,其實這是片面的。靜態路由沒有建立鄰接關系的Hello包,靜態路由也不會被通告鄰居路由器,所以它的下一跳是路徑中其它路由器中的任一一個接口,只是能保證到達下一跳就行了。這就是靜態路由的“遞歸性”。如圖上圖網絡中,如果要在R1上配置一條到達R3所連接的10.16.4.0/24靜態路由。按照正常思維的話,其下一跳應該是R2的C接口。不過,其實也可以是R2的D接口,或者R3的E接口,或者F接口。只是通過其它路由能到達這些接口,則這條靜態路由就是成功的。
8.優先級較高
因為靜態路由明確指出了到達目標網絡,示路由的或者目標節點的路由路徑,所以在所有同目的地址的路由中,靜態路由的優先級是除“直連路由”外最高的,也就是如果配置了到達某一網絡或者某一節點的靜態路由,則優先采用這條靜態路由,只有當這條靜態路由不可用時才會考慮選擇其它的路由。
9.適用小型網絡
靜態路由一般適用于比較簡單的小型網絡環境,因為在這樣的環境中,網絡管理員易于清楚地了解網絡的拓撲結構,便于設置正確的路由信息。同時小型網絡所需配置的靜態路由條目不會太多。如果網絡規模較大,拓撲結構比較復雜,則不宜采用靜態路由,因為這樣的配置工作量實在太大,一般要用于動態路由協議實現動態路由。
靜態路由的缺點在于:它們需要在路由器上手動配置,如果網絡結構復雜,或者跳數較多的話,僅通過靜態路由來實現路由,則要配置的靜態路由可能非常多,而且還可能造成路由環路;而且如果網絡拓撲結構發生改變,路由器上的靜態路由必須跟著改變,否則原來配置的靜態路由將可能失效。