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
此后,我iptables-legacy
使用以下命令从替代方案中删除:
update-alternatives --remove iptables /usr/sbin/iptables-legacy
现在只显示 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
我怎样才能摆脱这个警告?
正如错误消息所说,这是因为存在旧版(非 netfilter)iptables 子系统。最常见的原因是
iptables-legacy
调用了该命令,该命令加载了遗留模块。有 5 个与旧版 iptables 相关的模块,每个表一个。(注意:模块名称以 开头
iptable_
,此处没有 S)当其中任何一个被加载时,
iptables-nft
确定遗留 iptables 存在,并发出上述警告。同样,还有 5 个用于传统 IPv6 iptables 的模块,每个模块都以
ip6table_
(这里也没有 S)开头。迁移到 netfilter 后,这 10 个模块可以安全地删除
rmmod
并列入黑名单。再次注意 using
blacklist iptable_filter
在这里不起作用,因为该指令仅阻止自动加载,而不是通过modprobe(8)
或其他命令手动加载。使用此解决方案install <modulename> /bin/false
应正确防止模块在任何情况下加载。