質問: iptablesを設定しようと思い、下記内容が書いたファイル(iptabels)作成 そしてservice iptables restart と実行したのですが下記のようなエラーが出てしまします。 「iptables ファイアウォールルールを適用中: iptables-restore: line 20 failed [失敗]」 このline 20 というのはCOMMITが書かれている行になります。 iptables -V でバージョンを調べたところ「iptables v1.3.5」でした。 OSはCentOS 5 32bitです。 お手数ですが、どなたかアドバイスいただけないでしょうか??
回答: 手元の CentOS 5.7 では、正常に動作します。 /etc/sysconfig/iptables の文法上の間違いであれば、COMMIT 以外のところでエラーが発生するはずなので、COMMIT 行でエラーになるのは、基本的には「何か使えない機能を使っている」可能性が高いです。 カーネル再構築後にiptablesでエラー - サラリーマンから起業するリアル COMMIT で失敗するケースとして、-m で指定しているモジュールが存在していない場合があります。上記のページの方は、自分でカーネルをビルドする時に、これらのモジュールがビルドされていなかったので、ビルドされるように設定変更して再ビルドした、という話です。 ただ、実際に指定されている「state」「tcp」の各モジュールは、通常の CentOS であれば標準で入っているものなので、本来であればエラーにならないはずです。 ちなみに、iptables で -m を使って指定できるモジュールは /lib/iptables の下にあります。state モジュールであれば、libipt_state.so というファイルがモジュールの実体です。 試しに、COMMIT を途中に入れて、その COMMIT 以降の行をコメントアウトしてみる、というのを繰り返すと、原因のヒントが得られるかもしれません。