9.1. iptablesのコマンドの基本

説明してきたように、ルールとは、カーネルがパケットの処置について指示を仰ぐ、行単位の記述だ。そのパケットに完全に一致する評価基準 (つまりマッチ) が見つかると、ターゲット (ジャンプ) に書かれた指示が実行される。我々が記述するルールは、通常、下記のような書式を採る:

iptables [-t テーブル] コマンド [マッチ] [ターゲット/ジャンプ]

ターゲット指示は行末に置かなければならないという根拠はどこにもない。しかし、読みやすさの面から、この文法に付き従うことが多い。ともかく、あなたが目にするほとんどのルールはこの書式を採っているだろう。そのおかげで、誰の書いたスクリプトを読んでも、文法に惑わされることなくルールがすぐに理解できる。

標準以外のテーブルを使いたい場合には [テーブル] のところでテーブルを指定してもいい。しかし、どのコマンドでも iptables はデフォルトで filter テーブルを対象にするので、敢えて書く必要はない。また、指定する位置もここしか駄目というわけではない。行の中のどこに書いても構わないのだが、一番頭に書くのが、いわば常識となっている。

ただし、留意すべき点はある。コマンドは必ず先頭またはテーブル指定の直後になくてはならない。コマンドとは、 iptables に何をさせるかということ。例えば、ルールを挿入する、チェーンの末尾にルールを加える、ルールを削除する、といった事柄だ。これについては後で詳しく述べよう。

マッチとは、ルールの一部であり、それによって、目的とするパケットを他のパケットから見分けるための、パケットの素性をカーネルに教える。つまり、これで指定するのは、パケットがどんな IPアドレスから来るか、どのネットワークインターフェースから入ってくるか、宛先はどんな IPアドレスやポートやプロトコルか、など。利用できるマッチは、このチャプターの後のほうで解説するが、膨大な数に上る。

行の最後にはパケットのターゲットが来る。パケットがすべての条件に合致したら、カーネルはこのターゲットを執行する。一例を挙げれば、カーネルに対して、我々が独自に作成したチェーンへの送致を指令することであり、その場合、独自チェーンは元のチェーンの一部と見なされる。あるいはまた、カーネルに、パケットを黙殺してそれ以上頓着しないようにさせたり、特定の返答を送り主へ返すなどの指示を与えることもできる。この続きは、このチャプターで追い追い詳述してゆくことにしよう。