首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在KVM主机上设置IPTables - iptables-persistent正在被忽略

如何在KVM主机上设置IPTables - iptables-persistent正在被忽略
EN

Server Fault用户
提问于 2014-08-16 17:30:40
回答 3查看 6.5K关注 0票数 3

我试图在运行一些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状态输出

代码语言:javascript
复制
# ufw status
Status: inactive

virsh nwfilter-list输出

代码语言:javascript
复制
# virsh nwfilter-list
 UUID                                  Name                 
------------------------------------------------------------------

内容/etc/iptable/

代码语言:javascript
复制
*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的

输出-L -n (不需要的结果)

代码语言:javascript
复制
# 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的

输出-L -n -v -持久启动(预期结果)

代码语言:javascript
复制
# 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           
EN

回答 3

Server Fault用户

发布于 2014-08-17 12:14:10

您所看到的所有“额外”规则都是由libvirt守护进程添加的,以支持(并保护)虚拟机来宾的虚拟网络。您通常不需要担心这些规则(也不应该试图持久化它们,因为它们在下次引导时会被复制)。

很明显,所有的持久防火墙规则都添加到了防火墙中。

如果没有“`iptables”命令的关键-v开关,就很难也不可能识别这两个事实。

票数 2
EN

Server Fault用户

发布于 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格式

票数 1
EN

Server Fault用户

发布于 2014-08-17 00:13:08

您是否签入了/etc/网络/接口中的“pre”指令,该指令可能类似于:

代码语言:javascript
复制
pre-up iptables-restore < /etc/iptables.rules

Ubuntu/Debian上的另一种可能是脚本位于/etc/etc/if-pre-up.d/目录中,因此您应该列出该dir的内容:

代码语言:javascript
复制
# ls -al /etc/network/if-pre-up.d/

另一种可能是NetworkManager加载规则,您可以通过在以下目录中搜索防火墙/iptables来检查该规则:

代码语言:javascript
复制
/etc/NetworkManager/dispatcher.d/

此外,请检查/etc/init和/etc/init.d中的所有脚本,以查看"iptables“和”iptables-还原“。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/621908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档