1. 程式人生 > >linux 多網卡多路由表實現策略路由

linux 多網卡多路由表實現策略路由

文件名 多網卡 路由規則 策略 關機 name show scripts ip地址

linux kernel 2.2 開始支持多個路由表。
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 show

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 多網卡多路由表實現策略路由