KVM如何设置自己的netfilter规则?

KVM如何设置自己的netfilter规则?

我一直在 Centos 6.4 上研究 KVM 虚拟机,但我的虚拟机上没有互联网连接,我发现了一些奇怪的事情:

启动机器后,iptables 在 FORWARD 链中有规则,允许流量通过虚拟机,一切正常。然而,当我运行时service iptables restart,它看起来像是从/etc/sysconfig/iptables(拒绝所有转发的默认设置)中提取配置规则,因此,我已经被降级为要么在物理主机上完全删除防火墙,要么重新启动以添加转发规则,所以它又起作用了。

编辑:
事实上,我可以自己修改防火墙规则以允许它,但这不是这个问题的重点。我更关注以下问题#1:

我的问题是:

  1. 在什么时候(或通过什么机制)添加这些 FORWARD 规则?
  2. 如何在不重新启动计算机的情况下恢复 FORWARD 规则?

坦率地说,我什至不知道从哪里开始寻找这个问题。我发现这一页上面说要修改/etc/sysctl.conf以下变量,据称这些变量会使 netfilter 忽略桥接连接的流量:

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

问题是我的sysctl.conf已经这样设置了,而 netfilter 仍然做它的事情,愉快地阻止虚拟机的所有内容。

答案1

KVM 本身除了运行 VM 之外不执行任何操作。 iptables 规则由 libvirt 制定,(或者 qemu-ifup 脚本,如果您正在做硬核和手动的事情)

无论如何,如果您想避免 iptables 复杂化,请不要在 NAT 配置中使用虚拟机,而改用网桥或 OVS。

OVS配置

桥接网络

相关内容