iptables nat不存在


13

今天,我在主机系统上的iptables 停止工作了,我不知道发生了什么!(这很糟糕,我知道)

所有命令均以root用户身份执行。

如果我运行,$ iptables -t nat -L则会收到以下错误消息:

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

没有更多可用的更新。我还使用多个较旧的内核重新启动了服务器,但始终收到相同的错误消息。

我的服务器在CentOS上运行,带有最新版本的官方OpenVZ内核。

$ uname -r
2.6.32-042stab088.4

还测试了内核版本:2.6.32-042stab85.20和2.6.32-042stab084.26

grub.conf中的第一个内核:

title OpenVZ (2.6.32-042stab088.4)
root (hd0,1)
kernel /vmlinuz-2.6.32-042stab088.4 ro root=/dev/md2 rd_NO_LUKS rd_NO_DM nomodeset crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=de
initrd /initramfs-2.6.32-042stab088.4.img

已安装以下更新:

$ rpm -qa --last
vzctl-4.7.2-1.x86_64                          Mon 05 May 2014 03:25:16 AM CEST
vzctl-core-4.7.2-1.x86_64                     Mon 05 May 2014 03:25:14 AM CEST
util-linux-ng-2.17.2-12.14.el6_5.x86_64       Wed 30 Apr 2014 11:37:19 PM CEST
libuuid-2.17.2-12.14.el6_5.x86_64             Wed 30 Apr 2014 11:37:18 PM CEST
libblkid-2.17.2-12.14.el6_5.x86_64            Wed 30 Apr 2014 11:37:18 PM CEST
vzkernel-2.6.32-042stab088.4.x86_64           Mon 26 Apr 2014 09:01:00 AM CEST
nss-softokn-freebl-3.14.3-10.el6_5.x86_64     Sat 26 Apr 2014 09:01:00 AM CEST
nss-softokn-3.14.3-10.el6_5.x86_64            Sat 26 Apr 2014 09:01:00 AM CEST
bridge-utils-1.2-10.el6.x86_64                Tue 15 Apr 2014 02:22:41 PM CEST
openssl-1.0.1e-16.el6_5.7.x86_64              Wed 09 Apr 2014 10:14:03 AM CEST
...

lsmod 给我以下内容:

$ lsmod | grep ip
iptable_nat             6302  0
nf_nat                 23213  2 iptable_nat,vzrst
nf_conntrack_ipv4       9946  3 iptable_nat,nf_nat
nf_defrag_ipv4          1531  1 nf_conntrack_ipv4
nf_conntrack           80281  5 iptable_nat,vzrst,nf_nat,nf_conntrack_ipv4,vzcpt
ip6t_REJECT             4711  0
ip6table_mangle         3669  0
ip6table_filter         3033  0
ip6_tables             18988  2 ip6table_mangle,ip6table_filter
iptable_mangle          3493  0
iptable_filter          2937  0
xt_multiport            2716  0
ipt_REJECT              2399  0
ip_tables              18119  3 iptable_nat,iptable_mangle,iptable_filter
ipv6                  322519  35 vzrst,ip6t_REJECT,ip6table_mangle

运行modprobe会出现以下错误:

$ modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko
FATAL: Module /lib/modules/2.6.32_042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko not found.

但是该文件确实存在:

$ ll /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko
-rwxr--r-- 1 root root 16K Apr  3 16:20 /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko*

有任何想法吗?


OpenVZ的某些配置未在guest虚拟机中启用NAT。主机上有什么变化吗?
Zoredache 2014年

这是主机系统,而不是来宾系统。
卢卡斯·舒尔兹

Answers:


10

由于vzctl从4.6更新到4.7,因此他们将nf_conntrack的设置更改为默认禁用。(https://openvz.org/Download/vzctl/4.7/changes

相应的提交消息:

...

默认情况下禁用VE0的conntrack

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

...

(来源:http : //git.openvz.org/?p=vzctl;a=commit;h=a191a462579ee

解:

根据分发情况,它位于/ etc目录中的某个位置。找到它:

$ sudo grep -R“选项nf_conntrack ip_conntrack_disable_ve0 = 1” /etc/modprobe.d/

并将“ 1”替换为“ 0”:

选项nf_conntrack ip_conntrack_disable_ve0 = 0

重新启动系统

(来源:https : //bugzilla.openvz.org/show_bug.cgi?id=2943#c5

除了重新启动之外:

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

现在工作了

所有来源:

vzctl 4.7的变更日志:https : //openvz.org/Download/vzctl/4.7/changes

错误报告以及注释中的解决方案:https : //bugzilla.openvz.org/show_bug.cgi?id=2943

缩短了解决方案描述的错误报告:https : //bugzilla.openvz.org/show_bug.cgi?id=2755#c4

相应的GIT提交:http ://git.openvz.org/?p=vzctl;a=commit;h= a191a462579ee

相关维基文章:https//openvz.org/NAT#IP_conntracks


4

您应该是超级用户才能运行iptables。因此,将其运行为root

$ iptables -t nat -L
iptables v1.4.19.1: can't initialize iptables table `nat': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
[...]

1
我已经以root用户身份登录。
卢卡斯·舒尔茨

1

似乎文件实际上有问题吗?如果您尝试追踪modprobe /lib/modules/2.6.32-042stab088.4/kernel/net/ipv4/netfilter/iptable_nat.ko怎么办?系统是否真的返回ENOENT(没有这样的文件或目录)?我无法想象会是这样,但是SELinux可能会弄乱文件吗?最后,也许文件/文件系统已损坏。md5sum具有一个已知的好的版本。或者只是将其删除并完全复制一个新的。希望它不是文件系统。

试试这个:https : //stackoverflow.com/questions/3140478/fatal-module-not-found-error-using-modprobe


0

我找到了解决该问题的另一种方法!在该节点上,我无法删除

rmmod iptable_nat
rmmod nf_nat
rmmod nf_conntrack_ipv4
rmmod nf_conntrack

在《官方指南》中,我发现:

vzctl设置VZID --netfilter满-保存--setmode重新启动

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.