我在以前从未使用过的提供商处使用 Ubuntu 16.04 虚拟机,但立即遇到了新问题。我安装了 iptables 软件包,但是当我尝试运行时iptables -L
,我收到了以下消息:
modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.0-72-generic/modules.dep.bin'
modprobe: FATAL: Module ip_tables not found in directory /lib/modules/4.4.0-72-generic
iptables v1.6.0: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
我的第一个反应是加载 ip_tables 模块,但是 /lib/modules 中没有模块...我也想知道内核配置在哪里,因为它不在 /boot 中。
A 创建了支持票证,但提供商表示我正在寻求的支持级别“需要 SLA 协议”。
想法?
答案1
我能够说服支持人员询问工程师。这实际上非常简单:
apt-get install -y linux-image-$(uname -r)
答案2
运行更新:
sudo apt-get update && sudo apt-get upgrade
如果有内核更新,请重新启动系统,然后
sudo iptables -L
再重试。检查是否
iptables
已内置到内核中:grep -i iptables /boot/config-$(uname -r)
如果输出引用类似的东西
*IPTABLES=y
,那么它已经内置了。确保模块已加载:
sudo modprobe ip_tables
默认情况下该
iptables
服务被禁用。您可以通过以下方式启动并启用它:sudo systemctl start iptables && sudo systemctl enable iptables