靜態路由是什么?
想知道靜態路由,我們首先來說一下路由是什么,路由就是保存在路由表中的條目,用來指示流量的傳輸路徑的,就像是一個指路的標牌,告訴我們要想去目的地接下下我們應該怎么走,如下圖所示。那么靜態路由是什么呢?靜態路由就是我們通過手工的方式添加的路由條目,就像是路邊的標識牌就在那放着,無論前方的路怎么變化,不會改變。動態路由就像是一個導航系統,會根據路況的變化而變化。
靜態路由的配置方法:
ip route ip-address prefix mask {ip-address | interface-type} [distance] [permanent]
高級特性一:路由過濾
首先我先介紹一下拓撲圖,1和2之間的網段為12.1.1.0,1和3之間的網段為23.1.1.0,每台路由器都有一個環回接口和地址,123之間運行rip動態路由協議。對於IOU3來說,只想把1.1.1.1的網段信息給過濾掉,這個時候就可以用到靜態路由的過濾技術了。
當我們的基本路由配置以及rip協議宣告完了之后,我們會在IOU3上看到如下的路由條目(有通過rip協議學到的三個路由):

1 R 1.0.0.0/8 [120/2] via 23.1.1.2, 00:00:00, Ethernet0/0 2 R 2.0.0.0/8 [120/1] via 23.1.1.2, 00:00:07, Ethernet0/0 3 3.0.0.0/32 is subnetted, 1 subnets 4 C 3.3.3.3 is directly connected, Loopback0 5 R 12.0.0.0/8 [120/1] via 23.1.1.2, 00:00:07, Ethernet0/0 6 23.0.0.0/8 is variably subnetted, 2 subnets, 2 masks 7 C 23.1.1.0/24 is directly connected, Ethernet0/0 8 L 23.1.1.3/32 is directly connected, Ethernet0/0
現在我們想通過靜態路由過濾掉1.0.0.0這個網段,只需要在IOU2上面執行下面這條命令,重新查看IOU3上面的路由,就會發現,已經沒有1.0.0.0 這條路由了:
在IOU2上面的操作: IOU2(config)#ip route 1.0.0.0 255.0.0.0 e0/0 12.1.1.1 在IOU3上面的操作: IOU3#clear ip route * IOU3#show ip route
為什么會這樣呢?
對於距離矢量路由協議而言,在路由協議A中將一個接口使用network語句宣告進協議A,會實現該接口對該協議報文的收發。收:會收鄰居傳遞過來的所有路由。發:會發送兩類路由,一就是在使用network宣告的路由,二就是鄰居傳遞過來並且存在路由表中而且協議沒有改變的路由條目。因此,當我們在IOU2上面更改了1.1.1.1這個路由為靜態路由之后,雖然說鄰居傳遞了這個路由,而且路由表中也有,但是協議改變了,該條路由將不是rip協議,而是static協議了(如下路由中前面的標識從R變成了S)所以IOU2 不會轉發此路由條目給IOU3。
沒有寫靜態路由之前的路由條目: R 1.0.0.0/8 [120/1] via 12.1.1.1, 00:00:11, Ethernet0/0 寫了靜態路由之后的路由條目: S 1.0.0.0/8 [1/0] via 12.1.1.1, Ethernet0/0
如果此網絡的動態路由協議是ospf的話,就算是寫了靜態路由也不會實現路由的過濾,因此對於鏈路狀態協議並不是簡單的轉發協議報文來實現路由的傳遞的,它是通過一定的計算過程得到拓撲關系之后傳遞過去的,因此得到如此結論:對於DV IGP(距離矢量的內部網關協議)靜態路由可以通過改變接收路由的協議類型從而實現一定的路由過濾,但是對於LS IGP(鏈路狀態的內部網關協議)而言,靜態路由是無法實現路由過濾的。
高級特性二:永久性(承接上面的拓撲圖,通過permanent參數調整)
對於一般的靜態路由而言,當我們配置的靜態路由下一跳地址不可達或者是出接口down掉的時候,此靜態路由將會從路由器中移除,我們在IOU1上面配置一條去往3.3.3.3的永久性路由(也就是說無論我下一跳地址是否可達或者出接口是否down掉,該路由條目將會一直存在路由表中),這個特性主要運用在按需電路上面。
IOU1(config)#ip route 3.3.3.3 255.255.255.255 e0/0 12.1.1.2 permanent IOU1(config)#inter e0/0 IOU1(config-if)#shutdown 把接口關掉 查看路由表,發現3.3.3.3路由條目依然會存在 IOU1#show ip route 1.0.0.0/32 is subnetted, 1 subnets C 1.1.1.1 is directly connected, Loopback0 3.0.0.0/32 is subnetted, 1 subnets S 3.3.3.3 [1/0] via 12.1.1.2, Ethernet0/0
注意:並不是說這條路由真的刪除不了,當我們重新清除了路由表之后,如果接口還是down掉的話,路由條目將不會出現在路由表中,命令如下:clear ip route *
高級特性三:浮動靜態路由(通過distance參數調整)
如下圖所示,和上面的圖基本一樣,只是在上面加了一個IOU4,主要是為了通過浮動靜態路由實現冗余備份的。
基本的路由配置和連通性就不寫了,主要是在IOU1的浮動靜態路由的配置,當第一條路由條目存在的時候,第二條路由是不生效的,也就是說正常的流量是通過IOU2到IOU3的,但是一般來說配置兩條靜態路由來進行備份的情況並不是很多,因為當我們IOU3和IOU2之間的路徑斷掉之后,是不會影響IOU1里面的靜態路由以及浮動路由的。:
ip route 3.3.3.3 255.255.255.255 Ethernet0/0 12.1.1.2 ip route 3.3.3.3 255.255.255.255 Ethernet0/1 14.1.1.4 50 管理距離是50的,
因此我們通過是通過在路由器之間跑動態路由協議,然后把靜態路由的管理距離調高到達比動態路由協議的管理距離還要高的時候,就可以真正的實現鏈路的冗余備份,因為當IOU2和IOU3之間的鏈路出問題的時候,IOU1會通過動態路由協議知道並刪除相應的路由,此時我們配置的浮動靜態路由就可以生效了。
高級特性四:路由的遞歸查詢(因為我們配置的下一跳可以不是直連網段)
如下圖所示:為什么會出現遞歸查詢,因為對於靜態路由而言,配置的下一跳地址可以不是直連網段,也就是說,當我在IOU1上配置到達3.3.3.3網段的靜態路由的時候,我可以把它的下一跳地址寫成以下方框接口的地址的任何一個(只要是能到達3.3.3.3鏈路上的任何一個地址,不包括1.1.1.1網段內的地址),但是這樣就會產生一個問題,如果我們把下一跳的地址寫成了IOU3的接口地址23.1.1.3的話,就會導致不通,因為對於IOU1而言並不知道23.1.1.3的路由,所以如果我們要進行路由的遞歸查詢的時候,首先要讓我們遞歸的路由可達才行。
首先在IOU1上配置到達4.4.4.4的靜態路由,下一跳為20.1.1.4,:
ip route 4.4.4.4 255.255.255.255 Ethernet0/0 20.1.1.4 這個出接口無論是上面的還是下面都一樣
配置完之后當我們ping 4.4.4.4的時候不通,debug arp發現如下表,這是因為對於pc而言,無論是誰回復給我的arp都會收,但是對於路由器而言,要判斷請求者與被請求者是否在同一網段,如果不在同一網段,是拒絕接受的:
*Aug 8 06:40:43.410: IP ARP: sent req src 10.1.1.1 aabb.cc00.0100, dst 20.1.1.4 0000.0000.0000 Ethernet0/0 *Aug 8 06:40:43.411: IP ARP rep filtered src 20.1.1.4 aabb.cc00.0300, dst 10.1.1.1 aabb.cc00.0100 wrong cable, interface Ethernet0/0 收到了IOU3發送過來的arp,被過濾掉了 *Aug 8 06:40:43.411: IP ARP rep filtered src 20.1.1.4 aabb.cc00.0200, dst 10.1.1.1 aabb.cc00.0100 wrong cable, interface Ethernet0/0. 收到了IOU2發送過來的arp,被過濾掉了
繼續配置IOU1到20.1.1.4的靜態路由
IOU1(config)#ip route 20.1.1.4 255.255.255.255 e0/0 10.1.1.2 配置完靜態路由之后
ping 4.4.4.4會發現收到了arp
IOU1(config)#do ping 4.4.4.4 source 1.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds: Packet sent with a source address of 1.1.1.1 *Aug 8 06:46:01.919: IP ARP: creating incomplete entry for IP address: 20.1.1.4 interface Ethernet0/0 *Aug 8 06:46:01.919: IP ARP: sent req src 10.1.1.1 aabb.cc00.0100, dst 20.1.1.4 0000.0000.0000 Ethernet0/0 *Aug 8 06:46:01.921: IP ARP: rcvd rep src 20.1.1.4 aabb.cc00.0200, dst 10.1.1.1 Ethernet0/0 說明收到了IOU2的mac地址, *Aug 8 06:46:01.921: IP ARP: rcvd rep src 20.1.1.4 aabb.cc00.0300, dst 10.1.1.1 Ethernet0/0..... 說明收到了IOU3的mac地址 Success rate is 0 percent (0/5) 這里ping不通是因為在IOU4上面沒有到達1.1.1.1 的路由,但是對於靜態路由的遞歸查詢的解釋部分已經講完了。