我试图在运行一些KVM来宾的ubuntu14.04.1主机上设置一些特定的IPTables规则。
该框有多个具有多个IP地址的NIC,并且来宾根据其功能使用不同的地址。
我通常使用iptables--持久化来实现这一点,但是由于某种原因,在引导时没有加载/etc/iptables/rues.v4下的规则。iptables-当没有安装libvirt时,持久性工作正常。
如果我运行‘/etc/init.d/iptables-持久化启动’,那么规则就会被加载,并且设置和我预期的一样。但在开学的时候他们却不是。我尝试创建一个非常简单的rules.v4文件来调试这个文件,但是它仍然没有加载。
iptables持久性的init符号链接存在于/etc/rc2.d/S37iptable-持久性
我已经确认ufw是残疾的。我还从/etc/libvirt/nwfilter中删除了nwfilter规则,list不显示任何条目。
你知不知道还会有什么设置这些规则,以及我如何根据自己的意愿定制这些规则?
# ufw status
Status: inactive# virsh nwfilter-list
UUID Name
------------------------------------------------------------------*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:LOG_AND_DROP - [0:0]
-A INPUT -s 192.168.10.0/24 -i br0 -j ACCEPT
-A INPUT -s 192.168.11.0/24 -i br0 -j ACCEPT
-A LOG_AND_DROP -j LOG --log-prefix "iptables deny: " --log-level 7
-A LOG_AND_DROP -j DROP
COMMIT启动后iptables的
# iptables -L -n -v
Chain INPUT (policy ACCEPT 12 packets, 912 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
0 0 ACCEPT udp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
0 0 ACCEPT udp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
193 17300 ACCEPT all -- br0 * 192.168.10.0/24 0.0.0.0/0
0 0 ACCEPT all -- br0 * 192.168.11.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- tunnelbr0 tunnelbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * tunnelbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- mgmtbr0 mgmtbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * mgmtbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT 132 packets, 17456 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
0 0 ACCEPT udp -- * tunnelbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
0 0 ACCEPT udp -- * mgmtbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
Chain LOG_AND_DROP (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix "iptables deny: "
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 运行/etc/init.d/ iptables后iptables的
# iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
13 920 ACCEPT all -- br0 * 192.168.10.0/24 0.0.0.0/0
0 0 ACCEPT all -- br0 * 192.168.11.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 8 packets, 1104 bytes)
pkts bytes target prot opt in out source destination
Chain LOG_AND_DROP (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix "iptables deny: "
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 发布于 2014-08-17 12:14:10
您所看到的所有“额外”规则都是由libvirt守护进程添加的,以支持(并保护)虚拟机来宾的虚拟网络。您通常不需要担心这些规则(也不应该试图持久化它们,因为它们在下次引导时会被复制)。
很明显,所有的持久防火墙规则都添加到了防火墙中。
如果没有“`iptables”命令的关键-v开关,就很难也不可能识别这两个事实。
发布于 2022-03-26 21:19:40
我知道这个问题很老,但既然你问这些规则从何而来,以及如何定制它们,还没有得到充分的回答,我会尝试这样做.
正如迈克尔·汉普顿已经说过的那样,这些规则来自于利布维特。以下是libvirt文档中的一些引号:
Libvirt还可以选择使用DNSMASQ向虚拟网络提供DHCP服务。在任何情况下,我们都需要允许DNS/DHCP查询主机操作系统。由于我们无法预测主机防火墙设置是否已经允许这样做,所以我们将4个规则插入到输入链的头上,下一个规则取决于允许的连接类型,然后进入主前向链。
在每个网络的配置中,规则由“前向模式”控制。您不能修改这些规则,因为它们不在配置文件或脚本中,而是在源代码中。这些iptables规则不应与您提到的网络过滤器(virsh nwfilter-list)混淆,因为网络过滤器应用于虚拟机。有关更多细节,请参见网络过滤器。
2016年,加入了“开放”-network前进模式。当为网络指定时,libvirt不会为网络生成任何iptables规则。见bug 846810。
因此,将您的网络(virsh net-edit)编辑为<forward mode='open'/>。
open类似于route,但是不会添加防火墙规则来启用或阻止任何这种通信。有关更多详细信息,请参阅网络XML格式。
发布于 2014-08-17 00:13:08
您是否签入了/etc/网络/接口中的“pre”指令,该指令可能类似于:
pre-up iptables-restore < /etc/iptables.rulesUbuntu/Debian上的另一种可能是脚本位于/etc/etc/if-pre-up.d/目录中,因此您应该列出该dir的内容:
# ls -al /etc/network/if-pre-up.d/另一种可能是NetworkManager加载规则,您可以通过在以下目录中搜索防火墙/iptables来检查该规则:
/etc/NetworkManager/dispatcher.d/此外,请检查/etc/init和/etc/init.d中的所有脚本,以查看"iptables“和”iptables-还原“。
https://serverfault.com/questions/621908
复制相似问题