網際網路與路由協定 程榮祥 Email: rscheng@mail.ksu.edu.tw 網際網路的網路層協定 一般而言, 網際網路的網路層可分成三個部份 首先是 Internet Protocol,Internet Protocol 定義網路層的封包格式以及定址 (Addressing) 的方式 其次是網路的路由協定, 路由協定負責路徑判斷的部份, 最後則是網路層的錯誤和資訊回報, 也是就網路控制訊息協定 (Internet Control Message Protocol,ICMP) 什麼是路由協定 路由協定是網路上的路由器與路由器之間在轉送封包之前, 決定傳送路徑所使用的一種網路層協定, 路由協定的主要功能就是選擇資料傳送的最佳路徑與決定封包轉送的下個目的地 所謂的路由 (Routing) 指的是網路上的路由器共同執行的一種程序, 執行此程序最主要的目地就是要建立路由表, 依照路由表的內容轉送封包, 而這些用來計算路徑的演算法, 就稱之為路由演算法 (Routing algorithm) 路由協定的分類 路由協定依據路由器之間交換資訊內容之不同, 可分為 (1) 距離向量路由演算法與 (2) 連結狀態路由演算法 連結狀態路由演算法在交換路由訊息時, 路由訊息的內容含有網路整體的拓樸模型與 Link 的完整資訊, 因此路由器可以直接計算由傳送端至目的端之間的最小成本路徑 另一方面, 距離向量路由演算法則經由反覆的計算程序週期性地與相鄰的路由器交換路徑資訊的內容, 種演算法最大的特色就是, 路由器本身並沒有網路拓撲的完整資訊, 但可經由不斷地與相鄰節交換路由訊息來判斷該把封包傳送給那一個相鄰的節點 這種方法雖然較為簡單, 但同時也會消耗許多頻寛在路徑資訊的傳遞上, 而連結狀態路由演算法則是只有在網路拓樸有變化時才會更新路由資訊, 對網路的頻寛消耗較小 距離向量演算法 (Distance Vector Routing Algorithm) 如下圖所示, 距離向量演算法則是一種分散式演算法, 因為路由器會持續地與相鄰節點交換路由訊息 計算路徑, 再與其它相鄰的節點交換路由訊息 在尋找最佳路徑的過程中, 路由器使用路徑的節點距離作為評估最佳路徑的依據 一般而言, 所謂的最佳路徑, 指的就是經過的節點個數 (Hop) 最少的路徑 網路上的許多路由演算法都是屬於這類型, 包括 RIP (Routing information protocol) BGP (Border gateway protocol) 等
路由器 A 路由器 B 路由器 C 路由器 D 路由表 路由表 路由表 路由表 距離向量路由協定最大的特色就是路由器會週期性地使用廣播的方式對鄰近的節點傳送 ( 更新 ) 路由訊息 這在裡我們舉一個例子來說明距離向量演算法運作過程 : 如表一所示, 假設網路上所有的路由器在同一時間開機, 由於路由器尚未和鄰近的節點交換資料, 所以每個路由器的由路表的內容只都有直接連接的網段 : 140.116.70.0 140.116.72.0 140.116.74.0 140.116.76.0 Fa0 Gi0 Gi0 Gi1 Gi0 Fa0 路由器 A 路由器 B 路由器 C 表一 : 各個路由器的路由表容 路由表 A 網段 介面距離 140.116.70.0 Fa0 0 140.116.72.0 Gi0 0 路由表 B 網段 介面距離 140.116.72.0 Gi0 0 140.116.74.0 Gi1 0 路由表 C 網段 介面距離 140.116.74.0 Gi0 0 140.116.76.0 Fa1 0 如表二所示, 在經過第一次的交換後, 路由器開始更新路由表的內容, 將新學習到的路徑加入路由表中 表二 : 經過一輪交換後的路由表內容 路由表 A 網段 介面距離 140.116.70.0 Fa0 0 140.116.72.0 Gi0 0 140.116.74.0 Gi0 1 路由表 B 網段 介面距離 140.116.72.0 Gi0 0 140.116.74.0 Gi1 0 140.116.70.0 Gi0 1 140.116.76.0 Gi1 1 路由表 C 網段 介面距離 140.116.74.0 Gi0 0 140.116.76.0 Fa1 0 140.116.72.0 Gi0 1 如表三所示, 在路由協定啟動後, 路由器會藉由定期地和鄰近的節點交換路由訊息, 以修正自己的路由表, 整個網路的狀況因而能夠漸漸地傳遞到每個路由器上, 隨著路由表的資料逐漸完備, 路由器就能擁有整體網路的路由資訊 : 表三 路由表 A 路由表 B 路由表 C
網段 介面距離 140.116.70.0 Fa0 0 140.116.72.0 Gi0 0 140.116.74.0 Gi0 1 140.116.76.0 Gi0 2 網段 介面距離 140.116.72.0 Gi0 0 140.116.74.0 Gi1 0 140.116.70.0 Gi0 1 140.116.76.0 Gi1 1 網段 介面距離 140.116.74.0 Gi0 0 140.116.76.0 Fa1 0 140.116.72.0 Gi0 1 140.116.70.0 Gi0 2 當網路拓撲發生變化時, 該網路上所有的路由器更新路由表完畢所需的時間, 就稱之為收斂 (Convergence) 時間 以路徑的距離作為評估最短路徑這種方式雖然較為簡單, 但是容易使得網路的流量集中在特定的路徑上, 除此之後, 最短路徑也不一定是最佳的路徑, 因為在決定最佳路徑時, 可能也要考慮到類似傳送延遲 路徑的頻寛 路由器的負載 線路的品質或可靠度等因素 無限迴圈問題 由於距離向量路由演算法的路由資訊都是經由相鄰節點學習而來, 較容易發生迴圈問題 當迴圈問題發生時, 將會使得封包無法傳送出去, 一般用來避免迴圈的方法有幾種 : Maximum hop count: 當產生迴圈時, 路由表的 Hop-count 值便會持續地往上累加 為了避免無限迴圈的問題發生, 可限制路徑之 Hop-count 的上限值 ( 以 RIP 為例,Hop count 為 15), 當 Hop count 達到上限時, 便將該路徑視為不可到達, 直接將封包丟掉 Split horizon: 為了避免路由器收到不正確的路由資訊,Split horizon 的方法限制路到路徑資訊的節點, 不可以對路徑資訊的發送者, 傳送任何與此路徑相關的更新資訊 如下圖所示, 路由器 A 與路由器 B, 不可以對路由器 C 發送任何有關 X 網段的路徑資訊 Hold timer 連結狀態路由演算法 (Link State Routing Algorithm) 連結狀態路由演算法是一種全域性的路由演算法 使用連結狀態路由協定的路由器之間會交換並維護網路拓撲的資訊, 路由器在收到這些資訊後, 再依據此網路拓撲, 透過 SPF (Shortest path first) 演算法計算連通網路的最短路徑, 以完成路徑表的建置, 如下圖所示 : 拓撲資料 路由表 最短路徑樹
在這裡要特別強調的是, 距離向量路由協定傳送的資訊是路由表, 而連結狀態路由協定傳送的則是網路的拓撲資料, 兩者是不相同的 連結狀態路由協定有許多優點 ; 首先, 由於路有器擁有完整的網路拓撲資訊, 連結狀態路由演算法會根據網路的連線架構計算路徑, 不會有迴圈產生 其次, 當網路的架構有變動時, 更新拓撲會立刻傳遍到整個網路, 讓路由器更新本身的拓撲資訊, 收斂的時間極短 此外, 由於路由器只有在網路的架構有變動時才需要重新進行路由表的計算, 因此不會像距離向量路由協定般的需要定期更新並尋找路徑 除了上述兩種方法外, 另外也有所謂混合式 (Hybrid) 的路由協定, 例如 Cisco 的 EIGRP (Enhance Interior Gateway Routing Protocol) 但由於 EIGRP 只有在大部份的 Cisco 路由器才有支援, 因此在這裡暫不介紹 設定動態路由 (Dynamic Routing Configuration) 路由設定方式可分動態與靜態兩種 : (1) 所謂動態路由乃系統本身透過路由協定 ( 一般為 RIP or OSPF), 與鄰近之路由器或同樣執行路由協定之設備交換路由訊息, 由系統自動建立的 (2) 靜態路由則是由系統管理者依所在網路環境手動設定的, 基本上這兩種式可以同時並存的 使用動態路由的好處是, 路由器可以因應拓撲或連結的成本改變而動態地調整封包的傳送路徑, 無須管理由介入 在 Cisco 的路由器中, 設定動態路由的基本方法如下 : 指令格式 : (config)#router protocol [keyword] (config-router)#network network-number 其中,protocol 是指欲使用的路由協定,(# 為系統提示符號 ) 欲啟動動態路由, 只需選擇使用的路由協定, 再將要交換路由的網段加入即可 接下來, 我們將介紹兩種在 TCP/IP 網路中較重要的路由協定 :RIP 以及 OSPF RIP 適用於較小型的網路,OSPF 則較具彈性, 可適用於中大型的網路, 但相對的其計算也較複雜 路由訊息協定 -Routing Information Protocol (RIP) RIP 是最早使用的一種網際網路路由協定 RIP 原先是由 Xerox 公司的 Palo Alto Researh Center (PARC) 所發展, 隨後於 1982 年時, 由於 BSD UNIX 將 RIP 加入 TCP/IP 通訊協定中, 因而廣為被使用 RIP 是一種距離向量路由協定 RIP 以經過的節點個數 (Hop count) 來決定最佳路徑, 經過距離最短的路徑即為成本最小的最佳路徑 假設經過一個 Link 的成本為 1, 最多可以經過 15 個 Link; 因此 RIP 只能使用在少於 15 轉送節點的網路中 RIP 的第一版定義於 RFC 1058, 第二版可以和第一版相容, 定義於 RFC 2453 RIP 1 定址使用 Classful 的方式定址, 也就是以 IP 所屬的類別 (Class) 來區分網段位址與主機位址 ;RIP 2 則以 Prefix 來區別網段位址與主機位址, 由於網段的定址長度可經由
網路遮罩 (Mask) 來調整, 因此對於 IP 位址的使用較有彈性 ( 詳細的說明請參考 NAT 這個章節 ) 設定動態路由 (Dynamic Routing)-RIP 請登入路由器, 進入全域設定模式 (Global configuration mode) 欲使用 RIP 路由協定基本上只需執行以下兩個步驟 :(1) 首先使用 router rip 指令啟動 RIP 協定, (2) 接著使用 network 指令將想要交換 RIP 路由訊息的網段加入即可 以下圖為例, 操作範例如下 : FastEthernet 0/0 10.10.10.0/24 140.116.72.0/24 Router>enable Password: configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)# Router(config)#router rip Router(config-router)#network 140.116.0.0 ( 將想要加入 routing 的網段加入 ) Router(config-router)#network 10.0.0.0 接下來可使用如下的指令來檢查相關的設定 : show ip protocol show ip route show running-config 察看與 Routing Protocol 有關的參數設定 指令 :show ip protocol sh ip protocol Routing Protocol is "rip" Sending updates every 30 seconds, next due in 0 seconds Invalid after 180 seconds, hold down 180, flushed after 240 Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set Redistributing: rip Default version control: send version 1, receive any version Interface Send Recv Triggered RIP Key-chain FastEthernet0/0 1 1 2 Automatic network summarization is in effect Maximum path: 4 Routing for Networks:
140.116.0.0 Routing Information Sources: Gateway Distance Last Update 140.116.72.89 120 00:00:00 Distance: (default is 120) 從上面的例子裡我們可以看到,RIP 大約每 30 秒就會透過 FastEthernet0/0 與其它路由器交換路由訊息 為了提供較佳的相容性, 送的時候是使用 RIP 1 至於接收時, 可以接受 RIP 1 或者 RIP 2 查看路由表 若想查看路由表的內容, 可使用 show ip route 指令, 操作範例如下 : sh ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static route Gateway of last resort is 140.116.72.253 to network 0.0.0.0 R 192.168.62.0/24 [120/3] via 140.116.72.89, 00:00:22, FastEthernet0/0 140.116.0.0/24 is subnetted, 1 subnets C 140.116.72.0 is directly connected, FastEthernet0/0 R 192.168.21.0/24 [120/3] via 140.116.72.89, 00:00:22, FastEthernet0/0 10.0.0.0/24 is subnetted, 1 subnets C 10.10.10.0 is directly connected, Serial0/1 C 192.168.0.0/24 is directly connected, Serial0/0 R 192.168.1.0/24 [120/2] via 140.116.72.89, 00:00:22, FastEthernet0/0 S* 0.0.0.0/0 [1/0] via 140.116.72.253 其中,C 代表該網段直接與路由器相連,R 代表該路徑是經由 RIP 學到的,S 則表示該路徑是使用靜態路由指定 若只想顯示和 RIP 有關的路由資訊, 也可以使用 show ip route rip 指令指定路由表的輸出訊息 停用 RIP Router(config)#no router rip Router(config)#^Z 02:04:59: %SYS-5-CONFIG_I: Configured from console by console 啟動 RIP 的除錯功能 若是想查看有關 RIP 的異動資訊, 例送 RIP 訊息的傳送和接收情形, 可使用
debug ip rip 指令開啟除錯 (debug) 的功能 操作範例如下所示 ( 為路由器的提示符號 ): debug ip rip RIP protocol debugging is on 17:07:37: RIP: received v2 update from 140.116.72.89 on FastEthernet0/0 17:07:37: 192.168.1.0/24 via 0.0.0.0 in 2 hops 17:07:37: 192.168.21.0/24 via 0.0.0.0 in 3 hops 17:07:37: 192.168.62.0/24 via 0.0.0.0 in 3 hops 17:07:50: RIP: sending v1 update to 255.255.255.255 via FastEthernet0/0 (140.116.72.91) 17:07:50: RIP: build update entries - suppressing null update RIP 預設大約每 30 秒廣播路由訊息一次, 所以開啟除錯功能時, 可能等一小段時間系統才會將收到和送出的訊息顯示出來 若是想關閉上述功能, 可使 no debug ip rip 將 RIP 的除錯功能關閉, 也可以使用 no debug all 將所有的除錯功能都關閉 Passive-interface 指令 在這個例子中, 我們有使用到 Private IP 位址, 若不想讓內部的路由訊息從特定的網路介面流出去到外部網段, 可使用 passive-interface 指令, 將網路介面設定為只接收路由訊息, 但不傳送路由訊息 FastEthernet 0/0 10.10.10.0/24 140.116.72.0/24 Private IP 位址 x Router(config)#router rip Router(config-router)#network 140.116.72.0 Router(config-router)#network 10.10.10.0 Router(config-router)#passive-interface FastEthernet 0/0 我們可以將 debug 的功能打開, 來看看 RIP 訊息實際傳送與接收的情形 : debug ip rip RIP protocol debugging is on 10:22:58: RIP: sending v1 update to 255.255.255.255 via Serial0/1 (10.10.10.254) 10:22:58: RIP: build update entries 10:22:58: network 140.116.0.0 metric 1 10:22:58: network 192.168.1.0 metric 3 10:22:58: network 192.168.21.0 metric 4 10:22:58: network 192.168.62.0 metric 4
10:23:22: RIP: received v2 update from 140.116.72.89 on FastEthernet0/0 10:23:22: 192.168.1.0/24 via 0.0.0.0 in 2 hops 10:23:22: 192.168.21.0/24 via 0.0.0.0 in 3 hops 10:23:22: 192.168.62.0/24 via 0.0.0.0 in 3 hops 在這個例子中, 現在路由器還是可以傳送 接收路由訊息, 只是路由訊息不會從指定的網路介面送出 開放式最短路徑優路由協定 -Open Shortest Path First Protocol (OSPF) OSPF 是由 IETF (Internet Engineering Task Force) 於 1980 年代中期所發展出的的一種路由協定 OSPF 是一種連結狀態路由演算法, 因此在建立 OSPF Tree 之前, 每個路由器會先傳送 Link State Advertisement (LSA), 路由器可據此與其它路由器進行資訊交換, 當所有的路由器取得一致的路徑資訊, 亦即可完成 收斂 的動作時, 路由器即可依據 OSPF Tree 的內容建立路由表, 並依據路由表的內容選擇傳送的最佳路徑 OSPF 優於 RIP 的原因在於對於頻寛的影響只有在網路初期運作時, 因為大量的 LSA 封包會在此時傳送而消耗較多的頻寛, 之外, 稍後僅在網路拓樸變動時才會傳送更新拓撲資訊 除此之外,OSPF 和 RIP 另一個不同點就是,OSPF 具有區域 (Area) 的觀念 ;OSPF 採用所謂 階級式 (Hierarchical) 的網路架構 階級式架構的概念其實很簡單, 網路管理者可依照網路本身的區域性, 將之劃分為幾個較小的區域網路, 在區域網路內部採用 OSPF 交換路由資訊, 而區域與區域之間則採用 摘要 (Summarization) 的方式來交換路由資訊 所謂的區域, 是由網路設備和主機所組成的領域, 而區域與區域之間則形成所謂的自治區系統 (Autonomous system) 由於 OSPF 具備有隱藏細節與聚集路徑資訊的能力, 因此 OSPF 也較 RIP 更適用於中大型的網路系統 OSPF 的基本設定 由於 OSPF 是一種開放式的通訊協定, 因此大部份的路由器皆支援 OSPF OSPF 的基本指令如下 : router ospf process_id network address wildcard_mask area_id 其中,process_id 是 OSPF 行程的識別 ID 在 wildcard_mask 的部份,0 代表需要符合條件,1 則代表忽略不計 以下是實際操作的範例 : Router(config)#router ospf 1 Router(config-router)#network 140.116.72.0 0.0.0.255 area 0 Router(config-router)#network 10.10.10.0 0.0.0.255 area 0 Router(config-router)#^Z 如果想確認 OSPF 是否設定好了, 可使用 show ip protocols 指令 範例如下所
示 : sh ip protocols Routing Protocol is "ospf 1" Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set Router ID 140.116.72.91 Number of areas in this router is 1. 1 normal 0 stub 0 nssa Maximum path: 4 Routing for Networks: 10.10.10.0 0.0.0.255 area 0 140.116.72.0 0.0.0.255 area 0 Routing Information Sources: Gateway Distance Last Update 192.168.0.1 110 00:07:01 140.116.72.91 110 00:07:05 Distance: (default is 110) 查看路由表 如前面所述, 若想查看目前路由器的路由表內容, 可用 show ip route 指令 : sh ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static route Gateway of last resort is 140.116.72.253 to network 0.0.0.0 140.116.0.0/24 is subnetted, 1 subnets C 140.116.72.0 is directly connected, FastEthernet0/0 10.0.0.0/24 is subnetted, 2 subnets C 10.10.10.0 is directly connected, Serial0/1 O IA 10.10.20.0 [110/74] via 10.10.10.1, 00:05:24, Serial0/1 S* 0.0.0.0/0 [1/0] via 140.116.72.253 140.116.72.0/24 路由器 B 交換 OSPF 訊息 路由器 A 10.10.20.0/24 10.10.10.1/24 S0/1 10.10.10.254/24 Fa0/0 172.16.2.96/24 以這個範例來看, 在這個例子中, 有兩個網段與我們所操作的路由器 ( 路由器 A) 直接相連, 分別是 140.116.72.0 與 10.10.10.0 兩個網段 140.116.72.0 這個網段是在
FastEthernet0/0 這個網路介面下, 而 10.10.10.0 這個網段則是在 Serial0/1 這個網路介面下 路由器經由 OSPF 學習到 10.10.20.0 這個路徑, 因此若有封包想前往這個網段, 可透過 Serial0/1 這個網路介面送出, 將封包交由 10.10.10.1 轉送 我們可以使用 ping 指令測詴看看 : ping 10.10.10.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds:!!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 32/32/36 ms 顯示 OSPF 的連結資訊 (OSPF database) 如果想觀察 OSPF 的連結狀態資料話, 可使用 show ip ospf database 結果如下所示 : sh ip ospf database OSPF Router with ID (140.116.72.91) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 140.116.72.91 140.116.72.91 693 0x80000018 0xC77C 3 192.168.0.1 192.168.0.1 1631 0x80000023 0xA02A 2 Summary Net Link States (Area 0) Link ID ADV Router Age Seq# Checksum 10.10.20.0 192.168.0.1 1621 0x80000001 0x49C 啟動 OSPF 的除錯功能 我們可以將 debug 的功能打開, 來觀察的 RIP 訊息傳送與接收的情形 可先使用 debug ip ospf? 指令, 查看一下有那些和 ospf 有關的除錯指令可供使用 : debug ip ospf? adj OSPF adjacency events database-timer OSPF database timer events OSPF events flood OSPF flooding hello OSPF hello events lsa-generation OSPF lsa generation mpls OSPF MPLS packet OSPF packets retransmission OSPF retransmission events spf OSPF spf tree OSPF database tree
假設想觀察當網路的架構有變動時, 是否會傳送 OSPF database, 可使用 debug ip ospf tree 指令來詴看看 : debug ip ospf tree OSPF database events debugging is on May 7 00:49:19: %LINK-3-UPDOWN: Interface Serial0/1, changed state to up May 7 00:49:20: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1, changed state to up May 7 00:49:29: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.0.1 on Serial0/1 from LOADING to FULL, Loading Done 想要將除錯功能關閉, 最簡單的方法就是使用 no debug all 指令 no debug all All possible debugging has been turned off debug ip ospf events OSPF events debugging is on May 7 00:50:19: OSPF: Rcv hello from 192.168.0.1 area 0 from Serial0/1 10.10.10.1 May 7 00:50:19: OSPF: End of hello processing 設定靜態路由 (Configuring Static Routes) 由於靜態路由在網路的架構有變動時, 並不會自動針對網路改變做出反應, 所以通常被認為不適用於大型 易變的網路 但是當網路的架構很單純, 或者網路的路由並不是很多時, 手動的方式直接設定路由其實會較使用動態路由來的簡單有效率的多 在設定靜態路由時, 首先要先檢查網路介面卡的 IP 位址是否已經設定? 若相關的設定沒有問題, 接下來就可以開始進行路由的設定 設定靜態路由的指令格式如下 : ip route network mask {address interface} 其中 network 與 mask 表示欲傳送的網段以及網路遮罩,address 是指轉送封包的路由器 IP 位址 ; 除了可設定轉送的 IP 位址外, 也可以設定將封包從指定的網路介面送出 下面我們一個例子來說明 如下圖所示, 以路由器 A 為例, 假設我們希望將欲前往 210.70.110.0 網段的封包直接送往 172.16.2.254 ( 路由器 D), 其設定範例如下 :
路由器 C 路由器 B 140.116.72.0/24 140.116.247.0/24 172.16.2.254 172.16.2.252 路由器 A 路由器 D ip route 210.70.110.0 255.255.255.0 172.16.2.254 圖 : 一個單向的路由 210.70.110.0/24 conf t Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip route 210.70.110.0 255.255.255.0 172.16.2.254 設定完畢後, 可使用 show ip route 指令查看路由表是否有問題 Router-A# May 10 20:46:17: %SYS-5-CONFIG_I: Configured from console by console Router-A#sh ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static route Gateway of last resort is not set S 210.70.110.0/24 [1/0] via 172.16.2.254 C... is directly connected... 在這裡要注意的是, 靜態路由是一種單向的路由, 因此在設定時,Link 的兩端都要設定才行 若沒有問題的話, 可輸入 copy running-config startup-config 指令將設定儲存起來 若想取消先前設定的靜態路由, 可執行 no ip route route mask next_hop 指令將先前的設定取消 Router(config)#no ip route 210.70.110.0 255.255.255.0 172.16.2.254 route mask next hop 設定預設路由 (Default routes) 由於在設定路由器時, 不可能將所有的路徑都建立在路由表 (routing table) 中 因此當本地有封包要由本地往外部網路傳送時, 如果從路由表中找不到路徑, 封包就會直接被丟掉 為了避免這種情形, 一般都會在系統中使用預設路徑 這個路徑
在所有路由都無法適用時, 就會起作用, 而預設路徑所通過的閘道, 稱為預設閘道 以下是一個設定的範例 : 路由器 C 140.116.247.0/24 172.16.2.254 210.70.110.0/24 172.16.2.252 路由器 A 路由器 D 路由器 B 140.116.72.0/24 ip route 0.0.0.0 0.0.0.0 172.16.2.252 圖 : 預設路由的範例 若路由器 D 對外的網段其實只有路由器 A 時, 其實沒有必要啟動動態路由的, 這時可以將路由器 D 的預設路由指向路由器 A 的網路介面位址 (172.16.2.252) 設定範例如下 : configure terminal Router(config)#ip route 0.0.0.0 0.0.0.0 172.16.2.252 當路由表中並沒有和目的位址有關的路由時, 可將封包往預設的路由送出, 將所有非內部網段的封包, 交由鄰近的路由器幫忙轉送 RIP 與 OSPF 的比較 RIP OSPF 路由表的建立方式 以相鄰路由器的觀點得知網以整體路由器的觀點得知網路拓樸並建立路由表路拓樸並建立路由表 更新頻率 週期性 ( 預設 30 秒更新一次 ) 事件性 收斂速度 慢 快 更新內容 路由表 OSPF Tree 路由實驗 以下是個簡單的網路架構圖, 請依下列的網路架構圖設定路由器
路由器 D 192.168.6.252/24 10.40.3.252/24 192.168.6.254/24 10.40.3.254/24 路由器 B 172.16.9.252/24 路由器 C 10.10.2.252/24 172.16.9.254/24 10.10.2.254/24 路由器 A 設定完成後, 請完成下列要求 : (1) 啟動 RIP 路由協定, 並觀察路由表 (2) 啟動 OSFP 路由協定, 並觀察路由表 (3) 選擇其中一個路由器, 並使用 ping 測詴是否可連到其它路由器 (4) 選擇其中一個路由器網路介面作為 PC 的預設閘道, 先使用 ping 指令測詴 PC 是否可以連到預設閘道, 接著由 PC 測詴是否可連到其它路由器 (5) 開啟 debug 功能, 觀察路由資訊的傳送與接收情形 IP Name Resolution 實驗 一般而言, 在設定路由器時是不太需要為路由器指定網域名稱伺服器 (DNS) 的, 但是如果有時候想要測詴路由器與某個網站之間的連線是否正常時, 可能就需要指定 DNS 了 想要為你的路由器指定 DNS 的話, 可以 ip name-server 這個指令來指定, 步驟如下 : #configure terminal Enter configuration commands, one per line. End with CNTL/Z. (config)#ip name-server? A.B.C.D Domain server IP address (maximum of 6) (config)#ip name-server 163.28.113.1 在上述的例子中, 我們將 163.28.112.1 指定為此路由器的 DNS, 一台路由器可以指定兩個以上的 DNS 接下來可以使用 ping 指令來測詴看看 : ncku_re#ping www.pchome.com.tw Translating "www.pchome.com.tw"...domain server (163.28.112.1) [OK]
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 210.59.230.60, timeout is 2 seconds:!!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 8/8/8 ms 在一般的伺服器上, 除了可透過 DNS 解析主機的 IP 位址之外, 為了加快操作的速度, 有時也會在伺服器中直接設定主機名稱表格 在有些路由器上也有提供同樣的功能, 以方便系統管理者操作 以下的實驗將會示範如何在 Cisco 路由器中設定主機名稱表格 (Host table) 首先登入路由器, 輸入 enable 指令, 進入特權模式 (Privileged mode), 接著我們可以故意輸入一個錯誤的主機名稱 相信很多人在操作路由器的過程中, 常常會有個困擾, 就是有時可能無意間不小輸入錯誤的指令, 有時會出現類似如下的訊息 : Translating "hp"...domain server (255.255.255.255) (255.255.255.255) Translating "hp"...domain server (255.255.255.255) % Unknown command or computer name, or unable to find computer address 這時就必須要等得一段時間才能繼續輸入下一個指令 若不希望系統每次都執行透過 DNS 去查詢主機名稱的動作, 可輸入 no ip domain-lookup 指令, 將網域名稱解析服務的功能關閉 ( 需進入 Global-configuration 模式 ): 使用 ip host 指令設定電腦主機的 IP 位址 Router(config)#ip host hpds47 140.116.72.170 使用 ping 指令測詴設定的結果 Router(config)#^Z ping hpds47 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 140.116.72.170, timeout is 2 seconds:!!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms 使用 show hosts 指令觀察自訂的主機名稱表 sh hosts Default domain is not set Name/address lookup uses static mappings Host Port Flags Age Type Address(es) ibm None (perm, OK) 0 IP 140.116.145.74 hpds47 None (perm, OK) 0 IP 140.116.72.170 這樣一來, 以後系統管理者要 telnet 到某個網路主機時 ( 或是測詴主機, 例如用 ping
指令 ), 可直接以自訂的主機名稱代替, 以下是執行的參考範例 : hpds47 Translating "hpds47" Trying hpds47 (140.116.72.170)... Open Red Hat Linux release 9 (Shrike) Kernel 2.4.20-8 on an i686 login: