使用nat – iptables覆盖libvirt和networking过滤

起初,我想说:我知道,最初的做法是错误的,我想避免因为一般的停机而从头做起。

我在RHEL上运行libvirt / KVM。 我有虚拟机运行NATnetworkingconfiguration文件(默认的一个)。 我已经通过sysconfig / iptables从主机设置端口转发等,一切都很好。

但是如果libvird守护进程因某些内部原因而重新加载,或者接收到SIGHUP ,它将重新加载iptablesconfiguration,并从其过滤configuration文件中添加规则, 即一切按devise和文档运行 ( libvirt和firewall + libvirt nwfilter文档 ) – SW没有问题是configuration问题。

但是有些规则在我需要之前引入了REJECT ,我无法通过转发的端口连接到机器,如下所示:

在这里输入图像说明

运行service iptables restart – 一切都会像以前一样工作。

有没有办法强制libvirt改变这两个命令或禁用这些特定的?

也许有人面对完全相同的问题,并已准备好答案。

谢谢

您可以创build自己的NATnetworking,这意味着libvirt不会添加任何防火墙规则。 请参阅此libvirtnetworking手册上的基于自定义NAT的networking 。

我感到你的痛苦。 我真的希望libvirt更好的支持。

您需要创build一个脚本来适应客人的端口转发防火墙规则。 请确保使用iptables -I以便在libvirt的REJECT规则之前插入您的规则。

每次libvirt启动或重新加载时,您都需要使用钩子来运行该脚本。

此外,您应该确保libvirt和您的端口转发规则不保存在/ etc / sysconfig / iptables中 。 让libvirt和你的钩子设置这些。