iptables 停止工作“无法加载匹配‘状态’:没有这样的文件或目录”

iptables 停止工作“无法加载匹配‘状态’:没有这样的文件或目录”

这条规则

-A INPUT  -i eth0  -p tcp -s 10.0.0.6/24 -m state --state NEW,ESTABLISHED --dport 17828 -j ACCEPT

以前在我的 iptables 上一直工作得很好,但现在似乎失败并显示以下消息:

iptables-restore v1.8.2 (nf_tables): Couldn't load match `state':No such file or directory

这可能是由于系统更新造成的?我无法弄清楚这里的问题。谢谢!

答案1

是的,这可能是由于系统更新所致 - iptables 正在被 nftables 取代,并且iptables-restore您正在运行的版本正在使用 nftables。你应该跑iptables-旧版-恢复反而。

从长远来看,最好迁移到 nftables,因为 iptables 将在某个时候被弃用并从发行版中删除。尝试一下iptables-translate,它可以帮助您完成大部分过渡。

答案2

state已弃用,请使用

-m conntrack --ctstate ESTABLISHED,RELATED

代替

-m state --state ESTABLISHED,RELATED

答案3

我通过 解决了这个问题sudo modprobe ipt_owner

答案4

将内核模块列入黑名单后x_tables,我在仍在使用iptables-nft.我认为iptables-nft只需要内核模块nf_tables,但似乎它还依赖于x_tables识别匹配名称(例如-m state-m limit)。来自lsmod没有列入黑名单的情况:

Module                  Size  Used by
x_tables               53248  4 xt_conntrack,nft_compat,xt_state,ip_tables

因此,请检查您是否没有将内核模块列入黑名单,例如x_tables在其中一个文件中。/etc/modprobe.d/

相反,列入黑名单ip_tables没有问题。

版本:Debian 11.5、linux 5.10.149-2、iptables 1.8.7-1、nftables 0.9.8-3.1+deb11u1。

相关内容