如何在 kvm/virt-manager 中排除 macvtap 网络故障

如何在 kvm/virt-manager 中排除 macvtap 网络故障

我在 13.10 主机上有一个在 qemu-kvm 下运行的虚拟机。我使用 virt-manager 来定义机器,并使用新的 macvtap 驱动程序添加了虚拟 NIC。我有以下定义:

<interface type='direct'>
  <mac address='52:54:00:1f:dd:c4'/>
  <source dev='eth0' mode='bridge'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

在主机上,我可以看到创建了 Tap 接口:

$ip link

5: macvtap0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 500
    link/ether 52:54:00:1f:dd:c4 brd ff:ff:ff:ff:ff:ff

$ls /dev/tap5 
/dev/tap5

但在虚拟机中,接口 eth0 无法访问网络。dhcp 失败。静态配置显然有效,但我无法 ping 任何内容。

我没有 iptables 规则,无论是在主机上,还是在虚拟机中。

那么,我该如何解决这个问题?

答案1

我在使用 Ubuntu 13.10 时遇到了同样的问题,我也更新到 14.04 开发分支来尝试,但仍然不起作用。

我不知道有什么好的调试方法,对于我的问题,我发现 eth0 没有进入混杂模式,我找不到类似device eth0 entered promiscuous modedmesg 输出的消息。所以我强制 eth0 进入混杂模式,问题就消失了。

这是我做的:

  1. 强制 eth0 进入混杂模式: sudo ifconfig eth0 promisc
  2. 使用 virt-manager 启动虚拟机
  3. ifconfig -a然后在外面 ping 一下,看看它是否有效。

我不知道为什么 libvirt 不将 eth0 置于混杂模式,也许是它的一个错误。

相关内容