【问题标题】:Why does iptables NAT work in mininet, but iptables logging does not?为什么 iptables NAT 可以在 mininet 中工作,而 iptables 日志记录却不行?
【发布时间】:2016-07-02 09:44:38
【问题描述】:

我在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 文件中没有一个 /related/ 条目出现(如果我在没有 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 所示,尽管通过 ping 发送了多个 ICMP 消息,wget 执行了 TCP 通信,但日志中没有一条相关行。

编辑2:

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

【问题讨论】:

    标签: networking iptables mininet


    【解决方案1】:

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

    节点(在本例中为包含 iptables 规则的机器)正在路由(转发)的数据包将通过以下链:

    PREROUTING -> FORWARD -> POSTROUTING

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

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

    编辑

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

    问题一定出在其他地方,例如日志记录工具服务(例如,syslog)。

    【讨论】:

    • 如果我在 NAT-box 的 PREROUTING 或者 "packet-source" 机器的 OUTPUT 链上安装相同的规则,它仍然没有效果:iptables -t nat -A PREROUTING -j LOG --log-prefix "IPT log: " --log-level 4
    • 你可以尝试使用 -I 代替 -A 吗? (这将在表的头部插入日志规则,而不是将其附加到尾部,从而排除了任何先前规则阻止到达日志规则的可能性)。
    • 刚做了,没效果。我将扩展问题以说明这些实验。
    • 您的 syslog 配置是否触发了 [如,写入任何日志文件] 日志级别为 3 的任何消息?
    • 我不知道触发级别。我刚刚为所有级别 --log-level 1、2、3、4 安装了规则。也在 mininet --log-level 4 之外工作
    猜你喜欢
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2021-10-04
    相关资源
    最近更新 更多