使用VMware进行预测

这更像是一个testing设置问题。

我想用VMware来debugging虚拟机中的linux内核中的一些networking代码。 我的虚拟机有两个networking接口。 我想要做的是重放主机中的捕获文件,并接收虚拟机中的数据包。 我的问题是我没有看到VM中的重播包。

  1. 我使用sudo在主机上运行VMware和tprep。 因此,我认为不应该有访问设备文件的任何问题。
  2. 我正在运行VMware工作站7.0

一个。 我首先开始使用自定义networking,因为它提供了创build自己的虚拟networking名称的选项。 我分别为这两个接口写了/ dev / vmnet3和/ dev / vmnet4。 但是,在引导guest虚拟机之后,我没有看到在主机上创build的任何这些接口或设备文件(在/ dev中)。

湾 然后,我尝试了“仅主机”,但没有显示与接口关联的网桥/设备文件。

C。 最后我尝试了桥接networking模式。

我在主机上看到vmnet1,vmnet8和vboxnet0。 对于上述三种情况,我已经在这些接口的每一个上显示了捕获文件。 我尝试使用“tcpdump -i any”捕获VM中的数据包。 但是,我没有看到任何数据包。

任何想法/指针?

我最近在VMware Workstation中没有尝试过这种方法,但通常这是由以下原因之一造成的:

  1. 您尝试捕获的虚拟机不会将网卡置于混杂模式,因此看不到数据包。 你可以通过在虚拟机中以root身份运行tcpdump或者通过改变你的tcpreplay来使用虚拟机的MAC地址作为它发送的数据包的目的地来解决这个问题(tcpreplay带有tcprewrite,这使得这种改变变得简单)。 或者,你可以使被重播的数据包的目的MAC地址是广播地址,ff:ff:ff:ff:ff:ff(警告:非常危险除非你真的明白你在做什么,我build议拔掉物理networking之前这样做)。

  2. 主机不允许VM将接口置于混杂模式。 我不确定如何在VMware Workstation中对此进行调整,但在ESX [i]中,vSwitch上有一个用于“允许混杂模式”的选项。 您也可以通过更改tcpreplaystream的目标MAC地址来解决此问题,如1所述。

  3. vmnet在主机上的权限是不正确的,以允许混杂模式工作(假设您使用Linux作为主机操作系统)。 有一堆关于这个的VMware知识库文章,解决它最多是不一致的。 您可以通过将/ dev / vmnetX接口修改为777来实现,但是如果其他答案之一不能解决问题,那么最好使您的重播stream量指向虚拟机的MAC。

祝你好运,

–jed

如果正在重放的捕获中的目标MAC地址不是虚拟机内部接口上的MAC,并且在具有该MAC的同一个VLAN中有一个主机,则将看不到任何stream量,因为虚拟交换机将转发与该MAC关联的端口。

尝试列出网桥转发表并search您的目标MAC。