ip rule命令
阿新 • • 發佈:2022-03-11
轉載:https://www.kancloud.cn/chunyu/php_basic_knowledge/2137338
ip rule命令詳解
ip rule:用於管理路由規則。
描述
網際網路上使用的經典路由演算法僅根據資料包的目的地址(理論上,但實際上,在TOS域上)做出路由決策。
在某些情況下,我們不僅要根據目的地地址,還要根據其他資料包欄位(源地址、IP協議、傳輸協議埠甚至資料包有效負載)來不同地路由資料包。此任務稱為'策略路由'。為了解決這一問題,傳統的基於目的地的路由表(根據最長匹配規則排序)被替換為“路由策略資料庫”(簡稱RPDB),RPDB通過執行一組規則來選擇路由。
每個策略路由規則都由一個選擇器和一個動作謂片語成。RPDB按優先順序降低的順序進行掃描。每個規則的選擇器應用於{源地址,目標地址,傳入介面,tos,fwmark}並且,如果選擇器與資料包匹配,則執行該操作。動作謂詞可以成功返回。在這種情況下,它將給出路由或故障指示,並且RPDB查詢被終止。否則RPDB程式繼續執行下一個規則。
在啟動時,核心配置預設的RPDB,包括三個規則:
- 優先順序:0,選擇器:匹配任何內容,操作:查詢路由表本地(ID 255)。本地表是一種特殊的路由表,包含本地和廣播地址的高優先順序控制路由
- 優先順序:32766,選擇器:匹配任何內容,操作:查詢路由表main(ID 254)。主表是包含所有非策略路由的常規路由表。此規則可以被刪除和/或由其他規則覆蓋管理員
- 優先順序: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 | 列出路由規則 |