Tables
Tables
OUTPUT
INPUT
POSTROUTING
PREROUTING
NAT
MANGLE
主要目的概念 :
Policy Route and QOS
涵蓋實作範圍 :
TOS(Type Of Service)、TTL(Time To Live)指以及為 packet 打 Mark
在 kernel 裡面是一個 module,裡面還有幾個 function 的 module :
mark match
[!] –mark value[/mask] 數據包的nfmark值與value進行匹配,其中mask的值為可選的
MARK target
–set-mark value 設置 packet 的nfmark值。
–and-mark value packet 的nfmark值和value進行按 AND 運算。
–or-mark value packet 的nfmark值和value進行按 OR 運算。
CONNMARK target
-set-mark value[/mask]
給 conntrack 打 mark
-save-mark [--mask mask]
將 packet 裡的 mark save 到 conntrack 裡
-restore-mark [--mask mask]
重新設置 packet 的 nfmark
CONNMARK 和 MARK的區別:
同樣是打標記,但 CONNMARK 是針對 conntrack 的,而 MARK 是針對單一 pakcet 的
這兩種機制一般都要和ip rule中的fwmark聯用,實現對滿足某一類條件的數據包的策略路由
1.對連接打了標記,只是標記了連接,沒有標記連接中的每個數據包
2.標記單個數據包,也不會對整條連接的標記有影響。二者是相對獨立的
關於 Routing Decision :
是以單一 packet 為單位的,或者說,在netfilter框架之外,並沒有 conntrack 的概念。或者說,ip命令只知道MARK, 而不知道CONNMARK是什麼,所以如果要改 routing decesion 要給所有要進行 ip rule 匹配的單一 packet 打上 mark 。
方法:
用MARK直接打
用CONNMARK –restore-mark把打在連接上的 conntrack 轉移到 packet 上。
原文網址:
Last updated
Was this helpful?