linux 多網卡多路由表實現策略路由
routing policy database (RPDB)。
傳統路由表,基於目標地址做路由選擇。通過多個路由表,kernel支持實施策略路由,這樣就可以基於源IP地址等信息做路由選擇。
傳統的查看路由表命令 route
新的路由表查看命令 ip route
Kernel 可以定義0到255標識路由表。
The file /etc/iproute2/rt_tables need not exist, as the iproute2 tools have a hard-coded entry for the main table. 直接用route或者ip route 查看的就是main這張路由表。
The local routing table這張路由表由kernel自動生成和維護,不應該去改動它。路由表中包含的是本地接口路由和廣播路由,以及nat路由。
The main routing table這張路由表也是由kernel自動生成和維護。
Routing Policy database
路由策略數據庫控制了kernel搜素多個路由表之間的順序。每一條rule規則都可以定義一個0到32767之間的優先級,數字越小,優先級越高。
當路由表cache為空,新的數據包到達尋找路由時,kernel開始查找最高優先級的rule0。Kernel重復查找匹配路由規則rule。如果kernel沒有在rule中找到路由,那麽它會嘗試查找剩下的其他rule.
Ip rule add unicast iif eth7 prio 32766 table
刪除某條路由規則rule
Ip rule del prio 32766
Ip route flush 10.38.0.0/16 或者某張路由表中所有路由ip route flush table main
ip route show cache
ip route flush cache
可在 /etc/sysconfig/network-scripts/route-interface 文件中為每個接口保存其靜態路由配置。命令提示符後使用 ip 設定的靜態路由會在系統關機或重啟後丟失。要配置靜態路由以便在系統重啟後仍可保留,則必須將其放在 /etc/sysconfig/network-scripts/ 目錄中。該文件名的格式應為 route-ifname。 route-ifname只是為接口保存的路由配置文件。真正的路由表在rt_tables中定義,定義的路由表各個條目就分散在route-ifname文件中。
Ip rule 也是同樣的原理,文件名的格式為rule-XX。
/etc/sysconfig/network-scripts/rule-eth0
/etc/sysconfig/network-scripts/route-eth0
linux 多網卡多路由表實現策略路由