macvtap 是否在 VMWARE 的虚拟机之间桥接?
我的应用程序在 VMWARE VM 上运行,并且应该处理来自网络的流量。我正在尝试使用 macvtap 来实现此目的:
ip link set dev eth1_index promisc on allmulticast on up ip link 添加链接 eth1_index 名称 macvtap1 类型 macvtap ip link set dev macvtap1 promisc on allmulticast on up
然后,从应用程序中打开 /dev/tapX,将其设置(通过 TUNSETIFF)为 (IFF_TAP | IFF_NO_PI) 并尝试进行一些流量。
如果我使用 eth1 的 mac 向同一主机上的另一个虚拟机发送/接收流量,我会看到 TX 数据包接收良好,并且响应(发往 eth1 的 mac)转发到 eth1,但不转发到 macvtap1(因此应用程序无法读取他们)。
如果我使用 macvtap1 的 mac 来发送/接收流量 - 我看到(在捕获其他虚拟机时)TX 数据包(以 macvtap 的 mac 作为源 mac) - 不会传递给它(当我捕获“本地”时,我确实看到了这些数据包)虚拟机的 eth1)。
另外,如果我只是尝试(没有我的应用程序)通过 macvtap 接口定义 IP 并从其他虚拟机 ping 它 - 我会看到 ARP 请求到达 eth1,但没有到达 macvtap1。
我的问题是: - macvtap 应该在 VMWARE 虚拟机上工作吗? - 如果是的话,我做错了什么?
谢谢。
答案1
我想我明白了。
macvtap 设备使用自己的 mac 进行接收/发送。因此,对于 vmware,为了让 vswitch 将数据包传送到虚拟机,我更改了端口组的安全设置,将混杂模式设置为打开。有效。