このセクションでは、いろいろなコマンドとその使用目的を取り扱う。コマンドは、パーサに読み込まれたルールの後続部分をどう処すべきかを、 iptables に伝える。通常、テーブルなどに対して何かを追加あるいは削除する操作を指令する。 iptables では以下のコマンドが利用可能だ:
Table 9-2. コマンド
コマンド | -A, --append |
例 | iptables -A INPUT ... |
説明 | チェーンの最後尾にルールを追加する。つまり、このコマンドでは必ずルールセットの最後尾にそのルールが追加され、さらにルールを追加しない限り、テストの順位も最後となる。 |
コマンド | -D, --delete |
例 | iptables -D INPUT --dport 80 -j DROP, iptables -D INPUT 1 |
説明 | ひとつのルールをチェーンから削除する。これには書き方が 2種類ある。合致すべきルールの全文を示す (最初の例) か、ルールナンバーで指定するかだ。前者を使用する場合、記述する定義と、チェーンにおけるエントリは、正確に一致していなくてはならない。後者では、削除したいルールのナンバーを一致させればよい。ルールのナンバーはチェーン毎に頭から振られ、1 から始まる。 |
コマンド | -R, --replace |
例 | iptables -R INPUT 1 -s 192.168.0.1 -j DROP |
説明 | 指定した行にある既存のルールを置き換える。 --delete コマンドと同じ動作を行うが、ただ単にそのエントリを削除するだけでなく、それを新たなエントリで置き換える。 iptables の組み立てを思考錯誤している最中に利用する機会が多いだろう。 |
コマンド | -I, --insert |
例 | iptables -I INPUT 1 --dport 80 -j ACCEPT |
説明 | チェーンの中途にルールを挿入する。ルールはナンバーで指定した箇所に割り込む。つまり、上記の例は INPUT チェーンの 1 番目にルールを挿入し、結果としてそのルールがチェーンの最初のルールとなる。 |
コマンド | -L, --list |
例 | iptables -L INPUT |
説明 | このコマンドは指定したチェーンのすべてのエントリをリストアップする。上記の場合 INPUT チェーンのエントリすべてを列挙する。チェーンをまったく指定しないやり方も反則ではなく、この場合には、所定のテーブル内にあるすべてのチェーンの内容をリストアップする (テーブルの指定方法は テーブル セクションを参照)。出力の詳細はパーサに与える -n や -v などといったオプションによって変わる。 |
コマンド | -F, --flush |
例 | iptables -F INPUT |
説明 | このコマンドは指定したチェーンからすべてのルールをフラッシングする。ルールをひとつずつ削除していくのと意味は同じだが、こちらのほうがてきめんに迅速だ。このコマンドにオプションは必要なく、所定のテーブル内に存在するチェーンの全ルールがを削除される。 |
コマンド | -Z, --zero |
例 | iptables -Z INPUT |
説明 | このコマンドは指定したチェーンまたは全チェーンにおける、全カウンタをゼロに戻すよう iptables に命令する。 -L コマンドで -v オプションを使うと各フィールドの頭にパケットカウンタがつくのを憶えているだろう。このパケットカウンタをゼロリセットしたいときに使うのが -Z だ。 -Z はルールのリストアップこそしないが、 -L と同様の動作を行う。 -L と -Z を同時に用いた場合 (これも反則ではない)、まずチェーンがリストアップされ、その後パケットカウンタがゼロリセットされる。 |
コマンド | -N, --new-chain |
例 | iptables -N allowed |
説明 | このコマンドは、指定したテーブルに指定した名称の新しいチェーンを作成するよう、カーネルに指令する。上の例では allowed という名のチェーンを作成している。既に同名のチェーンやターゲットが存在してはならないという点に注意しなければならない。 |
コマンド | -X, --delete-chain |
例 | iptables -X allowed |
説明 | 指定したチェーンをテーブルから削除する。このコマンドが成功するには、削除対象になるチェーンを参照しているルールが存在してはならない。つまり、チェーンを削除するには、前もって、そのチェーンを参照しているルールすべてを置換または削除しておく必要がある。このコマンドをオプションなしで使用した時には、対象のテーブルにあるビルトイン以外のチェーンがすべて削除される。 |
コマンド | -P, --policy |
例 | iptables -P INPUT DROP |
説明 | このコマンドは、或るチェーンに対してのデフォルトターゲットつまりポリシーを設定するよう、カーネルに指示する。どのルールにもマッチしなかったパケットは、チェーンに設定されたポリシーに従わせられる。指定可能なターゲットは DROP と ACCEPT だ (他にもあるかもしれない -- 見つけたらメールしてほしい)。 |
コマンド | -E, --rename-chain |
例 | iptables -E allowed disallowed |
説明 | -E コマンドは、第1引数の名前を持つチェーンを、第2引数の名前に改名する。つまり上の例では、チェーンの名前を allowed から disallowed に変えていることになる。これは当該テーブルの振舞いを実質的に変ているわけではない。つまり、テーブルに対する見た目上の変更に過ぎないということに気を付けてほしい。 |
コマンドラインは必ず、最後まで 1 行で入力しなければならない。でなければ、 iptables のビルトインヘルプかコマンドのバージョンを見せられることになるだろう。バージョンを表示させたいのなら -v オプションがあるし、ヘルプメッセージを出すには -h オプションがある。つまり、とりわけ iptables に限ったオプションではない。次に、コマンド毎に異なるいくつかのオプションを挙げておこう。下記では、どのオプションがどのコマンドで有効で、どう作用するかを解説している。なお、ここで挙げているのは、ルールやマッチに影響しないオプションだけだ。マッチとターゲットについては、このセクションの後半に預けることにしよう。
Table 9-3. オプション
オプション | -v, --verbose |
利用対象コマンド | --list, --append, --insert, --delete, --replace |
説明 | このコマンドは出力を冗長 (verbose) にするために使用され、よく --list コマンドと併用する。 --list コマンドと一緒に使用した場合、インターフェースアドレス、ルールオプション、 TOSマスクも表示される。 --verbose オプション付きの --list コマンドはまた、ルール毎のバイトおよびパケットカウンタも表示する。カウンタには、 K (x 1,000), M (x 1,000,000), G (x 1,000,000,000) の単位記号が適宜使用される。これを避けるには、下記に述べる -x オプションを使う。 --verbose オプションを --append, --insert, --delete, --replace コマンドに使用すると、指示したルールがどう解釈されたかの内容と、挿入などが正常に行われたかどうかといった事柄が表示される。 |
オプション | -x, --exact |
利用対象コマンド | --list |
説明 | このオプションは数字を展開して見せる。つまり、 --list の出力は K, M, G の単位記号を含まなくなる。問題とするルールにマッチした累計パケット数とバイト数のカウンタ値が、文字通りの数字で表されるのだ。このコマンドは --list コマンドでのみ利用可能で、それ以外どのコマンドにもまったく効き目がないことに注意してほしい。 |
オプション | -n, --numeric |
利用対象コマンド | --list |
説明 | このオプションは、値を数字で表示するよう iptables に指示する。 IPアドレスとポートナンバーは、ホスト名、ネットワーク名、アプリケーション名などでなく、数字で表現される。これは --list コマンドでのみ有効。デフォルトでは数字とホストは可能な限りリゾルブされるが、それを抑止するのがこのオプションだ。 |
オプション | --line-numbers |
利用対象コマンド | --list |
説明 | --list コマンドとともに使用し、出力に行番号を表示させる。このオプションを使うと、各ルールが行番号付きで出力される。ルールの挿入時には、ルールのナンバーが分かるとありがたいものだ。このオプションは --list コマンドでしか機能しない。 |
オプション | -c, --set-counters |
利用対象コマンド | --insert, --append, --replace |
説明 | このオプションは、何らかの形でルールを作成や変更する場面で用いる。その際に、パケットとバイトのカウンタ値を指定の値へと変更できる。書式は --set-counters 20 4000 のようになり、この場合、パケットカウンタを 20 に、バイトカウンタを 4000 にセットするよう、カーネルに指示していることになる。 |
オプション | --modprobe |
利用対象コマンド | すべて |
説明 | --modprobe オプションは、カーネルに対して、モジュールの探索 (probe) が必要になった時にどのモジュールを使うべきか伝えるのに利用する。これは、 modprobe コマンドがサーチパス外にある場合に活用するとよい。そうしたケースでは、このオプションを使って、必要なモジュールがロードされていない場合にどうすべきかをプログラムに教えてやる必要があるからだ。このオプションはすべてのコマンドで利用可能だ。 |