Ken*_*nan 11 iptables raspberry-pi raspbian
我在 Raspberry PI 上使用 iptables 时遇到问题。
我刚刚在我的 PI 上下载了一个新版本的 Raspbian Lite,我想做的就是检查我的 iptables 规则,但它不起作用,我收到了这个错误:>> iptables -Liptables/1.8.2 Failed to initialize nft: Protocol not supported
我不知道该怎么办?我可以回到旧版本的 iptables 之类的吗?
请记住,我是 IT 世界的真正初学者。
小智 11
解决方案在这里:您需要在内核升级后重新启动。最简单的方法当然是:
# as root
reboot
Run Code Online (Sandbox Code Playgroud)
Raspbian肯定其次在Debian上游有:默认情况下,新的iptablesuserland工具使用nftables而不是“遗产” iptables的内核API内核API,如告诉在这里:
当前状态
注意:Debian Buster 默认使用 nftables 框架。
从 Debian Buster 开始,nf_tables 是使用 iptables 时的默认后端,通过 iptables-nft 层(即,在 nf_tables 内核子系统中使用 iptables 语法)。这也会影响 ip6tables、arptables 和 ebtables。
nftables旨在完全替换iptables扩展功能,但具有完全不同的实现。无论如何都会保留一个兼容层,主要在用户空间工具中,但部分在内核中。这是通常的iptables“遗留”层的补充,该层仍将长期存在于内核中。
的较新版本iptables正在使用此兼容层。这可以通过运行 (作为 root) 来轻松验证iptables -V。结果肯定是:
# iptables -V
iptables v1.8.2 (nf_tables)
Run Code Online (Sandbox Code Playgroud)
虽然仍然提供旧版本:
# iptables-legacy -V
iptables v1.8.2 (legacy)
Run Code Online (Sandbox Code Playgroud)
同时,我猜您的内核出于某种原因不支持 nftables。
这样你就可以:
在内核中获得对 nftables 的支持(可能至少也是如此NFT_COMPAT)。如果您保留旧的,可能需要重新编译或升级它。如果这个任务需要太多的努力,你可以使用另一个替代方案,
或使用iptables将使用通常的 iptables 内核 API 的旧版本。在以前的链接解释如何做到这一点。作为 root 用户(至少对于iptablesand ip6tables,也许对于ebtablesandarptables如果已安装):
切换到旧版本:
Run Code Online (Sandbox Code Playgroud)# 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
| 归档时间: |
|
| 查看次数: |
18913 次 |
| 最近记录: |