iptables/1.8.2 无法初始化 nft:不支持协议

iptables/1.8.2 无法初始化 nft:不支持协议

我正在运行 Debian,并尝试使用 iptables 设置一些防火墙规则,但收到一个错误:

iptables/1.8.2 Failed to initialize nft: Protocol not supported

无论我尝试设置哪种规则,它都会给出相同的错误。我尝试在 Google 上搜索错误,但没有找到任何内容。

这些是我想要设置的规则:

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

有谁有想法吗?谢谢

答案1

Debian 10 使用默认情况下使用 iptables 而不是 nftables。这意味着不同的iptables命令(iptables-nft)正在与内核 nftables API 进行通信:它实际上翻译了每一个iptables统治成nftables规则,同时保持表格当扩展不存在直接的本地翻译时,模块扩展兼容性。

因为,不知何故,你的内核nftablesAPI 不起作用(我猜它不是标准的 Debian 10 内核,并且未启用 nftables 支持。回答是什么uname -r?),命令失败。您仍然可以选择恢复到仅与 iptables 内核 API 通信的旧版 iptables 命令,通过更改实际执行的用户空间命令,如上一个链接中所述:

# update-alternatives --set iptables /usr/sbin/iptables-legacy
# update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# update-alternatives --set arptables /usr/sbin/arptables-legacy
# update-alternatives --set ebtables /usr/sbin/ebtables-legacy

你仍然需要调查你的非功能性nftables功能。由于从 iptables 切换到(原生)nftables 带来了巨大的优势,因此如果不能这样做就太糟糕了。

答案2

我的解决方案来自这里:内核升级后我需要重启。最简单的方法当然是:

# as root
shutdown -r now

相关内容