Qemu 随机可以';t连接到libvirt中的来宾vm

Qemu 随机可以';t连接到libvirt中的来宾vm,qemu,kvm,libvirt,Qemu,Kvm,Libvirt,我无法可靠地触发此事件,尽管如果我一次启动多个虚拟机,然后尝试连接其中一些虚拟机,我会遇到以下情况: $ ping 192.168.122.135 PING 192.168.122.135 (192.168.122.135) 56(84) bytes of data. From 192.168.122.1 icmp_seq=1 Destination Host Unreachable From 192.168.122.1 icmp_seq=2 Destination Host Unreachab

我无法可靠地触发此事件,尽管如果我一次启动多个虚拟机,然后尝试连接其中一些虚拟机,我会遇到以下情况:

$ ping 192.168.122.135
PING 192.168.122.135 (192.168.122.135) 56(84) bytes of data.
From 192.168.122.1 icmp_seq=1 Destination Host Unreachable
From 192.168.122.1 icmp_seq=2 Destination Host Unreachable
From 192.168.122.1 icmp_seq=3 Destination Host Unreachable
请注意,我创建并启动的所有虚拟机都不会发生这种情况,只有少数虚拟机(随机)

获得ip
192.168.122.135
的vm在其域xml中的网络具有以下内容:

<interface type='network'>
  <mac address='52:54:00:3d:72:ab'/>
  <source network='default'/>
  <target dev='vnet0'/>
  <model type='virtio'/>
  <alias name='net0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</interface>

下面是ip路由列表的部分输出:

192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1
上面的路由输出使我认为它应该工作。但事实并非如此。它只是有时会失败,而且大部分时间都有效

为什么我不能从主机连接到来宾(
192.168.122.135

我最初使用过滤器,但是从VM的域xml中删除过滤器对随机出现的这种情况没有影响。如果我同时启动多个虚拟机,我可以让它们中的很多发生这种情况。不过,有些虚拟机工作得很好,允许我连接

另外,我正在使用ubuntu 14.04.3:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:        14.04
Codename:       trusty
使用内核
3.19.0-30-generic

更多信息-virsh版本:

$ virsh --version
1.2.2
libvirtd版本:

$ libvirtd --version
libvirtd (libvirt) 1.2.2

我没有足够的声誉来评论。。。但我有一些建议,你可以尝试进一步探讨这个问题

问题:在vnet0上的192.168.122.X子网中分配IP地址有什么作用吗?配置的路由似乎表明您的流量将转到virbr0,因为它具有192.168.122.1IP地址。如果您无法ping该子网中的任何其他设备,那么我怀疑这就是问题所在

如果这不能让你取得任何进展…

  • 主机/VM上的数据包跟踪

    发生这种情况时,请尝试在virbr0和内部VM接口上进行数据包转储。Ping虚拟机,看看你看到了什么样的流量

    sudo tcpdump-n-i virbr0-v“icmp或arp”

    根据您在那里看到的情况,将有助于缩小问题的根源。如果您甚至没有在该接口上获得ping,那么这就是主机上的路由问题。如果ping正在进行,但是VM没有看到它们,那么这就是libvirt网络的网络/路由问题

    我建议您也使用一个正常工作的VM来执行上述操作,这样您就有了一个参考来比较流量

  • 检查ARP缓存

    发生这种情况时,请检查主机上的ARP缓存。缓存中是否存在mac地址?也许它被弄坏了

    要转储arp缓存,请执行以下操作:

    #arp

  • 检查您的libvirt日志

    如果已配置,libvirt将使用“libvirtd”标记登录到syslog。检查您的配置以确保已启用此功能。这似乎不太可能是libvirt问题,但打开日志记录不会有什么坏处

    要启用此设置

    #vi/etc/libvirt/libvirtd.conf

    添加行

    log\u输出\u1:syslog:libvirtd”

    重新启动libvirt

    #重新启动服务libvirt bin


我在CentOS 7主机上有相同的网络设置和类似的问题。最终,问题是来宾虚拟机的防火墙设置阻止了回显请求和其他外部连接。更改防火墙设置后,问题就解决了。

我也遇到过类似的问题。我只是试着按照下面的命令检查机器是否安装正确

lsmod | grep kvm
如果显示kvm详细信息,则机器已正确安装

然后重新启动服务

service libvirtd restart
还可以使用下面的命令检查网关

netstat -rn

在我的案例中,我有一个安装了Libvirt的硬件服务器

在这台服务器上,我在安装libvirt的地方创建了VM,然后我得到了随机网络中断和ping响应,响应为
192.168.122.1

From 192.168.122.1 icmp_seq=1 Destination Host Unreachable
我已修复了在硬件服务器上删除默认libvirt网络的问题,如下所示:

virsh net-destroy default
virsh net-undefine default

如果您可以将此编辑为答案,请执行。否则,你很清楚规则,所以赶快离开那里,提高你的代表!行!如果没有更多的信息,很难给出准确的答案。一旦我有了这个,我会修改这个,并把它变成一个真正的答案。
netstat -rn
From 192.168.122.1 icmp_seq=1 Destination Host Unreachable
virsh net-destroy default
virsh net-undefine default