簡略講解OpenWrt的路由配置(單播路由/靜態路由、策略路由、IGMP組播路由)
阿新 • • 發佈:2021-11-05
一、分類
- 智慧路由器上最重要的功能是 IP 路由。IP 報文根據路由表進行路由決策,路由表中的路由項又有各種不同的分類。
按目的地址型別不同可劃分
- 單播路由。
- 組播路由。
- 單播路由表中儲存了各種路由協議發現的路由並形成一張路由表,根據路由表項的來源來劃分,通常分為以下3類:
- 介面路由。也稱為直連路由,當設定介面 IP 地址和掩碼時會自動增加的路由, 是報文通往該介面 IP 地址所在網路的路由。
- 靜態路由。網路管理員手工配置的路由。當網路結構比較簡單時,只需配置靜態 路由就可以工作,適用於拓撲結構簡單並且穩定的小型網路。靜態路由不能自動適應網路 拓撲結構的變化,當網路發生故障或者拓撲發生變化後,必須再次由網路管理員手工修 改配置。
- 動態路由。動態路由協議發現並設定路由,常見的動態路由協議有 RIP、OSPF 和 IS-IS 等。路由表會根據鏈路狀態或網路拓撲結構變化進行動態生成和刪除。常見的動 態路由軟體有 Zebra 和 Quagga 等。在智慧路由器領域一般只有唯一的網際網路出口,因此 不會用到動態路由。
根據路由目的地址的不同
- 策略路由。也稱為源地址路由,根據 IP 報文源地址、埠、報文長度、優先順序 等內容靈活地進行路由選擇。
- 普通的目的地址路由。僅根據報文目的地址來選擇出介面或者下一跳地址。
按路由決策的方式不同
- 策略路由。也稱為源地址路由,根據 IP 報文源地址、埠、報文長度、優先順序 等內容靈活地進行路由選擇。
- 普通的目的地址路由。僅根據報文目的地址來選擇出介面或者下一跳地址。
根據目的地與該路由器是否直接相連
- 直接路由。目的地所在網路與路由器直接相連。
- 間接路由。目的地所在網路與路由器非直接相連。
預設路由
-
還有一個概念是預設路由,也稱預設路由,是指在路由器中沒有找到精確匹配路由表 項後所使用的路由。
如果報文的目的地址在路由表中沒有找到匹配的路由,而且還沒有預設路由,那麼該報文將被丟棄並向報文的源地址傳送一個網路地址不可達的ICMP差錯報文。
智慧路由器的預設路由通常是通過DHCP或PPPoE自動獲取下一跳地址後,動態生成並寫入到路由表中的。
二、單播路由
- 報文的目標地址為 A、B、C 類地址的路由表項為單播路由。
- 目標 IP 地址是告訴報文 目的主機地址在哪裡,而路由是告訴報文如何到達目的地址。
- 網路上的每個路由器獨立進行 決策,將報文轉發到離目的地址更近的路由器上,就這樣一步一步地路由到目標主機上。
三、單播路由分類
單播路由表中儲存了各種路由協議發現的路由並形成一張路由表,根據路由表項的來源來劃分,通常分為以下3類:
-
介面路由。也稱為直連路由,當設定介面 IP 地址和掩碼時會自動增加的路由, 是報文通往該介面 IP 地址所在網路的路由。
-
靜態路由。網路管理員手工配置的路由。當網路結構比較簡單時,只需配置靜態 路由就可以工作,適用於拓撲結構簡單並且穩定的小型網路。靜態路由不能自動適應網路 拓撲結構的變化,當網路發生故障或者拓撲發生變化後,必須再次由網路管理員手工修 改配置。
-
動態路由。動態路由協議發現並設定路由,常見的動態路由協議有 RIP、OSPF 和 IS-IS 等。路由表會根據鏈路狀態或網路拓撲結構變化進行動態生成和刪除。常見的動 態路由軟體有 Zebra 和 Quagga 等。在智慧路由器領域一般只有唯一的網際網路出口,因此 不會用到動態路由。
四、route命令
- route 命令是用於管理 和維護作業系統核心的路由表,主要用於設定到特定主機或網路的靜態路由。可以增加、 刪除及檢視路由表等。
五、檢視路由表
- 每當增加一個介面 IP 時將自動建立一個直連的介面路由。對於通過 DHCP獲得的 IP 地址,除了設定直連路由外還可能會設定閘道器的預設路由。
路由表格式
- 當前openwrt的IP為192.168.43.123。
- “route –n”命令來列出路由表項:-n 選項表示列出數字地址形式,而不是主機名或者域名。
- 第一行:是一個預設路由,這表明如果沒有精確匹配路由,就會將IP報文傳送到IP地 址192.168.43.1上。UG 表示一個啟用的閘道器地址。br-lan表示出介面地址。
- 第二行:是一個介面路由,為區域網介面的路由項,表示區域網為192.168.43.0網段。 br-lan表示通過該網絡卡和區域網網路相連線。
- 第三行:是一個介面路由,表示目的地址是主機地址。這在介面配置IP和掩碼時會預設自動設定上。如果不設定掩碼則預設A類地址為8位掩碼,B類地址為16位掩碼,C類地址為24位掩碼。
路由表的欄位含義
-
對於給定的路由表項的路由標識(Flahs)通常有以下幾種:
-
U:路由表項可以使用。
-
H:路由表項的目標地址是主機地址,即掩碼為 32 位。
-
G:路由表項下一跳為閘道器。
-
R:動態路由演算法生成的。
-
D:該路由通過重定向或者守護程序動態安裝的。
-
M:該路由被路由守護程序或重定向報文修改。
-
A:該路由被 addrconf 安裝。
-
C:快取(cache entry)。
-
!:拒絕路由(reject route)。匹配這一條報文將丟棄。
-
六、路由的設定
- 使用ip命令和route命令均可對路由表進行管理,預設路由通過以下兩個命令均進行設定:
- 這兩個命令列為完全相同,只是ip命令使用 Netlink 介面設定到核心中,route 命令通 過傳統的 ioctl 介面設定到核心中。Linux 核心已經不建議使用 ioctl 介面。
ip route add default via <gw ip> dev eth0 route add default gw <gw ip> dev eth0
- 檢視路由資訊。
-
ip route get命令
- 針對目的IP,如何來選擇路由表項?路由表中的資訊包含了IP層的決策。採用最長匹配演算法來匹配,如果有多個匹配則會隨機選擇一個作為路由,可以使用下面命令來檢視匹配的路由。
七、路由功能的劃分
- 為了系統的穩定性,作業系統將路由功能劃分為兩部分:
- 管理平面:也稱為控制平面。是指用於路由學習,生成路由表的部分。Linux 用 戶空間的程式就屬於管理平面。
- 轉發平面:也稱資料平面(Data Plane)。轉發平面是指系統中進行資料報文的接 收、查詢路由表、根據路由表進行決策等的部分。轉發平面在 Linux 核心中。
- 轉發平面:也稱資料平面(Data Plane)。轉發平面是指系統中進行資料報文的接 收、查詢路由表、根據路由表進行決策等的部分。轉發平面在 Linux 核心中。
- 路由器可以實現轉發面和管理平面的相互獨立。為了做到控制平面和轉發平面的分離,Linux 核心構建了一張轉發表,專門用於指導資料報文的轉發。使用者空間的應用層軟體形成控制平面的路由表,可能會有多種可選的路由規則,但路由軟體系統會計算出一條最佳的路徑然後寫入核心中。兩者之間通過介面(Netlink)來實現相互操作。在小型智慧路由器上網路比較單一,路由表項不用動態生成,只有固定的路由表。因此一般不會使用quagga路由軟體生成的控制平面的路由表,只有靜態路由。在小型智慧路由器上可以認為 兩者完全相同。資料平面儲存的路由表,也稱為路由轉發表(Forwarding Information Base, FIB),用來指導IP報文的轉發,轉發演算法如下:
- 組織和儲存選出的路由表項。
- 按照 LPM(最長掩碼匹配)演算法提供路由檢索介面。
- 報文的轉發過程為:首先網絡卡介面上接收報文,並檢視報文的目的地址:然後根據目 的地址來查詢轉發表;最後按查詢到的路徑把分組報文轉發出去。
八、增加靜態路由的一個注意事項
- 在增加靜態路由時需注意:在 Windows 下增加靜態路由,必須設定有下一跳地址;在 Linux 下增加靜態路由時,可以僅設定出介面而不設定下一跳地址。
- 如果增加靜態路由時僅設定出介面而不設定下一跳地址,在一些沒有開啟ARP代理的裝置上將會遇到不能連通網路的問題。因為使用出介面地址時,Linux 會認為目標地址 網路是直連可達的網路,將直接發出 ARP 請求來查詢目標 IP 地址的 MAC 地址,如果路 由器沒有啟動 ARP 代理,就不會發出 ARP 響應訊息,這時 Linux 就會因為找不到目標MAC地址而轉發失敗。
-
如果直接指定閘道器地址,那ARP請求就直接請求閘道器地址的MAC地址,然後進行報文轉發。
九、靜態路由配置
- 使用命令列對路由表進行設定時,在重啟之後配置均需重新設定。OpenWrt 的靜態路由配置在配置檔案/etc/config/network的route配置節中,在啟動過程中 netifd 模組會讀取 該配置檔案並進行設定。
- 可選的配置選項見下表:
演示案例
- 例如區域網還有一個192.168.9.0/24網路,那麼我們將增加下面所示的配置,就 可以通過閘道器地址 92.168.6.10到達 192.168.9.0/24網路。
- 進行重啟後,使用route -n 命令來檢視,路由表增加了以下內容:
十、策略路由
- 待續
十一、IGMP組播路由
- 待續