2011-12-25

RHEL5.6 ip6tables-restore: unable to initializetable 'filter'


RHEL5.6 をインストールすると、ip6tables の起動に失敗する。


RHEL5.6 から、インストール時に IPv6 を検出しない環境では IPv6 関連モジュールをロードしなくなったらしい。そのため ip6tables の起動時に ip6tables-restore がエラーになる。


でもこれ、格好悪いよね。動作的には無害だとしても、見た目的に非常にイケてない。こういうのが放置される状況が信じられないが、RHEL5.7 でも直っていないところを見ると気にする方が変らしい。まあ確かに俺が変なのは認めるけどな。

考えてもみれ。ユーザーから「サーバー起動時に何とか何とかファイレドって赤くなるんだけど」とかいう電話を受ける人の心境を。その度、「大丈夫です、それは問題ないエラーなので無視してください」とか説明しなければならない人の心境を。

『問題ないエラーって何だよ。じゃあ「問題あるエラー」と「問題ないエラー」をどう区別すりゃいいのか教えてくれよ。まったく適当なことばかり言いやがって。使えねー』

私が相手の立場だったらそう思う。絶対に思う。とんだとばっちりだ。

まあ対処の方はスクリプトでも流して ip6tables の自動起動を off にすればいいとして、どうやって ip6tables が起動できないことを知るか。/etc/init.d/ip6tables をざっと見て、とりあえずこんな感じにしてみたら、

[ -n "`cat /proc/net/ip6_tables_names 2>/dev/null`" ] \
    || chkconfig ip6tables off

駄目だったorz。モジュールは動的にロードされるので、IPv6 環境 + ip6tables 停止中の場合は RHEL5.5 以前であっても /proc/net/ip6_tables_name が存在しない。同じ理由で lsmod | grep ip6table_filter しても無駄。仕方がないので、実際に ip6tables-restore が動くかを試す。

echo -e '*filter\nCOMMIT' | ip6tables-restore --test >/dev/null 2>&1 \
    || chkconfig ip6tables off

ちなみに、RHEL6.2 では本現象は発生せず、正常に ip6tables が起動する。うん、それでいいと思う。そもそも RHEL5.6 で従来動作を変える意味が分からん。

追記: RHEL5.8 で直っていることを確認。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。