ip rule 策略路由


1. 工具安裝

yum install iproute

查看工具是否安裝

ip -V

2. ip rule 和 ip route

ip命令中和策略路由相關的OBJECT有 rule 和 route。

查看所有的 rule

ip rule show
優先級  判斷條件  動作    表ID 
0
: from all lookup local // 任何源地址的包,都查詢,local表 32766: from all lookup main 32767: from all lookup default
  local:路由表local包含本機路由及廣播信息。
例如,在本機上執行ssh 127.0.0.1時,就會參考這份路由表的內容,
在正常情況下,只要配置好網卡的網絡設置,
就會自動生成local路由表的內容,我們應該也不必修改其內容。
  main:使用傳統命令route -n所看到的路由表就是main的內容。
Linux系統在默認情況下使用這份路由表的內容來傳輸數據包,
因此,其內容極為重要,在正常情況下,只要配置好網卡的網絡設置,
就會自動生成main路由表的內容。
  default:最后是default路由表,這個路由表在默認情況下內容為空;
除非有特別的要求,否則保持其內容為空即可。

查看route

ip route show table main      // 顯示 表main 的 route
default via 172.17.0.1 dev eth0     // 其他包,發給 172.17.0.1 主機,通過 設備 eth0
169.254.0.0/16 dev eth0 scope link metric 1002    //  目的地址為 169.254.0.0/16 網段的包,使用 eth0 設備發出
172.17.0.0/20 dev eth0 proto kernel scope link src 172.17.0.12    // 目的地址為 172.17.0.0/20 網段的包,通過 eth0 發出。發出的源接口的IP地址是 172.17.0.12

一個包,先查看策略 rule,根據優先級 和 判斷條件 找到 路由表,再按照 路由表的路由規則,獲得下一跳 IP地址和輸出接口,又通過ARP表,獲得目的MAC地址和源MAC地址,發包

 

3.  rule 的添加與刪除

3.1 添加規則

                 判斷條件               表ID         優先級
ip rule add from 192.168.3.1 table 10 prio 199 // 添加規則,源地址為192.168.3.1的包,使用表10

 如果不顯示添加優先級,默認優先級數字從32766 (也就是main table) 依次遞減,即優先級越來越高。

其他添加示例

ip rule add to 168.95.1.1 table 10 // 目的地址是 168.95.1.1 使用 table 10
ip rule add dev eth2 table 1  // dev eth2 輸入的數據,使用 table 1
ip rule add dev eth3 table 3  // dev eth3 輸入的數據,使用 table 3

fwmark 和 iptables

iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 80 -j MARK --set-mark 1 // eth3輸入的HTTP協議數據,標記為 mark 1 
iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 25 -j MARK --set-mark 2  // eth3 輸入的SMTP協議數據,標記為 mark 2
iptables -t mangle -A FORWARD -i eth3 -p tcp --dport 110 -j MARK --set-mark 2  // eth3 輸入的POP協議數據,標記為 mark 2
iptables -t mangle -A FORWARD -i eth3 -j MARK --set-mark 3                    // eth3 輸入的其他數據,標記為 mark 3
ip rule add fwmark 1 table 1   // fwmark 1 的數據,使用 table 1
ip rule add fwmark 2 table 2  
ip rule add fwmark 3 table 3 

 3.2 刪除規則

ip rule del prio 10
ip rule del from 192.168.1.0/24
ip rule del table 1
ip rule del from 192.168.1.0/24 table 1 prio 10

刪除規則,可以使用 優先級,源地址,目的地址,路由表 等信息作為判斷條件。

4.1 添加表

ip route add 192.168.1.0/24 dev eth1 table 10   // 任意添加一條路由,以創建表 10. 新建的表10里的路由條目為空

4.2 添加路由

ip route add 192.168.2.0/24 via 10.10.15.50 table main    // 添加,目的地址為 192.168.2.0/24網段的包,網關為 10.10.15.50。添加到表 main

添加路由前,必須保證表已經存在,否則只是創建表。

4.3 刪除路由

ip route del default table 10   
ip route del 192.168.1.0/24 table 10    // 在表10中,刪除目的地址為 192.168.1.0/24 網段的路由

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM