警告:存在 iptables-legacy 表

iBu*_*Bug 8 iptables firewall networking nftables

update-alternatives --set iptables /usr/sbin/iptables-nft通过运行并重新启动服务器,我已将 Ubuntu Focal 服务器防火墙后端从旧版 iptables 迁移到 netfilter 。现在显示的所有表iptables-legacy -S都是空的,但是当我运行iptables -S最后一行时总是显示:

# Warning: iptables-legacy tables present, use iptables-legacy to see them
Run Code Online (Sandbox Code Playgroud)

此后我已iptables-legacy使用以下命令从替代方案中删除:

update-alternatives --remove iptables /usr/sbin/iptables-legacy
Run Code Online (Sandbox Code Playgroud)

现在只显示 netfilter 版本

root@iBug-Server:~# update-alternatives --display iptables
iptables - auto mode
  link best version is /usr/sbin/iptables-nft
  link currently points to /usr/sbin/iptables-nft
  link iptables is /usr/sbin/iptables
  slave iptables-restore is /usr/sbin/iptables-restore
  slave iptables-save is /usr/sbin/iptables-save
/usr/sbin/iptables-nft - priority 20
  slave iptables-restore: /usr/sbin/iptables-nft-restore
  slave iptables-save: /usr/sbin/iptables-nft-save
Run Code Online (Sandbox Code Playgroud)

我怎样才能摆脱这个警告?

iBu*_*Bug 3

正如错误消息所示,这是因为存在旧版(非 netfilter)iptables 子系统。最常见的原因是iptables-legacy调用了加载旧模块的命令。

有 5 个与旧版 iptables 相关的模块,每个表一个。(:模块名称以 开头iptable_,这里没有 S)

iptable_filter
iptable_nat
iptable_mangle
iptable_raw
iptable_security
Run Code Online (Sandbox Code Playgroud)

当加载其中任何一个时,iptables-nft确定旧版 iptables 存在,并发出上述警告。

同样,还有 5 个用于旧版 IPv6 iptables 的模块,每个模块都以ip6table_(这里也没有 S)开头。

迁移到 netfilter 后,可以安全删除这 10 个模块并将其rmmod列入黑名单。

再次注意, usingblacklist iptable_filter在这里不起作用,因为该指令仅阻止自动加载,但不能通过modprobe(8)或其他命令手动加载。使用此解决方案install <modulename> /bin/false应正确防止模块在任何情况下加载。