我在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消息,但日志中没有单个相关行。
答案 0 :(得分:1)
INPUT 链仅包含目标为本地计算机的数据包,而不包含正在转发的数据包。
节点(在这种情况下,包含iptables规则的机器)路由(转发)的数据包将通过以下链:
PREROUTING - > FORWARD - >的 POSTROUTING 强>
如果要记录所有正在转发的数据包,则需要在日志规则中使用 FORWARD 链更改 INPUT 链。
如果您只想记录 NAT d的数据包,则需要使用 POSTROUTING 链和 nat 表你的日志规则。
修改强>
由于正在触发针对LOG的iptables规则(在您的实验的OUTPUT链中)(基于您的屏幕截图),我们可以排除任何iptables
[日志规则]问题。
问题必须在其他地方,例如日志工具服务(例如syslog
)。