我正在将 iptables 安装到无法访问互联网的嵌入式 Debian 8.7 armhf 计算机上。我的方法是从 Debian 档案中手动查找 .deb 软件包文件,然后将它们通过 FTP 传输到 Debian 8.7 机器并运行 dpkg。
经过一番努力,我似乎能够安装 iptables .deb 包及其所有依赖项。但是,当我开始尝试使用 iptables 时,出现以下错误:
modprobe: FATAL: Module ip_tables not found.
iptables v1.6.0: can't initialize iptables table `filter': Table does not exist (do you need insmod?)
运行时,lsmod
我实际上可以看到模块 ip_tables 没有加载,甚至没有安装在我的机器上(我在机器上的任何地方都找不到 .ko)。
所以我很好奇 - iptables 的 dpkg 是否应该安装 iptables 内核模块?或者 dpkg 只处理用户空间配置?注意 - 我不相信我的内核版本已经编译了 iptables。
答案1
dpkg
安装所提供的包中提供的所有内容,并运行包中包含的维护者脚本。
在iptables
这种情况下,iptables
命令本身负责加载相关的内核模块。然而,内核模块需要可用——这通常由内核包来处理,但在嵌入式系统上,也很常见找到可能不具有所有必需模块的自定义内核,或者需要将模块安装在某些系统中。平台特定的方式。
根据您的具体系统,您也许能够安装 Debian 内核 ( linux-image-3.16.0-6-armhf
);如果你可以用它启动,它将提供iptables
模块。