我有一台 KVM CentOS 主机和几台 CentOS 客户机。所有客户机都使用网桥进行网络通信。客户机已启动并运行了几个月,并且运行正常。由于基于网桥的网络配置,客户机无法直接与主机通信。据我所知,这是正常的。来源:Libvirt——macvtap
我现在有一个场景,我希望客户机能够与主机进行通信以进行管理。使用来自 libvirt.org 的上述同一篇文章,我在主机上配置了一个“隔离”虚拟网络:
<network connections='1'>
<name>isolated</name>
<uuid>xxxxx-xxxx-xxxxx-xxxxx-xxxxx</uuid>
<bridge name='virbr1' stp='on' delay='0' />
<mac address='xx:xx:xx:xx:xx:xx'/>
<ip address='10.4.4.1' netmask='255.255.255.0'>
<dhcp>
<range start='10.4.4.2' end='10.4.4.6' />
</dhcp>
</ip>
</network>
然后我在客户机上添加了一个新的网络接口:
<interface type='network'>
<mac address='xx:xx:xx:xx:xx:xx'/>
<source network='isolated'/>
<target dev='vnet13'/>
<model type='virtio'/>
<alias name='net1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</interface>
当我重新启动客户机时,客户机从主机“隔离”网络收到一个新地址,一切似乎都运行良好。然后几个小时后,“隔离”网络似乎停止了通信。重新启动客户机上的网络无法解决问题。似乎客户机上的 dhcp 客户端无法获取地址,我在 /var/log/messages 中看到日志记录表明:
guest-host NetworkManager[684]: <warn> (eth1): DHCPv4 request timed out.
我重新将主机和客户机上的隔离网络配置为静态。主机和客户机仍然无法通信。
我最终关闭了客户机,删除了客户机的“隔离”网络接口,并在客户机上为“隔离”网络添加了一个新接口。当我重新打开客户机时,网络又恢复了工作。然而,一小时后,网络再次无法通信,无法获取 DHCP 地址。问题似乎出在主机和客户机之间的“隔离”网络上,而不是 DHCP 特定的问题。
在此期间,所有主机上基于桥接的网络继续正常工作。
答案1
看来我因为其他原因重启了主机上的防火墙,从而自己造成了这个问题。当 libvirtd 启动时,Libvirtd 会向防火墙添加网络过滤规则。重启防火墙将删除这些规则。如果重启防火墙,则需要重启 libvirtd。