linux: ip rule 用法詳解
策略路由
我們不僅要根據目的地地址,還要根據其他數據包字段(源地址、IP 協(xié)議、傳輸協(xié)議端口甚至
數據包有效負載)來(lái)不同地路由數據包。此任務(wù)稱(chēng)為策略路由。Linux 策略路由是一種基于
策略的路由機制,相對于傳統的基于目的地址的路由機制,它可以提供更靈活和強大的路由
控制能力。
在 Linux 中,策略路由通過(guò)使用路由策略數據庫(RPDB)來(lái)實(shí)現,它可以根據不同的源地址、
傳輸層端口和 payload 等條件進(jìn)行更細致的路由控制。
每條策略路由的規則由一個(gè)選擇器和一個(gè)動(dòng)作組成,RPDB 按照優(yōu)先級順序進(jìn)行規則匹配,
優(yōu)先級數字越小越優(yōu)先。被選擇器匹配的報文會(huì )執行對應的操作,操作如果成功,
則根據指定的路由轉發(fā)數據,之后終止 RPDB 匹配;如果執行失敗,則報錯并且終止
RPDB 匹配。否則 RPDB 將繼續執行下一條規則。
在啟動(dòng)時(shí),內核配置默認的 RPDB,包括三個(gè)規則:
優(yōu)先級:0,選擇器:匹配任何內容,操作:查找路由表本地(ID 255)。
本地表是一種特殊的路由表,包含本地和廣播地址的高優(yōu)先級控制路由
優(yōu)先級:32766,選擇器:匹配任何內容,操作:查找路由表main(ID 254)。
主表是包含所有非策略路由的常規路由表。此規則可以被刪除和/或由其他規則覆蓋管理員
優(yōu)先級:32767,選擇器:匹配任何內容,操作:查找路由表default(ID 253)。
默認表為空。如果沒(méi)有先前的默認規則選擇數據包,則它將保留用于某些后處理。
這條規則也可能將被刪除
**注:**不要混淆路由表和策略:規則指向路由表,多個(gè)規則可以引用一個(gè)路由表,
而且某些路由表可以策略指向它。如果系統管理員刪除了指向某個(gè)路由表的所有規則,
這個(gè)表沒(méi)有用了,但是仍然存在,直到里面的所有路由都被刪除,它才會(huì )消失。
linux 系統中,可以自定義從 1-252個(gè)路由表,其中,linux 系統維護了4個(gè)路由表:
0#表: 系統保留表
253#表: default table 沒(méi)特別指定的默認路由都放在該表
254#表: main table 沒(méi)指明路由表的所有路由放在該表
255#表: local table 保存本地接口地址,廣播地址、NAT地址 由系統維護,
用戶(hù)不得更改
每個(gè) RPDB 條目都有附加屬性。每個(gè)規則都有一個(gè)指向某個(gè)路由表的指針。
NAT 和偽裝規則有一個(gè)屬性來(lái)選擇要翻譯/偽裝的新 IP 地址。除此之外,
規則還有一些可選的路由擁有的屬性,即領(lǐng)域。這些值不會(huì )覆蓋路由表中包含的值。
它們僅在路由未選擇任何屬性時(shí)使用。
RPDB 可能包含以下類(lèi)型的規則:
unicast:規則規定返回在規則引用的路由表中找到的路由
blackhole:規則規定悄悄地丟棄數據包
unreachable:規則規定生成“網(wǎng)絡(luò )不可達”錯誤
prohibit:規則規定生成“管理禁止通信”錯誤
nat:規則規定將IP數據包的源地址轉換為其他值
————————————————
原文鏈接:https://blog.csdn.net/qq_36803941/article/details/135534711
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。