我一直在尝试使用 tcpdump 捕获发往子网上目标 IP 的数据包,但无法成功。我尝试过:
tcpdump -i eth0 net network-ip-address/27 -A and tcp port 80
但它只给我从我的 IP 发送到目标 IP 的数据包,而不是其他人发送的数据包。
我开始怀疑是否有可能捕获所有此类数据包。如果不可能,您能解释一下原因吗?如果可以,您能告诉我如何做到这一点以及其工作原理吗?
请注意,这是为学习目的而设计的虚拟网络,而不是实际网络。
答案1
您的计算机可能连接到以太网交换机,该交换机只会传输广播流量或绑定到您计算机的 MAC 地址的流量。这就是交换机(为每台计算机提供专用的以太网冲突域)和以太网集线器(在所有连接的设备之间共享冲突域)之间的区别。在共享介质以太网网络中,所有连接到共享介质的设备都“可以看到”所有帧。在交换式以太网网络中,情况并非如此。
将子网中的所有计算机移动到共享介质设备(将它们插入以太网集线器)可能不是一个选择(因为您可能没有可用的以太网集线器)。
您可以使用一种工具,用假地址“淹没”交换机 MAC 表,迫使它从所有端口淹没帧,从而使其在功能上像集线器一样。如果我没有交换机所有者的许可,我不会这样做,但因为这是你的网络,所以这不是问题。ettercap 工具是一个可以执行我正在讨论的 MAC 泛洪的工具示例。
捕获所有流量离开通常,可以使用交换机中的内置监控功能(端口监控,或思科术语中的“SPAN”端口)来复制连接子网到网关路由器的端口上的流量,从而简化子网的监控。使用以太网分路器捕获发往单个设备的流量也是一种可行的策略。