我正在运行 AlmaLinux 9,启动时我看到警告
Warning: Deprecated Driver is detected: nft_compat will not be maintained in a future major release and may be disabled
但是加载该驱动程序的是什么?我禁用了firewalld服务。我想(正确地)消除这个警告。
附加信息:
[root@server ~]# lsmod | grep nft_compat
nft_compat 20480 14
nf_tables 278528 98 nft_compat,nft_counter,nft_chain_nat
nfnetlink 20480 2 nft_compat,nf_tables
[root@server ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
NETAVARK_FORWARD all -- 0.0.0.0/0 0.0.0.0/0 /* netavark firewall plugin rules */
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain NETAVARK_FORWARD (1 references)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 10.88.0.0/16 ctstate RELATED,ESTABLISHED
ACCEPT all -- 10.88.0.0/16 0.0.0.0/0
Chain NETAVARK_ISOLATION_2 (1 references)
target prot opt source destination
Chain NETAVARK_ISOLATION_3 (0 references)
target prot opt source destination
DROP all -- 0.0.0.0/0 0.0.0.0/0
NETAVARK_ISOLATION_2 all -- 0.0.0.0/0 0.0.0.0/0
关于消息本身:它不是上游内核消息,而是 AlmaLinux 9 中添加的特定消息(可能继承自 RHEL 9)。
该
nft_compat
模块是兼容层,允许在nftables上运行iptables,并且仍然使用非 nftables 模块。任何使用的 xtables 模块都需要工作
iptables-nft
,而不是将iptablesiptables-nft
规则转换为纯本机nftables规则。nft_compat
从一个干净的虚拟机开始,不运行任何与网络相关的内容,因此没有
nft_compat
加载,几乎任何不为空的东西都会加载它。这不会:
因为它被纯粹翻译成nftables代码:
几乎任何其他东西都会(直到用户空间和内核版本允许将其转换为本机nftables,因此这可能取决于给定规则的iptables版本和内核版本)。
显示的任何条目
nft --debug=netlink ...
包括target name
(对于iptables-nft .. -j
target ) 或match name
(对于iptables-nft ... -m
modulex_tables
) 都意味着它正在通过兼容性模块使用相应的内核模块nft_compat
。要摆脱它,请
iptables-nft
完全不要使用或使用其库的工具(libip4tc2,...)。当然,恢复到iptables-legacy
(如果甚至提供了?)会更糟糕:这个层打算在上游被弃用,并且兼容性层打算保留很长时间以取代它。这可能意味着:不要使用 Docker,不要使用 podman,不要使用......
结论:我不知道如何摆脱这个消息。