linux中路由策略rule和路由表table
2.路由表的配置3.路由策略rule基於策略的路由比傳統路由在功能上更強大,使用更靈活,它使網路管理員不僅能夠根據目的地址而且能夠根據報文大小、應用或IP源地址等屬性來選擇轉發路徑。簡單地來說,linux系統有多張路由表,而路由策略會根據一些條件,將路由請求轉向不同的路由表。例如源地址在某些範圍走路由表A,另外的資料包走路由表,類似這樣的規則是有路由策略rule來控制。在linux系統中,一條路由策略rule主要包含三個資訊,即rule的優先順序,條件,路由表。其中rule的優先順序數字越小表示優先順序越高,然後是滿足什麼條件下由指定的路由表來進行路由。在linux系統啟動時,核心會為路由策略資料庫配置三條預設的規則,即rule 0,rule 32766, rule 32767(數字是rule的優先順序),具體含義如下:(1)rule 0匹配任何條件的資料包,查詢路由表local(table id = 255)。rule 0非常特殊,不能被刪除或者覆蓋。 (2)rule 32766匹配任何條件的資料包,查詢路由表main(table id = 254)。系統管理員可以刪除或者使用另外的策略覆蓋這條策略。(3)rule 32767匹配任何條件的資料包,查詢路由表default(table id = 253)(ID 253) 。對於前面的預設策略沒有匹配到的資料包,系統使用這個策略進行處理。這個規則也可以刪除。備註:在linux系統中是按照rule的優先順序順序依次匹配。假設系統中只有優先順序為0,32766及32767這三條規則。那麼系統首先會根據規則0在本地路由表裡尋找路由,如果目的地址是本網路,或是廣播地址的話,在這裡就可以找到匹配的路由;如果沒有找到路由,就會匹配下一個不空的規則,在這裡只有32766規則,那麼將會在主路由表裡尋找路由;如果沒有找到匹配的路由,就會依據32767規則,即尋找預設路由表;如果失敗,路由將失敗。在linux系統中可以使用ip rule命令來配置路由策略。ip rule命令使用格式為:
舉例來說:Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 新增;del 刪除; llist 列表) SELECTOR := [ from PREFIX 資料包源地址] [ to PREFIX 資料包目的地址] [ tos TOS 服務型別][ dev STRING 物理介面] [ pref NUMBER ] [fwmark MARK iptables 標籤] ACTION := [ table TABLE_ID 指定所使用的路由表] [ nat ADDRESS 網路地址轉換][ prohibit 丟棄該表| reject 拒絕該包| unreachable 丟棄該包] [ flowid CLASSID ] TABLE_ID := [ local | main | default | new | NUMBER ]
ip rule add [from 0/0] table 1 pref 32800 #增加一條規則,規則匹配的物件是所有的資料包,動作是選用路由表1的路由,這條規則的優先順序是32800
ip rule add from 192.168.3.112/32 [tos 0x10] table 2 pref 1500 prohibit #增加一條規則,規則匹配的物件是IP為192.168.3.112, tos等於0x10的包,使用路由表2,這條規則的優先順序是1500,動作是丟棄。
可以通過命令ip rule或ip rule list來檢視系統中所有的路由策略rule。另外使用ip rule命令配置的路由策略rule只在記憶體中有效,機器重啟後,就會失效。可以將路由策略配置到檔案/etc/sysconfig/network-scripts/rule-ethX中,這樣機器重啟後仍然有效。4.關於路由表和路由策略的聯絡和區別路由策略rule指定滿足一定條件的資料包有指定的路由表來路由,多個策略rule可以指向同一張路由表。某些路由表可以沒有策略指向它。值得注意的是,如果系統管理員刪除了指向某個路由表的所有策略rule,那麼這個路由表是沒有用的,但它在系統中仍然存在,直到路由表中的所有路由記錄被刪除,它才會消失。5.其他閒雜知識點(1)檢視指定路由表的內容(2)檢視系統中所有的路由策略ruleip route list table table_id ip route list table table_name ip route show table table_id ip route show table table_name
ip rule
ip rule list
(3)使用ip rule,ip route,route等命令進行網路配置,只在記憶體中有效,重啟機器或網路服務就會失效。因此,我們需要通常需要將網路相關的配置寫入到配置檔案中,這樣重啟機器或網路服務時,會從配置檔案中載入網路相關的配置資訊。(4)關於路由配置及路由策略配置的一點問題我們知道路由表和路由策略可以寫入配置檔案/etc/sysconfig/network-scripts/route-ethX和/etc/sysconfig/network-scripts/rule-ethX中,這類配置檔案是針對每個網絡卡單獨配置的靜態路由或路由策略。route-ethX中如果不明確指定哪張路由表,預設是新增到main路由表的,因此route-ethX中配置規則,不僅僅只有對應的網絡卡可以看到,其他的網絡卡也會看到哦。rule-ethX中配置的路由策略rule是全域性的,我們通過ip rule list可以檢視所有rule-ethX中的路由策略,因此rule-ethX中的策略不僅僅只有相應的網絡卡才能看到,其他的網絡卡也會看到哦。學習資料參考於: