iptables 中 POSTROUTING 链上只有一个日志条目

iptables 中 POSTROUTING 链上只有一个日志条目

我的表和链iptables规则如下:natPOSTROUTING

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 

为什么我只看到一篇文章?

  1. 我期望至少有一些条目(因为有许多数据包交换来建立 TCP 连接。
  2. 我看到 pre-snet 日志条目。为什么我看不到 post-snat 条目(iptables 中的第三条规则)

答案1

您没有看到 post-snat 条目,因为第三条规则永远不会触发,因为 MASQUERADE 是终止目标,而 LOG 是非终止目标。

当 pre-snat LOG 规则被激活时,iptables 继续处理链中的规则,转到 MASQUERADE 规则,而当 MASQUERADE 规则被激活时,iptables 停止处理链中的规则,因此其下的 post-snat LOG 规则永远不会收到任何数据包由它处理,因此它不会记录任何内容。

终止目标:终止目标执行一个操作,终止链内的评估并将控制返回到 netfilter 挂钩,如果还有剩余,则转到下一个链。

非终止目标:非终止目标执行操作并在链内继续评估。

相关内容