几天前给一个服务器安装OpenVZ后,使用iptables添加nat规则时,出现错误提示:
1 2 |
iptables v1.4.7: can't initialize iptables table `nat': Table does not exist (do Perhaps iptables or your kernel needs to be upgraded. |
执行lsmod看了下:
1 2 3 4 5 6 7 8 |
[root@localhost ~]# lsmod | grep nat nf_nat_ftp 3523 0 nf_conntrack_ftp 12929 1 nf_nat_ftp iptable_nat 6302 0 nf_nat 23213 4 vzrst,ipt_REDIRECT,nf_nat_ftp,iptable_nat nf_conntrack_ipv4 9946 4 iptable_nat,nf_nat nf_conntrack 80281 8 vzrst,vzcpt,nf_nat_ftp,nf_conntrack_ftp,xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4 ip_tables 18119 3 iptable_mangle,iptable_filter,iptable_nat |
发现相关的NAT模块都已经加载,应该与内核无关。
更换内核回2.6.32-431.11.2.el6,问题还是如此,无奈之下重装系统。
安装系统后,我手动一个个下载OpenVZ的RPM包,一个个安装,然后重启后nat表是否可以使用,最后发现安装vzctl 4.7并且重启后,iptables的nat表就出问题了。
看了下官网,原来在OpenVZ在2014年04月15号更新了,难怪其他服务器没遇到这问题。
到OpenVZd Bugzilla瞧了瞧,是nf_conntrack模块的问题,官方的技术人员已经给出了解决办法了:
修改/etc/modprobe.d/openvz.conf,把
1 |
options nf_conntrack ip_conntrack_disable_ve0=1 |
修改为:
1 |
options nf_conntrack ip_conntrack_disable_ve0=0 |
尝试用rmmod卸载nf_conntrack,再用modporbe重新加载nf_conntrack,但是执行rmmod nf_conntrack有提示某些程序在使用nf_conntrack模块,所以只能reboot了。
系统启动后,已可以正常加载出nat表:
1 2 3 4 5 6 7 8 9 |
[root@localhost ~]# iptables -L -n -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination |
OpenVZ此次更新的改动貌似有点大,4.6.1和之前的版本都是用simfs的,4.7开始已默认使用ploop。
Comments are closed.