Iptables
iptables 中的 POSTROUTING 鏈上只有一個日誌條目
我的表和鏈
iptables
規則如下:nat``POSTROUTING
Chain POSTROUTING (policy ACCEPT) target prot opt source destination LOG all -- anywhere anywhere LOG level warning prefix " packet-pre-snat" MASQUERADE all -- anywhere anywhere LOG all -- anywhere anywhere LOG level warning prefix " packet-post-snat"
我在主機之間發送一個 HTTP 請求,然後查看日誌,我只看到一個條目:
Mar 15 08:41:55 vpn-instance5 kernel: [ 385.657182] packet-pre-snatIN= OUT=ens5 SRC=10.132.0.2 DST=10.0.0.24 LEN=60 TOS=0x00 PREC=0x00 TTL=61 ID=40 DF PROTO=TCP SPT=53896 DPT=443 WINDOW=65320 RES=0x00 SYN URGP=0
為什麼我只看到一個條目?
- 我希望至少有一些條目(因為為了建立 TCP 連接而交換了許多數據包。
- 我看到了 pre-snet 日誌條目。為什麼我看不到 post-snat 條目(iptables 中的第三條規則)
您看不到 post-snat 條目,因為永遠不會觸發第三條規則,因為 MASQUERADE 是終止目標,而 LOG 是非終止目標。
當 pre-snat LOG 規則被啟動時,iptables 繼續處理鏈中的規則,進入 MASQUERADE 規則,而當 MASQUERADE 規則被啟動時,iptables 停止處理鏈中的規則,因此它下的 post-snat LOG 規則永遠不會收到任何數據包由它處理,因此它不會記錄任何內容。
終止目標:終止目標執行一個動作,終止鏈內的評估並將控制權返回給 netfilter 鉤子,如果有任何剩餘,則轉到下一個鏈。
非終止目標:非終止目標執行一個動作並在鏈內繼續評估。