iptables natは存在しません


12

今日、ホストシステム上のiptables nat が機能しなくなり、何が起こったのかわかりません。(それは非常に悪いことです、私は知っています)

すべてのコマンドは、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.

利用可能なアップデートはありません。また、いくつかの古いカーネルでサーバーを再起動しましたが、常に同じエラーメッセージが表示されます。

私のサーバーは、最新バージョンの公式OpenVZカーネルを使用してCentOSで実行されています。

$ 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の一部の構成では、ゲストでNATが有効になりません。ホストで何か変更がありましたか?
ゾレダチェ

これはホストシステムであり、ゲストシステムではありません。
ルーカスシュルツェ

回答:


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 "options 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

そしてnatは今働いています

すべてのソース:

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

関連するWiki記事: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 set VZID --netfilter full --save --setmode restart

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.