在KVM主机上使用iptables设置nat时,无法路由到设置为在主机启动时自动启动的VM

时间:2019-12-19 07:10:38

标签: centos centos6 kvm virsh

问题:

使用CentOS 6.10构建的主机和VM。 通过使用Host iptables的nat函数来路由ExternalMachine⇔VM。 问题是,重新启动主机或打开电源后,iptables已启动(“ service iptables status”), 但是我们无法路由到已自动启动的VM。 发生这种情况后,重新启动iptables(“ service iptables restart”)将通过所有路由。

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

我不知道为什么无法路由到VM。 如果您能教我什么问题,我将不胜感激。

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

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

# virsh autostart <VM NAME>

----- OS -------

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>
-----------------

确认后,主机守护程序的启动顺序如下。

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

libvirt取决于网络,而网络取决于iptables chkconfig的顺序无法更改。 在这种情况下,应该在chkconfig的末尾运行iptables重新启动脚本,还是让anacron重新启动iptables?还是您还有其他存档方法?

1 个答案:

答案 0 :(得分:0)

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