Linux

iptables:filter 和 mangle 有什麼區別

  • June 27, 2016

我正在使用 iptables 來標記包裹並希望根據標記進行路由。

首先我添加了ip規則:

sudo ip rule add fwmark 1 prohibit

(“禁止”只是為了測試,稍後我將其更改為一些路由表。)

然後我開始標記包裹:

sudo iptables -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1

但是電腦仍然可以訪問 192.168.1.0/24 網路。

經過長時間的Google搜尋和掙扎,我嘗試了:

sudo iptables -t mangle -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1

它可以工作並且連接被阻止。

在第一種情況下,使用過濾器的預設表。所以我的問題是 mangle 表和 filter 表有什麼區別?在什麼情況下應該使用哪一個?據我了解,所有這些表都會在路由策略之前進行諮詢,那麼為什麼過濾表不能正常工作呢?

mangle用於修改(修改)數據包,而filter僅用於過濾數據包。

這樣做的結果是,LOCAL_OUT在遍歷表並獲得過濾決策之後,mangle可能會嘗試重做路由決策,假設過濾決策不是丟棄或以其他方式控制數據包,通過呼叫ip_route_me_harder,而filter只是返回過濾決策。

net/ipv4/netfilter/iptable_mangle.c和處的詳細資訊net/ipv4/netfilter/iptable_filter.c

引用自:https://unix.stackexchange.com/questions/85275