1. 程式人生 > 其它 >ip rule命令

ip rule命令

轉載:https://www.kancloud.cn/chunyu/php_basic_knowledge/2137338

ip rule命令詳解

 

ip rule:用於管理路由規則。

描述

網際網路上使用的經典路由演算法僅根據資料包的目的地址(理論上,但實際上,在TOS域上)做出路由決策。

在某些情況下,我們不僅要根據目的地地址,還要根據其他資料包欄位(源地址、IP協議、傳輸協議埠甚至資料包有效負載)來不同地路由資料包。此任務稱為'策略路由'。為了解決這一問題,傳統的基於目的地的路由表(根據最長匹配規則排序)被替換為“路由策略資料庫”(簡稱RPDB),RPDB通過執行一組規則來選擇路由。

每個策略路由規則都由一個選擇器和一個動作謂片語成。RPDB按優先順序降低的順序進行掃描。每個規則的選擇器應用於{源地址,目標地址,傳入介面,tos,fwmark}並且,如果選擇器與資料包匹配,則執行該操作。動作謂詞可以成功返回。在這種情況下,它將給出路由或故障指示,並且RPDB查詢被終止。否則RPDB程式繼續執行下一個規則。

在啟動時,核心配置預設的RPDB,包括三個規則:

  1. 優先順序:0,選擇器:匹配任何內容,操作:查詢路由表本地(ID 255)。本地表是一種特殊的路由表,包含本地和廣播地址的高優先順序控制路由
  2. 優先順序:32766,選擇器:匹配任何內容,操作:查詢路由表main(ID 254)。主表是包含所有非策略路由的常規路由表。此規則可以被刪除和/或由其他規則覆蓋管理員
  3. 優先順序:32767,選擇器:匹配任何內容,操作:查詢路由表預設值(ID253)。預設表為空。如果沒有先前的預設規則選擇資料包,則它將保留用於某些後處理。這條規則也可能將被刪除

每個RPDB條目都有附加屬性。F、 每個規則都有一個指向某個路由表的指標。NAT和偽裝規則有一個屬性來選擇要翻譯/偽裝的新IP地址。除此之外,規則還有一些可選的路由擁有的屬性,即領域。這些值不會覆蓋路由表中包含的值。它們僅在路由未選擇任何屬性時使用。

       RPDB可能包含以下型別的規則:
  • unicast:規則規定返回在規則引用的路由表中找到的路由
  • blackhole:規則規定悄悄地丟棄資料包
  • unreachable:規則規定生成“網路不可達”錯誤
  • prohibit:規則規定生成“管理禁止通訊”錯誤
  • nat:規則規定將IP資料包的源地址轉換為其他值

ip rule 命令格式

Usage: ip rule { add | del } SELECTOR ACTION
       ip rule { flush }
       ip rule [ list ]
SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK[/MASK] ]
            [ iif STRING ] [ oif STRING ] [ pref NUMBER ]
ACTION := [ table TABLE_ID ]
          [ nat ADDRESS ]
          [ realms [SRCREALM/]DSTREALM ]
          [ goto NUMBER ]
TABLE_ID := [ local | main | default | NUMBER ]

ip rule add/del

option:

  • type TYPE (default):規則型別
  • from PREFIX:選擇要匹配的源字首
  • to PREFIX:選擇要匹配的目的字首
  • iif NAME:選擇要匹配的傳入裝置。如果介面是環回,則該規則僅匹配源自此主機的資料包。這意味著您可以為轉發的資料包和本地資料包建立單獨的路由表,從而完全隔離它們。
  • oif NAME:選擇要匹配的傳出裝置。傳出介面僅適用於來自繫結到裝置的本地套接字的資料包
  • tos TOS/dsfield TOS:選擇要匹配的TOS值
  • fwmark MARK:選擇要匹配的標記值
  • priority PREFERENCE:此規則的優先順序。每個規則都應該有一個顯式設定的唯一優先順序值
  • table TABLEID:如果規則選擇器匹配,則要查詢的路由表識別符號。也可以使用查詢而不是表格
  • realms FROM/TO:選擇規則是否匹配以及路由表查詢是否成功的領域。 僅當路由未選擇任何領域時才使用領域TO
  • nat ADDRESS:要轉換的IP地址塊的基礎(用於源地址)。 地址可以是NAT地址塊的開始(由NAT路由選擇),也可以是本地主機地址(甚至為零)。 在最後一種情況下,路由器不轉換資料包,而是將其偽裝到該地址。使用map-to代替nat意味著同樣的事情
命令例項 解釋
ip rule add from 192.203.80/24 table inr.ruhep prio 220 通過路由表 inr.ruhep 路由來自源地址為192.203.80/24的資料包
ip rule add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320 把源地址為193.233.7.83的資料報的源地址轉換為192.203.80.144,並通過表1進行路由
// 例項:雙網絡卡資料路由策略選擇,讓來自192.168.1.0/24的資料包走10.60.60.1閘道器,來自192.168.2.0/24的資料包走172.0.0.1閘道器
 1、定義表
    echo 10 clinet_cnc >>/etc/iproute2/rt_tables
    echo 20 clinet_tel >>/etc/iproute2/rt_tables   
2、新增規則
    ip rule add from 192.168.1.0/24 table clinet_cnc
    ip rule add from 192.168.2.0/24 table clinet_tel
3、新增路由
    ip route add default via 10.60.60.1  table clinet_cnc
    ip route add default via 172.0.0.1 table clinet_tel
4、重新整理路由表
    ip route flush cache

ip rule flush

重新整理路由規則,此命令沒有引數

ip rule list

列出路由規則,此命令沒有引數

命令例項 解釋
ip rule list 列出路由規則