linux中路由策略rule和路由表table

1.linux系統中路由表table
linux最多可以支持255張路由表,每張路由表有一個table id和table name。其中有4張表是linux系統內置的:
(1)table id = 0
系統保留。
(2)table id = 255
稱爲本地路由表,表名爲local。像本地接口地址,廣播地址,以及NAT地址都放在這個表。該路由表由系統自動維護,管理員不能直接修改。
(3)table id = 254
稱爲主路由表,表名爲main。如果沒有指明路由所屬的表,所有的路由都默認都放在這個表裏。一般來說,舊的路由工具(如route)所添加的路由都會加到這個表。main表中路由記錄都是普通的路由記錄。而且,使用ip route配置路由時,如果不明確制定要操作的路由表,默認情況下也是主路由表(表254)進行操作。
備註:我們使用ip route list 或 route -n 或 netstat -rn查看的路由記錄,也都是main表中記錄。
(4)table id = 253
稱爲默認路由表,表名爲default。一般來說默認的路由都放在這張表。
備註:
A)系統管理員可以根據需要自己添加路由表,並向路由表中添加路由記錄。
B)可以通過/etc/iproute2/rt_tables文件查看table id和table name的映射關係。
C)如果管理員新增了一張路由表,需要在/etc/iproute2/rt_tables文件中爲新路由表添加table id和table name的映射。

2.路由表的配置
可以有很多方式來配置靜態路由,包括缺省路由。具體方法參見http://blog.csdn.net/wangjianno2/article/details/69937374

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)查看指定路由表的內容
ip route list table table_id
ip route list table table_name

ip route show table table_id
ip route show table table_name
(2)查看系統中所有的路由策略rule
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中的策略不僅僅只有相應的網卡才能看到,其他的網卡也會看到哦。


學習資料參考於:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章