web-dev-qa-db-ja.com

iptables v1.4.14:iptablesテーブルを初期化できません `nat ':テーブルが存在しません(insmodが必要ですか?)

私は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

これは、サービスプロバイダーがホストする仮想サーバーです。

これを解決するにはどうすればよいですか?

30
Douglas

私は同じ問題を抱えていましたが、これはうまくいきました:

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

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

17
conrad

Debian 8でも同じ問題が発生しました。システムを再起動して修正しました。カーネルイメージが更新され、その後システムが再起動されなかった場合、エラーが発生する可能性があるようです。

15
JayTheKay

このエラーメッセージが表示され、ある種の制限付きコンテナベースのホスティング(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/
8
Pierz

最後に、私のサービスプロバイダーは答えました:

これは、使用する仮想化システム(OpenVZ)の制限であり、基本的なiptablesルールは可能ですが、natテーブルを使用するものはできません。

これが本当に問題である場合は、お客様への提供を開始するときに、他のシステム仮想化(KVM)への移行を提供できます。

サーバーを新しいシステムに移行する必要がありました...

5
Douglas

短縮版 :

仮想サーバーで実行する前に、ホストでiptablesを実行します(ここでは、これが何らかのLXCまたはOpenVZコンテナーであると確信しています)。

ロングバージョン:

この問題は、ip_tableモジュールがオンデマンドでロードされるという事実によるものです。したがって、再起動後、ブート時にiptablesルールがロードされていないマシンでは、ip_tablesモジュールはロードされません(モジュールの要求なし==モジュールはロードされません)。その結果、ホストが何らかの方法でip_tablesモジュールをロードするまで、LXCまたはOpenVZコンテナーは(ホストカーネルを共有するが、ロードされるモジュールを変更できないため)iptablesを使用できません。

2
phep

公式ウィキからのそのソリューション:

vzctl set $CTID --netfilter full --save

https://openvz.org/VPN_via_the_TUN/TAP_device#Troubleshooting

1
J. Doe

「IP conntrack機能は、venetのパフォーマンスにマイナスの影響を与える(約10%)ため、デフォルトで無効にしたほうがよいでしょう。」 natが必要です

https://serverfault.com/questions/593263/iptables-nat-does-not-exist

1
dragonfly

OpenSUSE 15.3では、systemdログがこのエラーを報告しました(insmodの提案は役に立ちませんでした)。

Feb 18 08:36:38 vagrant-openSUSE-Leap dockerd[20635]: iptables v1.6.2: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)

REBOOTは問題を修正しました

1
noelmcloughlin

テーブル名では大文字と小文字が区別されるため、大文字のNATではなく小文字のnatを使用する必要があります。例えば;

iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -o eth0 -j MASQUERADE
0
cyb0k

puppetを実行している場合、/proc/sys/kernel/modules_disabledを1に、それ以上のモジュールのロードを禁止します。マシンを再起動すると、0に戻り、iptablesモジュールのロードなどの変更が可能になります。一定時間後puppetは、カーネルルートキットからシステムを保護するために1に戻します。したがって、必要なモジュールは、ブート中またはブート直後にロードする必要があります

0
dbkeys