更新内核不是一个选项,我在尝试运行 iptables 时收到以下消息
root@mail:/etc/postfix# iptables -L
libkmod: ERROR ../libkmod/libkmod.c:554 kmod_search_moddep: could not open moddep file '/lib/modules/2.6.32-5-xen-amd64/modules.dep.bin'
iptables v1.4.14: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
更新:
跑步后
root@mail:/home/admin# sudo depmod
我明白了
ERROR: could not open directory /lib/modules/2.6.32-5-xen-amd64: No such file or directory
FATAL: could not search modules: No such file or directory
之后
root@mail:/home/admin# sudo modinfo ip_tables
我明白了
libkmod: ERROR ../libkmod/libkmod.c:554 kmod_search_moddep: could not open moddep file '/lib/modules/2.6.32-5-xen-amd64/modules.dep.bin'
ERROR: Module alias ip_tables not found.
看来内核更新是必须的。
答案1
您最近是否升级了此安装的内核?通常 iptables 内置于内核中,并且默认情况下不是外部模块(通常 - 我确信在很多情况下情况并非如此)。
尝试使用 depmod 命令重新计算模块加载顺序;它偶尔会修复此问题:
sudo depmod
运行 depmod 后需要重新启动才能生效。如果您收到错误,请用它更新您的问题。
然后看看是否ip_tables.ko
存在:
sudo modinfo ip_tables
如果未加载,请尝试加载:
sudo modprobe ip_tables
最后,作为一个潜在有价值的数据点,请查看此命令使用了哪些与 iptables 相关的内核模块,并用详细信息更新您的问题。
cat /proc/net/ip_tables_matches
如果没有找到,请尝试查看该文件是否在系统上:
find / -name "ip_tables.ko"
如果不是,我相信您至少必须为您的内核版本重建(或从软件包中重新安装)内核模块。