为什么iptables NAT在mininet中工作,但iptables日志记录不工作?

时间:2016-07-02 09:44:38

标签: networking iptables mininet

我在mininet.nodelib中查找了 NAT 类,它是通过 iptables 实现的:

self.cmd( 'iptables -I FORWARD',
              '-i', self.localIntf, '-d', self.subnet, '-j DROP' )
self.cmd( 'iptables -A FORWARD',
              '-i', self.localIntf, '-s', self.subnet, '-j ACCEPT' )
self.cmd( 'iptables -A FORWARD',
              '-o', self.localIntf, '-d', self.subnet,'-j ACCEPT' )
self.cmd( 'iptables -t nat -A POSTROUTING', 
              '-s', self.subnet, "'!'", '-d', self.subnet, '-j MASQUERADE' )

但是,当我安装日志记录规则时:

iptables -A INPUT -j LOG --log-prefix "IPT log: " --log-level 4

/var/log/kern.log文件中没有单个/相关/条目显示(如果我运行相同的规则但没有mininet,则可以使用。)

提前致谢!

编辑:

更确切地说,这是我试图做的事情:

mininet>h2 iptables -A OUTPUT -j LOG --log-prefix "IPT log: " --log-level 3
mininet>h2 iptables -I OUTPUT -j LOG --log-prefix "IPT log: " --log-level 3
mininet>h2 ping h0
.... normal ping output ....
mininet>h2 wget h0
.... index.html being saved on disk ....
mininet>h2 grep "IPT log" /var/log -R

正如grep所示,尽管通过wget执行的ping和TCP通信发送了多个ICMP消息,但日志中没有单个相关行。

EDIT2:

这是我的iptables规则,经过实验(对不起文字图片): enter image description here

1 个答案:

答案 0 :(得分:1)

INPUT 链仅包含目标为本地计算机的数据包,而不包含正在转发的数据包。

节点(在这种情况下,包含iptables规则的机器)路由(转发)的数据包将通过以下链:

  

PREROUTING - > FORWARD - >的 POSTROUTING

如果要记录所有正在转发的数据包,则需要在日志规则中使用 FORWARD 链更改 INPUT 链。

如果您只想记录 NAT d的数据包,则需要使用 POSTROUTING 链和 nat 表你的日志规则。

修改

由于正在触发针对LOG的iptables规则(在您的实验的OUTPUT链中)(基于您的屏幕截图),我们可以排除任何iptables [日志规则]问题。

问题必须在其他地方,例如日志工具服务(例如syslog)。