如何防止 iptables 和 nftables 规则同时运行?

如何防止 iptables 和 nftables 规则同时运行?

我正在尝试在自己的桌面上设置防火墙(目前我正在修补 Fedora 29 虚拟机)。我希望以“默认拒绝一切”为基础。我几乎立即决定禁用并屏蔽firewalld.service,因为firewalld除了使用本机语法之外,无法删除传出的数据包iptables。所以我决定求助于nftables,因为它是前者的现代替代品。

问题是,系统重新启动后,iptables链有一些规则,我没有设置(而且我不知道它们来自哪里)。另一方面,# nft list ruleset什么也不返回。所以我假设,来自iptables和的规则nft将同时启用,当我设置一些nft规则时,来自 的规则iptables(可能从“任何地方”出现)将能够进行干预。

我尝试删除iptables,但dnf拒绝这样做,并警告说这systemd取决于它。

那么有人可以在这里回答我的几个问题吗?

  • 我是否正确理解了这里的概念(iptables规则和链条是分开的nft,并且它们同时有效)?
  • 如何nft在不受iptables规则干扰的情况下可靠使用?
  • 或者我应该简单地使用iptables并删除nft

答案1

我不确定这是最好的方法,但是要阻止 iptables 在启动后重新加载,我所做的是

  rm /etc/sysconfig/iptables-config
  rm /etc/sysconfig/ip6tables-config
  systemctl disable firewalld

至于你在底部的问题,我个人没有使用过 nftables,但要查看它们是否同时有效,你可以将其中一个设置为,例如放下所有内容并打开另一个。在两侧重复此操作,如果任一方都无法执行 ping 操作,则表明它们都处于活动状态。

我相信第二个问题可以从发布的命令中得到解答。第三个问题是基于意见的。做你认为更容易学习和使用的事情。

答案2

对于问题本身,这是原始帖子的最后两个问题:

  • 如何在不受 iptables 规则干扰的情况下可靠地使用 nft?
  • 或者我应该简单地使用 iptables 并删除 nft?

这就是nftables 维基说:

What happens when you mix Iptables and Nftables?
How do they interact?

nft       Empty     Accept  Accept      Block        Blank
iptables  Empty     Empty   Block       Accept       Accept
Results   Pass      Pass    Unreachable Unreachable  Pass 

因此,人们不必担心某些流量会被允许,因为它在一种工具中是允许的,而在另一种工具中是禁止的。

至于那些 iptables 规则,正如我所问的,“系统重启后 iptables 链有一些规则,我没有设置(而且我不知道它们来自哪里)”,结果它们来自libvirtd.service,我禁用了它,因为我不需要它。但即使我不这样做也不会受到伤害。

相关内容