關於缺省路由傳遞問題的探討(ip default-network、ip default-gateway等)
1、Ip default-gateway
僅在路由器關閉路由功能的時候(no ip routing)有效;
路由器在boot模式下,做軟件升級的時候,由於ip routing也是關閉的,因此在必要時該命令也會用到
2、Ip default-network
當使用Ip default-network在本地指一個網絡時,這個網絡號如果在路由表中存在,那麼路由器會將該網絡指定爲缺省網關
實驗1
完成基本的IP配置,
R2上 ip route 192.168.1.0 255.255.255.0 172.16.12.1 // 路由表中有了標記爲S條目
Ip default-network 192.168.1.0
路由表:
Gateway of last resort is 172.16.12.1 to network 192.168.1.0
S* 192.168.1.0/24 [1/0] via 172.16.12.1
Ip default-network 將192.168.1.0標記爲缺省路由,而去往該網絡的下一跳172.16.12.1即成爲R2的缺省網關
如此一來,R2ping 1.1.1.1就能通了
實驗2
完成基本的IP配置,然後在R2上
ip route 172.16.3.0 255.255.255.0 172.16.12.3
ip default-network 172.16.3.0
查看R2的路由表:
S 172.16.0.0/16 [1/0] via 172.16.3.0 // 出來一條彙總路由,而不是缺省路由
S 172.16.3.0/24 [1/0] via 172.16.23.3
R2 show run後發現:
ip default-network 172.16.3.0 變成了:ip route 172.16.0.0 255.255.0.0 172.16.3.0
這是因爲ip default-network 是有類的,因此如果使用該命令標記一個子網,實際上路由器會安裝主類路由進路由表
因此不會產生任何缺省路由。所以這時候就在上面的基礎上,由於產生了172.16.0.0的路由,因此再使用(二次使用)
ip default-network 172.16.0.0 將172.16.0.0指定爲缺省路由(172.16.0.0在路由表中已經有條目了),這樣一來路由表:
Gateway of last resort is 172.16.3.0 to network 172.16.0.0
* 172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
S* 172.16.0.0/16 [1/0] via 172.16.3.0
S 172.16.3.0/24 [1/0] via 172.16.23.3
如此R2就能ping通3.3.3.3
實驗3
前面是使用靜態路由,如果使用動態路由協議,那麼情況就不太一樣了
例如IGRP或EIGRP,ip default-network 命令指定的網絡就必須是通過IGRP或EIGRP獲取到的(宣告、學習或重發布)
如果是RIP,ip default-network命令指定的網絡則無需被顯式的宣告進RIP,且一旦缺省網關被指定,RIP會發布一條默認路由(0.0.0.0/0)進RIP,傳遞給其他路由器。
例如R1、R2、R3運行RIP,在R1上開loopback 192.168.1.0/24
RIP只宣告直連鏈路,在R1上ip defaut-network 192.168.1.0 ,則會傳遞0.0.0.0的默認路由進RIP,R2R3都會學習到
總結
如果使用ip default-network指定了多個候選缺省路由,那麼擁有最低AD的將會成爲缺省路由,並且設定爲缺省網關(gateway of last resort),如果AD都相等,那麼show ip route 第一個顯示的,就作爲缺省網關。如果同時使用ip defaut-network及ip route 0.0.0.0 0.0.0.0,且ip defaut-network指定的網絡爲靜態路由配置的,那麼ip defaut-network的優先,並且成爲缺省網關 gateway of last resort。但如果ip defaut-network指定的網絡是學習自動態路由協議,則ip route 0/0的優先。
更詳細的內容,可至CISCO官網查閱文檔: