将tcpdump捕获目标mac地址与NIC的mac地址不匹配的数据包

时间:2017-11-23 12:33:15

标签: networking ethernet tcpdump libpcap tshark

我正在运行一些数据吞吐量测试,方法是使用iperf通过VM对这些数据包进行某种处理来发送UDP数据包。

我的应用程序以混杂模式运行,因此它将获取所有数据包。

我看到我的应用程序丢弃了一些数据包,但我的应用程序计数器显示它不是由于任何减速或故障。

我在我的应用程序中放了一些日志,他们建议以太网帧本身可能已损坏。

我还在iperf机器和我的数据包处理器的vnics上运行tcpdump,但这些数据包从未显示在跟踪中。我希望看到痕迹中出现损坏的数据包。 命令看起来像这样:

tcpdump -i vnet11 -C 100 -w iperf.pcap

tcpdump -i vnet7 -C 100 -w sgi.pcap

我的疑问是,如果以太网帧本身已损坏且目标MAC本身与vnet7或vnet11的MAC地址不匹配,tcpdump是否会捕获这些数据包?

修改 让我感到震惊的是,如果以太网帧本身被破坏导致目标MAC不匹配,那么linuxbridge将不会首先将该数据包发送到我的数据包处理器的vnet接口。所以tcpdump在这里没有任何东西要捕获。 请忽略此问题。

1 个答案:

答案 0 :(得分:1)

事实上,如果问题是损坏的以太网帧,您将根本看不到它。您的网卡将丢弃该框架,您的嗅探器将永远不会看到它。

在混杂模式下运行通常会禁用网卡上的MAC过滤,这样无论目标MAC如何,嗅探器都会看到所有数据包。但是,您无法看到未发送到NIC的数据包(显然),因此在交换环境中,除非您采取其他措施来攻击交换机或配置跨接或镜像端口,否则您将只看到广播和帧用于系统上的MAC。

虚拟机可以进一步复杂化。不同的虚拟化解决方案以不同的方式处理例如,在某些情况下,管理员可以选择配置是否将与主机地址不匹配的帧传送到VM,从而有效地使混杂模式无法实现。