![Ubuntu 21.10 已切换到 nftables,那么为什么 iptables 仍然可用?](https://linux22.com/image/1024649/Ubuntu%2021.10%20%E5%B7%B2%E5%88%87%E6%8D%A2%E5%88%B0%20nftables%EF%BC%8C%E9%82%A3%E4%B9%88%E4%B8%BA%E4%BB%80%E4%B9%88%20iptables%20%E4%BB%8D%E7%84%B6%E5%8F%AF%E7%94%A8%EF%BC%9F.png)
根据21.10 发行说明:
nftables 现在是防火墙的默认后端。
但是,安装了 Ubuntu 21.10 后,我发现我仍然默认安装了 iptables(和 ufw):
m@m-VirtualBox:~$ whereis iptables
iptables: /usr/sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz
m@m-VirtualBox:~$ whereis ufw
ufw: /usr/sbin/ufw /usr/lib/ufw /etc/ufw /usr/share/ufw /usr/share/man/man8/ufw.8.gz
为什么会发生这种情况?
据我所知,ufw
这是一个围绕 iptables 的包装器,而不是 nftables。
我可以安全地使用这些命令吗?或者我应该注意永远不要在终端中输入iptables
或?ufw
答案1
执行完命令后whereis iptables
,你应该关注以下文件。例如,从 20.04 服务器:
doug@s19:~$ whereis iptables
iptables: /usr/sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz
doug@s19:~$ ls -l /usr/sbin/iptables
lrwxrwxrwx 1 root root 26 Jan 23 2020 /usr/sbin/iptables -> /etc/alternatives/iptables
doug@s19:~$ ls -l /etc/alternatives/iptables
lrwxrwxrwx 1 root root 22 Apr 18 2021 /etc/alternatives/iptables -> /usr/sbin/iptables-nft
doug@s19:~$ ls -l /usr/sbin/iptables-nft
lrwxrwxrwx 1 root root 17 Feb 28 2020 /usr/sbin/iptables-nft -> xtables-nft-multi
doug@s19:~$ ls -l /usr/sbin/xtables-nft-multi
-rwxr-xr-x 1 root root 220488 Feb 28 2020 /usr/sbin/xtables-nft-multi
因此,iptables 实际上是在使用 nftables。
nftables 可以解释 iptables 语法。
答案2
我无法回答您的所有问题,但我确实知道其中一些问题的答案。
UFW 是一个防火墙抽象层,可以使用 iptables或者nftables 作为后端防火墙。它只是 Ubuntu 的得力助手,就像 Firewalld + Firewall-cmd 之于 Red Hat 变体一样。
Ubuntu 21.10 Server 的全新服务器安装显示了您所看到的内容 —— 事实上后端仍在标准服务器安装上使用 iptables。
xtables-nft-multi(或者简称为 xtables-multi)的手册页显示了解释:
xtables-nft 是使用 nftables API 的 iptables 版本。这是一组工具,用于帮助系统管理员将规则集从 iptables(8)、ip6tables(8)、arptables(8) 和 ebtables(8) 迁移到 nftables(8)。
据我所知,您说得对,虽然 Ubuntu 似乎正在转向使用 nftables 来替代 iptables,但他们还没有做到这一点。
不过,好消息是,如果您一直在使用 UFW,从管理角度来看什么都不会改变,因为 iptables 和 nftables 似乎可以互换,因为 nft 会接受 iptables 语法,即使您在 /etc/ufw/before.rules 中有奇怪的规则。