iptables v1.4.14:无法初始化iptables表`nat':表不存在(您需要insmod吗?)

问题描述 投票:33回答:13

我正在尝试设置iptable规则,使用iptable时出现以下错误消息:

iptables v1.4.14: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

我正在使用:

cat /etc/debian_version 
7.4

uname -a
Linux myserver 2.6.32-22-pve #1 SMP Mon Jul 15 08:36:46 CEST 2013 x86_64 GNU/Linux

uname -r
2.6.32-22-pve

这是由服务提供商托管的虚拟服务器。

我该怎么解决?

linux-kernel debian iptables
13个回答
17
投票

我遇到了同样的问题,并且可行:

sudo modprobe ip_tables
sudo echo 'ip_tables' >> /etc/modules

http://www.howtoforge.com/forums/showthread.php?t=3196


18
投票

我在Debian 8中遇到了同样的问题。我通过重新启动系统来解决它。如果更新内核映像并且此后未重新启动系统,则似乎会发生错误。


8
投票

如果您看到此错误消息并且未使用某种基于容器的受限托管(例如OpenVZ),可能会有用,那么问题可能是内核缺少nat模块。要检查运行:

modinfo iptable_nat

这应该打印出模块的位置,如果它打印出错误,那么您知道这是您的问题。还有一些依赖模块,例如nf_nat可能会丢失,因此如果iptable_nat模块在那里但失败了,您将不得不更深入地研究。如果缺少它,则需要获取另一个内核和模块,或者如果要自己滚动,请确保内核配置包含CONFIG_IP_NF_NAT=m(对于IPv4 NAT)。

有关信息,通常在以下位置之一找到相关的内核模块:

ls /lib/modules/`uname -r`/kernel/net/netfilter/
ls /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/

如果您正在运行IPv6,也请查看此处:

ls /lib/modules/`uname -r`/kernel/net/ipv6/netfilter/

6
投票

最后,我的服务提供商回答了:

这是我们使用的虚拟化系统(OpenVZ)的局限性, 基本的iptables规则是可能的,但那些使用nat的人则不可能 表。

如果确实有问题,我们可以为您提供迁移到另一个 我们开始向客户提供系统虚拟化(KVM)。

所以我不得不将服务器迁移到新系统...


5
投票

简短版:

先在主机上运行iptables,然后再在虚拟服务器中运行它(我很确定这是某种LXC或OpenVZ容器)。

长版:

问题是由于ip_table模块按需加载的事实。因此,重新引导后,在引导时未加载任何iptables规则的任何计算机上,都不会加载ip_tables模块(不需要模块==该模块未加载)。因此,在主机以某种方式加载了ip_tables模块之前,LXC或OpenVZ容器不能使用iptables(因为它们共享主机内核,但是不能修改加载的模块)。


2
投票

表名称区分大小写,因此您应该使用小写的nat而不是大写的NAT。例如;


1
投票

“ IP conntrack功能会对venet性能产生一些负面影响(大约10%),因此最好在默认情况下将其禁用。”需要nat


1
投票

官方Wiki提供的解决方案:


1
投票

在OpenSUSE 15.3 systemd日志上报告了此错误(insmod建议无济于事。


0
投票

如果正在运行puppet


0
投票

IP talbes只是一种管理工具,而不是处理规则的真正工具。真正的工人是iptables依赖的linux内核模块。当iptalbes在内核中找不到该模块时,会发生此错误,因此iptables建议您升级它:)


-1
投票

检查是否启用了tun / tap:


-2
投票
uname -av;
sudo apt install --reinstall (output from uname -av)
© www.soinside.com 2019 - 2024. All rights reserved.