0

问题:</p>

使用 CentOS 6.10 构建的主机和虚拟机。ExternalMachine⇔VM 使用 Host iptables 的 nat 功能进行路由。作为一个问题,重启Host机器或打开电源后iptables已经启动(“service iptables status”),但是我们无法路由到已经自动启动的VM。出现这种现象后,重启 iptables("service iptables restart") 会通过所有路由。

iptables 和 VM 都在运行,并且 iptables 设置符合预期。

我不知道为什么它不能路由到虚拟机。如果你能教我什么是问题,我将不胜感激。

---------AutostartSetting/StopSetting------------

# vi /etc/sysconfig/libvirt-guests
START_DELAY=30
ON_SHUTDOWN=shutdown
SHUTDOWN_TIMEOUT=180

# virsh autostart <VM NAME>

-----操作系统-------

cat /etc/redhat-release
CentOS release 6.10 (Final)

----kvm----

qemu-kvm-0.12.1.2-2.506.el6_10.5.x86_64

附加信息:

---------------
#virsh net-edit default

<network>
  <name>default</name>
  <uuid>1d4f2476-0da2-45d5-b97f-xxxxxxxxxxx</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='off' delay='0' />
  <mac address='XX:XX:XX:XX:XX:XX'/>
  <ip address='1.2.3.4' netmask='255.255.255.0'>
  </ip>
</network>
-----------------

确认后,Host daemon 的启动顺序如下。

1.iptables 2.network 3.qemu-ga 4.libvirtd 5.libvirt-guest

libvirt 依赖网络,网络依赖 iptables chkconfig 的顺序无法更改。在这种情况下,我应该在 chkconfig 结束时运行 iptables 重启脚本,还是让 anacron 重启 iptables?或者你有没有其他方法来归档它?

4

1 回答 1

0

libvirt/qemu 网络是如何配置的?如果它是 tap 网络(或 macvtap,与此相同),则实际的 tap 设备(来自ip addr输出)仅在 VM 暂停或运行时存在。并且 iptables 规则使用接口,因此如果在 iptables(重新)启动时该接口不存在,则需要在创建 VM 时重新添加规则。简单的 iptables 重启也可以。

于 2019-12-19T09:24:05.270 回答