使用 iptables 捕获和记录传出的 IP 数据包

使用 iptables 捕获和记录传出的 IP 数据包

我的目标是使用ipset列表来iptables记录特定 IP 地址的出站流量。我打算被动地监控整个网络。

我已启用端口镜像,端口镜像流量正在广播到具有两个网络适配器的服务器。Eth0 专用于系统管理,Eth1 以混杂模式运行,专用于捕获传递给它的流量。是否可以使用它iptables来记录正在监控的网络上传出的流量?谢谢。

答案1

您是否考虑过使用tcpdump而不是iptables?例如:

tcpdump -w /var/log/packets -i eth1

会将所有可见的数据包转储eth1到文件/var/log/packets。稍后您可以使用tcpdumpwireshark或各种其他工具来分析该文件。

使用iptables,您通常使用LOG目标记录数据包,如下所示:

iptables -A INPUT -i eth1 -j LOG

我不确定这是否iptables是适合这项工作的工具,因为(a)我不知道它如何在混杂模式下与接口一起运行,以及(b)鉴于高数据包速率,这种形式的日志记录可能会对您的系统产生重大的 I/O 影响。

我认为你最好使用tcpdump模型。-G标志将tcpdump导致它定期轮换捕获文件,如果你要长时间捕获,你会想要这样做。所以像这样:

tcpdump -G 3600 -w /var/log/packets-%Y-%m-%d-%H

这将为你提供以下形式的文件:

/var/log/packets-2013-06-20-10

相关内容