tcpdump -i 任意模式和混杂模式

tcpdump -i 任意模式和混杂模式

来自 tcpdump 4.1.1 的手册页(是的,我知道它很旧)

   -i     Listen  on interface.  If unspecified, tcpdump searches the 
          system interface list for the lowest numbered, configured up 
          interface (excluding loopback).  Ties are broken by choosing >               the earliest match.

          On Linux systems with 2.2 or later kernels, an interface 
          argument of ``any'' can be used to capture packets from all
          interfaces.
          Note  that captures on the ``any'' device will not be done in
          promiscuous mode.

谁能解释一下最后一句话的确切含义。我正在使用具有许多接口的 IDS 服务器,当我使用 tcpdump -i any 时,它清楚地显示不是源自/目的地为 IDS 服务器的流量。然而,还有另一个服务已经将所有接口置于混杂模式。它们是否可能只是意味着如果您使用 -i any tcpdump 不会将接口置于 PROMISC 模式?

答案1

它们是否可能只是意味着如果您使用 -i any tcpdump 不会将接口置于 PROMISC 模式?

是的,这就是我的意思。 “任何”设备并不是通过独立打开所有设备并捕获它们来工作的,而是通过打开“数据包套接字”来工作,而不是将其绑定到特定设备(这就是在 Linux 上在该设备上捕获的方式) ,使其未绑定,以便它侦听所有套接字。

对设置混杂模式的调用将在未绑定的套接字上失败(我刚刚在相当新的内核上测试了它),因此 libpcap 不会为“任何”设备打开混杂模式。

答案2

为了避免混杂模式,也可以使用 -p 参数,如下所示:

tcpdump -p -i eth0

不要将接口置于混杂模式。如果您有一个小型网络或集群,查看所有数据包可能会很有趣。否则,启用混杂模式后,网络很容易淹没您的计算机。

相关内容