Linux
iptables:filter 和 mangle 有什麼區別
我正在使用 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
。