首先,我想说:我知道,一开始就做错了,我想避免因为普遍的停机而从头开始做所有事情。
我在 RHEL 上运行 libvirt/KVM。我有使用 NAT 网络配置文件(默认配置文件)运行的 VM。我已通过 sysconfig/iptables 从主机设置端口转发等,一切正常。
但是,如果 libvird 守护进程由于某些内部原因重新加载,或者收到SIGHUP
- 它会重新加载 iptables 配置并从其过滤配置文件中添加规则即一切都按照设计和记录进行(libvirt 和防火墙+libvirt nwfilter 文档) - SW没有问题,这是配置问题。
但是在我需要它之前,有些规则就引入了,REJECT
并且我无法通过转发端口连接到机器,如下所示:
运行后service iptables restart
-一切都将像以前一样正常工作。
有没有办法强制 libvirt 改变这两个的顺序或禁用这两个特定的?
也许有人面临过完全相同的问题并且已经准备好了答案。
谢谢
答案1
您可以创建自己的 NAT 网络,这意味着 libvirt 不会添加任何防火墙规则。请参阅自定义基于 NAT 的网络在此libvirt 网络手册。
答案2
我理解你的痛苦。我真的希望 libvirt 能更好地支持这一点。
创建一个脚本,在您的客户机上应用端口转发防火墙规则。请确保使用,iptables -I
以便您的规则插入到 libvirt 的 REJECT 规则之前。
你需要使用钩子每次 libvirt 启动或重新加载时运行该脚本。
此外,你应该确保 libvirt 和端口转发的规则没有保存在/etc/sysconfig/iptables. 让 libvirt 和你的钩子设置这些。