这条规则
-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。