iptables-mod-tee克隆的資料包克隆後去了哪裡?

iptables-mod-tee克隆的資料包克隆後去了哪裡?

iptables-mod-tee當我添加這樣的規則時,克隆後是否會透過 go 克隆打包?

iptables -t mangle -A POSTROUTING -o eth2 -j TEE --gateway 192.168.0.3

請參考下圖。我認為很明顯,透過上面的命令,該iptables-mod-tee模組使用 的POSTROUTING chain作為mangle table克隆來源但是資料包會發生什麼它是克隆的嗎?即克隆會轉到哪個鍊和表?

在此輸入影像描述

編輯:在上圖中添加了一條紅色虛線,以描繪答案中描述的克隆資料包的路徑。

在此輸入影像描述

答案1

數據包透過TEE克隆,被設定為不被 conntrack 跟踪,阻止被 再次重複,並透過發射本地輸出路由堆疊的一部分,因此首先由 raw/OUTPUT 看到(您也可以參考此Netfilter 和通用網路示意圖中的封包流:這將是在本地流程之後)。如果先前對路由資料包進行了複製(例如,在 mangle 或原始 PREROUTING 中),這將是相同的。這使得事情變得困難(但是不是不可能) 接受額外的處理,例如額外的 nat,因為它不會被跟踪,並且很難將其與原始的區分開來。

這是一個例子痕跡(使用 iptables-legacy 的版本)在類似於 OP 的設定中捕獲從 192.168.0.2 到 8.8.8.8 進行的 ping:捕獲是在路由器上使用iptables -t raw -A OUTPUT -j TRACE.原本的路由的資料包不會出現,因為它必須從原始/預路由中捕獲,從而驗證上面的解釋,告訴它是從輸出完成的。

TRACE: raw:OUTPUT:policy:2 IN= OUT=eth1 SRC=192.168.0.2 DST=8.8.8.8 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=39209 DF PROTO=ICMP TYPE=8 CODE=0 ID=3070 SEQ=1 
TRACE: mangle:OUTPUT:policy:1 IN= OUT=eth1 SRC=192.168.0.2 DST=8.8.8.8 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=39209 DF PROTO=ICMP TYPE=8 CODE=0 ID=3070 SEQ=1 
TRACE: mangle:POSTROUTING:policy:2 IN= OUT=eth1 SRC=192.168.0.2 DST=8.8.8.8 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=39209 DF PROTO=ICMP TYPE=8 CODE=0 ID=3070 SEQ=1

相關內容