1. 程式人生 > 其它 >簡略講解OpenWrt的路由配置(單播路由/靜態路由、策略路由、IGMP組播路由)

簡略講解OpenWrt的路由配置(單播路由/靜態路由、策略路由、IGMP組播路由)

一、分類

  • 智慧路由器上最重要的功能是 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組播路由

  • 待續