Ispconfig 3がインストールされたUbuntuサーバー(14.04)を管理しています。サーバーは、メール、Web、およびデータに使用されています。私の前のシステム管理者はfail2banとufwを有効にしていましたが、今日は一日中dovecot認証で問題が発生しています。ファイアウォールにアクセスしようとすると、次のエラーメッセージが表示され続けました。
エラー:iptablesの実行中に問題が発生しました:別のアプリが現在xtablesロックを保持しています。おそらく、-wオプションを使用したいですか?
ソフトリブートを試みるとサーバーがフリーズし、ハードリブートすると問題がすぐに再発しました。
次に、lsof -p $(pidof iptables)
を使用してさらに調査すると、次の出力が得られます。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
iptables 1526 root cwd DIR 9,1 4096 2 /
iptables 1526 root rtd DIR 9,1 4096 2 /
iptables 1526 root txt REG 9,1 87768 261694 /sbin/xtables-multi
iptables 1526 root mem REG 9,1 6336 1180648 /lib/xtables/libxt_standard.so
iptables 1526 root mem REG 9,1 14664 1180071 /lib/x86_64-linux-gnu/libdl-2.19.so
iptables 1526 root mem REG 9,1 1840928 1180085 /lib/x86_64-linux-gnu/libc-2.19.so
iptables 1526 root mem REG 9,1 47712 1181161 /lib/libxtables.so.10.0.0
iptables 1526 root mem REG 9,1 31520 1179359 /lib/libip6tc.so.0.1.0
iptables 1526 root mem REG 9,1 27392 1179360 /lib/libip4tc.so.0.1.0
iptables 1526 root mem REG 9,1 149120 1180078 /lib/x86_64-linux-gnu/ld-2.19.so
iptables 1526 root 0r FIFO 0,8 0t0 21609 pipe
iptables 1526 root 1u CHR 1,3 0t0 1029 /dev/null
iptables 1526 root 2u CHR 1,3 0t0 1029 /dev/null
iptables 1526 root 3u unix 0xffff880190eabb80 0t0 686890 @xtables
iptables 1526 root 4u raw 0t0 686891 00000000:00FF->00000000:0000 st=07
iptables 1526 root 5w REG 9,1 242173 917201 /var/log/fail2ban.log
iptables 1526 root 6r 0000 0,9 0 7704 anon_inode
iptables 1526 root 7r 0000 0,9 0 7704 anon_inode
iptables 1526 root 8r 0000 0,9 0 7704 anon_inode
iptables 1526 root 9r FIFO 0,8 0t0 20579 pipe
iptables 1526 root 10w FIFO 0,8 0t0 20579 pipe
何がxtableをロックしているのか、どのように解決するのが最善であるかについてのポインタは歓迎されます。
この回答 は、DNSルックアップが遅いために遅延が発生する可能性があることを示しています。これは、iptables
コマンドラインに_-n
_を含めることで回避できます。おそらく、strace
またはltrace
を使用して、アクティブなiptables
プロセスが何を行っているかを調査するか(出力のpid 1526)、またはps -fp $(pidof iptables)
、iptables
コマンドに_-n
_が含まれているかどうか。
Iptablesコマンドの長いスクリプトで同じ問題が発生しました。それはかなりランダムに起こり、システム間で異なりました。競合状態が疑われます。
その場合、エラーメッセージは独自の解決策を提供しました。-wフラグを使用すると、iptablesは失敗するのではなく、ロックが使用可能になるのを待ちます。
Iptablesを直接使用せずに管理ソフトウェアを使用する場合、そのソフトウェアに応じてパッチを適用する必要があります。明らかに、何かが原因でロックが古くなった場合、iptablesが無期限にハングするリスクがあります。