Ubuntu 21.10 切换到 nftables,那么为什么 iptables 仍然可用?

gaa*_*kam 9 iptables ufw nftables 21.10

根据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
Run Code Online (Sandbox Code Playgroud)

为什么会出现这种情况?

据我所知,ufw是 iptables 的包装,而不是 nftables。

我可以安全地使用这些命令吗?或者我应该注意不要在终端中输入iptables或?ufw

Dou*_*ies 10

发出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
Run Code Online (Sandbox Code Playgroud)

所以,iptables实际上是在使用nftables。

nftables 可以解释 iptables 语法。

  • `readlink -f` 是你的朋友:`readlink -f $(which iptables) -> /usr/sbin/xtables-nft-multi` (4认同)

小智 6

我没有你问题的全部答案,但我有一些。

UFW 是一个防火墙抽象层,可以使用 iptablesnftables 作为后端防火墙。它只是 Ubuntu 的方便助手,就像 Red Hat 变体的 Firewalld + firewall-cmd 一样。

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。