Provided by: manpages-ja_0.5.0.0.20131015+dfsg-2_all bug

名前

       iptables - IPv4 のパケットフィルタと NAT を管理するツール

書式

       iptables [-t table] -[AD] チェイン ルールの詳細 [オプション]
       iptables [-t table] -I チェイン [ルール番号] ルールの詳細 [オプション]
       iptables [-t table] -R チェイン ルール番号 ルールの詳細 [オプション]
       iptables [-t table] -D チェイン ルール番号 [オプション]
       iptables [-t table] -[LFZ] [チェイン] [オプション]
       iptables [-t table] -N チェイン
       iptables [-t table] -X [チェイン]
       iptables [-t table] -P チェイン ターゲット [オプション]
       iptables [-t table] -E 旧チェイン名 新チェイン名

説明

       iptables  は Linux カーネルの IP パケットフィルタルールのテーブルを 設定・管理・検査するた
       めに使われる。 複数の異なるテーブルを定義できる。 各テーブルにはたくさんの組み込み済みチェ
       インが含まれており、 さらにユーザー定義のチェインを加えることもできる。

       各チェインは、パケット群にマッチするルールのリストである。 各ルールは マッチしたパケットに
       対して何をするかを指定する。 これは「ターゲット」と 呼ばれ、  同じテーブル内のユーザー定義
       チェインにジャンプすることもできる。

ターゲット

       ファイアウォールのルールは、パケットを判断する基準とターゲットを指定する。  パケットがマッ
       チしない場合、チェイン内の次のルールが評価される。 パケットがマッチした場合、 ターゲットの
       値によって次のルールが指定される。  ターゲットの値は、ユーザー定義チェインの名前、または特
       別な値 ACCEPT, DROP, QUEUE, RETURN のうちの 1 つである。

       ACCEPT はパケットを通すという意味である。 DROP はパケットを床に落す (捨てる)  という意味で
       ある。  QUEUE はパケットをユーザー空間に渡すという意味である (カーネルがサポートしていれば
       であるが)。 RETURN は、このチェインを辿るのを中止して、 前の  (呼び出し元)  チェインの次の
       ルールから再開するという意味である。 組み込み済みチェインの最後に到達した場合、 または組み
       込み済みチェインで ターゲット RETURN を持つルールにマッチした場合、 チェインポリシーで指定
       されたターゲットが パケットの行方を決定する。

テーブル

       現在のところ 3 つの独立なテーブルが存在する (ある時点でどのテーブルが存在するかは、 カーネ
       ルの設定やどういったモジュールが存在するかに依存する)。

       -t, --table table
              このオプションは、このコマンドが操作するパケットマッチングテーブルを     指定する。
              カーネルに自動モジュールローディングが設定されている場合、 そのテーブルに対する適切
              なモジュールがまだロードされていなければ、 そのモジュールがロードされる。

              テーブルは以下の通りである。

              filter:
                  (-t オプションが指定されていない場合は) これがデフォルトのテーブルである。 これ
                  には INPUT (マシン自体に入ってくるパケットに対するチェイン)・ FORWARD (マシンを
                  経由するパケットに対するチェイン)・ OUTPUT  (ローカルマシンで生成されたパケット
                  に対するチェイン) という 組み込み済みチェインが含まれる。

              nat:
                  このテーブルは新しい接続を開くようなパケットに対して参照される。       これには
                  PREROUTING  (パケットが入ってきた場合、すぐにそのパケットを変換するためのチェイ
                  ン)・   OUTPUT  (ローカルで生成されたパケットをルーティングの前に変換するための
                  チェイン)・ POSTROUTING (パケットが出て行くときに変換するためのチェイン)   とい
                  う 3 つの組み込み済みチェインが含まれる。

              mangle:
                  このテーブルは特別なパケット変換に使われる。     カーネル    2.4.17    までは、
                  PREROUTING (パケットが入ってきた場合、 すぐにそのパケットを変換する  ためのチェ
                  イン)・  OUTPUT (ローカルで生成されたパケットを ルーティン グの前に変換するため
                  のチェイン) という 2 つの組み込み済みチェインが含ま れていた。 カーネル  2.4.18
                  からは、これらの他に  INPUT (マシン自体に 入ってくるパケットに対するチェイン)・
                  FORWARD (マシンを経由するパケッ トに対するチェイン)・ POSTROUTING (パケットが出
                  て行くときに変換する  ためのチェイン)・  という  3 つの組み込み済みチェインもサ
                  ポートされる。

オプション

       iptables で使えるオプションは、いくつかのグループに分けられる。

   コマンド
       これらのオプションは、実行する特定の動作を指定する。 以下の説明で注記されていない限り、 コ
       マンドラインで指定できるのはこの中の 1 つだけである。 長いバージョンのコマンド名とオプショ
       ン名は、 iptables が他のコマンド名やオプション名と区別できる範囲で (文字を省略して) 指定す
       ることもできる。

       -A, --append chain rule-specification
              選択されたチェインの最後に  1 つ以上のルールを追加する。 送信元や送信先の名前の解決
              を行って、 1 つ以上のアドレスに展開された  場合は、可能なアドレスの組合せそれぞれに
              対してルールが追加される。

       -D, --delete chain rule-specification
       -D, --delete chain rulenum
              選択されたチェインから 1 つ以上のルールを削除する。 このコマンドには 2 つの使い方が
              ある: チェインの中の番号 (最初のルールを 1  とする)  を指定する場合と、  マッチする
              ルールを指定する場合である。

       -I, --insert チェイン [ルール番号] ルールの詳細
              選択されたチェインにルール番号を指定して  1 つ以上のルールを挿入する。 ルール番号が
              1 の場合、ルールはチェインの先頭に挿入される。 これはルール番号が指定されない場合の
              デフォルトでもある。

       -R, --replace chain rulenum rule-specification
              選択されたチェインにあるルールを置き換える。  送信元や送信先の名前が 1 つ以上のアド
              レスに解決された場合は、 このコマンドは失敗する。ルール番号は 1 からはじまる。

       -L, --list [chain]
              選択されたチェインにある全てのルールを一覧表示する。 チェインが指定されない場合、全
              てのチェインにあるリストが一覧表示される。 他の各 iptables コマンドと同様に、指定さ
              れたテーブル (デフォルトは filter) に対して作用する。 よって NAT ルールを表示するに
              は以下のようにする。
               iptables -t nat -n -L
              DNS  の逆引きを避けるために、よく  -n オプションと共に使用される。 -Z (ゼロ化) オプ
              ションを同時に指定することもできる。この場合、 チェインは要素毎にリストされて、 (訳
              註: パケットカウンタとバイト カウンタが) ゼロにされる。出力表示は同時に与えられた他
              の引き数に 影響される。以下のように、 -v オプションを指定しない限り、  実際のルール
              そのものは表示されない。
               iptables -L -v

       -F, --flush [chain]
              選択されたチェイン  (何も指定されなければテーブル内の全てのチェイン) の内容を全消去
              する。これは全てのルールを 1 個ずつ削除するのと 同じである。

       -Z, --zero [chain]
              すべてのチェインのパケットカウンタとバイトカウンタをゼロにする。 クリアされる直前の
              カウンタを見るために、 -L, --list (一覧表示) オプションと同時に指定することもできる
              (上記を参照)。

       -N, --new-chain chain
              指定した名前でユーザー定義チェインを作成する。 同じ名前のターゲットが既に存在しては
              ならない。

       -X, --delete-chain [chain]
              指定したユーザー定義チェインを削除する。  そのチェインが参照されていては ならない。
              チェインを削除する前に、そのチェインを参照しているルールを 削除するか置き換えるかし
              なければならない。 引き数が与えられない場合、テー ブルにあるチェインのうち 組み込み
              済みチェインでないものを全て削除する。

       -P, --policy chain target
              チェインのポリシーを指定したターゲットに設定する。指定可能なターゲット は「ターゲッ
              」の章を参照すること。 (ユーザー定義ではない) 組み込み 済みチェインにしかポリシー
              は設定できない。 また、組み込み済みチェインも ユーザー定義チェインも ポリシーのター
              ゲットに設定することはできない。

       -E, --rename-chain old-chain new-chain
              ユーザー定義チェインを指定した名前に変更する。 これは見た目だけの変更なので、テーブ
              ルの構造には何も影響しない。

       -h     ヘルプ。 (今のところはとても簡単な) コマンド書式の説明を表示する。

   パラメータ
       以下のパラメータは (add, delete, insert, replace, append コマンドで用いられて)  ルールの仕
       様を決める。

       -p, --protocol [!] protocol
              ルールで使われるプロトコル、またはチェックされるパケットのプロトコル。 指定できるプ
              ロトコルは、 tcp, udp, icmp, all のいずれか 1 つか、数値である。 数値には、これらの
              プロトコルのどれかないし別のプロトコルを表す           数値を指定することができる。
              /etc/protocols にあるプロトコル名も指定できる。 プロトコルの前に "!" を置くと、その
              プロトコルを除外するという意味になる。 数値 0 は all と等しい。 プロトコル all は全
              てのプロトコルとマッチし、 このオプションが省略された際のデフォルトである。

       -s, --source [!] address[/mask]
              送信元の指定。 address はホスト名 (DNS のようなリモートへの問い合わせで解決する名前
              を指定するのは非常に良くない)  ・ネットワーク IP アドレス (/mask を指定する)・ 通常
              の IP アドレス、のいずれかである。 mask はネットワークマスクか、 ネットワークマスク
              の左側にある  1 の数を指定する数値である。 つまり、 24 という mask は 255.255.255.0
              に等しい。  アドレス指定の前に  "!"  を置くと、そのアドレスを除外するという意味にな
              る。 フラグ --src は、このオプションの別名である。

       -d, --destination [!] address[/mask]
              送信先の指定。  書式の詳しい説明については、  -s  (送信元) フラグの説明を参照するこ
              と。 フラグ --dst は、このオプションの別名である。

       -j, --jump target
              ルールのターゲット、つまり、パケットがマッチした場合にどうするかを指定   する。ター
              ゲットはユーザー定義チェイン (そのルール自身が入っている チェイン以外) でも、パケッ
              トの行方を即時に決定する特別な組み込み済み ターゲットでも、拡張されたターゲット (以
              下の  「ターゲットの拡張」 を 参照) でもよい。 このオプションがルールの中で省略され
              た場合、 ルールに マッチしてもパケットの行方に何も影響しないが、 ルールのカウンタは
              1 つ 加算される。

       -i, --in-interface [!] name
              パケットを受信することになるインターフェース名 (INPUT, FORWARD, PREROUTING チェイン
              に入るパケットのみ)。インターフェース名の前に "!" を置くと、 そのインターフェースを
              除外するという意味になる。 インターフェース名が "+" で終っている場合、 その名前で始
              まる任意の インターフェース名にマッチする。このオプションが省略された場合、  任意の
              インターフェース名にマッチする。

       -o, --out-interface [!] name
              パケットを送信することになるインターフェース名 (FORWARD, OUTPUT, POSTROUTING チェイ
              ンに入るパケットのみ)。 インターフェース名の前に "!" を置くと、  そのインターフェー
              スを除外するという意味になる。 インターフェース名が "+" で終っている場合、 その名前
              で始まる任意のインターフェース名にマッチする。 このオプションが省略された場合、  任
              意のインターフェース名にマッチする。

       [!]  -f, --fragment
              このオプションは、分割されたパケット  (fragmented packet) のうち 2 番目以降のパケッ
              トだけを参照するルールであることを意味する。 このようなパケット (または ICMP タイプ
              のパケット)  は 送信元・送信先ポートを知る方法がないので、 送信元や送信先を指定する
              ようなルールにはマッチしない。 "-f" フラグの前に "!" を置くと、  分割されたパケット
              のうち最初のものか、 分割されていないパケットだけにマッチする。

       -c, --set-counters PKTS BYTES
              このオプションを使うと、  (insert, append, replace 操作において) 管理者はパケットカ
              ウンタとバイトカウンタを 初期化することができる。

   その他のオプション
       その他に以下のオプションを指定することができる:

       -v, --verbose
              詳細な出力を行う。 list コマンドの際に、インターフェース名・ (もしあれば)  ルールの
              オプション・TOS  マスクを表示させる。  パケットとバイトカウンタも表示される。  添字
              'K', 'M', 'G' は、 それぞれ 1000, 1,000,000, 1,000,000,000 倍を表す (これを変更する
              -x  フラグも見よ)。 このオプションを append, insert, delete, replace コマンドに適用
              すると、 ルールについての詳細な情報を表示する。

       -n, --numeric
              数値による出力を行う。 IP アドレスやポート番号を数値によるフォーマット で表示する。
              デフォルトでは、iptables  は  (可能であれば)  これらの情報を ホスト名・ネットワーク
              名・サービス名で表示しようとする。

       -x, --exact
              厳密な数値で表示する。 パケットカウンタとバイトカウンタを、  K  (1000  の何倍か)・M
              (1000K の何倍か)・G (1000M の何倍か) ではなく、 厳密な値で表示する。 このオプション
              は、 -L コマンドとしか関係しない。

       --line-numbers
              ルールを一覧表示する際、そのルールがチェインのどの位置にあるかを表す 行番号を各行の
              始めに付加する。

       --modprobe=command
              チェインにルールを追加または挿入する際に、  (ターゲットやマッチングの拡張などで) 必
              要なモジュールをロードするために使う command を指定する。

マッチングの拡張

       iptables は拡張されたパケットマッチングモジュールを使うことができる。 これらのモジュールは
       2  種類の方法でロードされる:  モジュールは、 -p または --protocol で暗黙のうちに指定される
       か、 -m または --match  の後にモジュール名を続けて指定される。  これらのモジュールの後ろに
       は、モジュールに応じて 他のいろいろなコマンドラインオプションを指定することができる。 複数
       の拡張マッチングモジュールを一行で指定することができる。  また、モジュールに特有のヘルプを
       表示させるためには、 モジュールを指定した後で -h または --help を指定すればよい。

       以下の拡張がベースパッケージに含まれている。大部分のものは、 ! を 前におくことによってマッ
       チングの意味を逆にできる。

   ah
       このモジュールは IPSec パケットの AH ヘッダーの SPI 値にマッチする。

       --ahspi [!] spi[:spi]

   conntrack
       このモジュールは、接続追跡 (connection tracking) と組み合わせて用いると、 "state" マッチよ
       りもさらに多くの、  パケットについての接続追跡状態を知ることができる (この機能をサポートし
       たカーネルのもとで iptables がコンパイルされた場合 にのみ、このモジュールは存在する)。

       --ctstate state
              state   は、マッチング対象となる、コンマ区切りの接続状態リストである。   指定可能な
              state  は以下の通り。  INVALID: メモリを使い果たした為や、 既知の接続とは対応しない
              ICMP エラーなど、  何らかの理由によりパケットが識別できない。  ESTABLISHED:  このパ
              ケットは、過去双方向にパケットがやり取りされた接続に属するパケットである。  NEW: こ
              のパケットが新しい接続を開始したか、 双方向にはパケットがやり取りされていない接続に
              属するパケットである。 RELATED: このパケットが新しい接続を開始しているが、 FTP デー
              タ転送や  ICMP  エラーのように、既存の接続に関係している。  SNAT:  仮想的な状態であ
              り、書き換え前の送信元アドレスが応答の宛先アドレスと 異なる場合にマッチする。 DNAT:
              仮想的な状態であり、書き換え前の宛先アドレスが応答の送信元アドレスと   異なる場合に
              マッチする。

       --ctproto proto
              (名前または数値で) 指定されたプロトコルにマッチする。

       --ctorigsrc [!] address[/mask]
              書き換え前の送信元アドレスにマッチする。

       --ctorigdst [!] address[/mask]
              書き換え前の宛先アドレスにマッチする。

       --ctreplsrc [!] address[/mask]
              応答の送信元アドレスにマッチする。

       --ctrepldst [!] address[/mask]
              応答の宛先アドレスにマッチする。

       --ctstatus [NONE|EXPECTED|SEEN_REPLY|ASSURED][,...]
              接続追跡の内部的な状態にマッチする。

       --ctexpire time[:time]
              有効期間の残り秒数、またはその範囲(両端を含む)にマッチする。

   dscp
       このモジュールは、IP  ヘッダーの TOS フィールド内にある、 6 bit の DSCP フィールドにマッチ
       する。 IETF では DSCP が TOS に取って代わった。

       --dscp value
              (10 進または 16 進の) 数値 [0-63] にマッチする。

       --dscp-class DiffServ Class
              DiffServ クラスにマッチする。 値は BE, EF, AFxx, CSx クラスのいずれかである。  これ
              らは、対応する数値で指定するのと同じである。

   esp
       このモジュールは IPSec パケットの ESP ヘッダーの SPI 値にマッチする。

       --espspi [!] spi[:spi]

   helper
       このモジュールは、指定された接続追跡ヘルパーモジュールに 関連するパケットにマッチする。

       --helper string
              指定された接続追跡ヘルパーモジュールに 関連するパケットにマッチする。

              デフォルトのポートを使った  ftp-セッションに関連するパケットでは、  string に "ftp"
              と書ける。 他のポートでは "-ポート番号" を値に付け加える。 すなわち "ftp-2121" とな
              る。

              他の接続追跡ヘルパーでも同じルールが適用される。

   icmp
       この拡張は `--protocol icmp' が指定された場合にロードされ、 以下のオプションが提供される:

       --icmp-type [!] typename
              ICMP  タイプを指定できる。タイプ指定には、 数値の ICMP タイプ、または以下のコマンド
              で表示される ICMP タイプ名を指定できる。
               iptables -p icmp -h

   length
       このモジュールは、指定されたパケット長、またはその範囲にマッチする。

       --length length[:length]

   limit
       このモジュールは、トークンバケツフィルタを使い、 単位時間あたり制限され た回数だけマッチす
       る。  この拡張を使ったルールは、(`!'  フラグが指定され  ない限り) 制限に達するまでマッチす
       る。 例えば、このモジュールはログ記録 を制限するために LOG  ターゲットと組み合わせて使うこ
       とができる。

       --limit rate
              単位時間あたりの平均マッチ回数の最大値。 数値で指定され、添字 `/second', `/minute',
              `/hour', `/day' を付けることもできる。 デフォルトは 3/hour である。

       --limit-burst number
              パケットがマッチする回数の最大初期値: 上のオプションで指定した制限に 達しなければ、
              その度ごとに、この数値になるまで 1 個ずつ増やされる。 デフォルトは 5 である。

   mac
       --mac-source [!] address
              送信元  MAC アドレスにマッチする。 address は XX:XX:XX:XX:XX:XX と いう形式でなけれ
              ばならない。イーサーネットデバイスから入ってくるパケッ トで、 PREROUTING,  FORWARD,
              INPUT チェインに入るパケットにしか 意味がない。

   mark
       このモジュールはパケットに関連づけられた  netfilter  の  mark フィールドにマッチする (この
       フィールドは、以下の MARK ターゲットで設定される)。

       --mark value[/mask]
              指定された符号なし mark 値のパケットにマッチする  (mask  が指定されると、比較の前に
              mask との論理積 (AND) がとられる)。

   multiport
       このモジュールは送信元や送信先のポートの集合にマッチする。  ポートは 15 個まで指定できる。
       このモジュールは -p tcp または -p udp と組み合わせて使うことしかできない。

       --source-ports port[,port[,port...]]
              送信元ポートが指定されたポートのうちのいずれかであればマッチする。 フラグ  --sports
              は、このオプションの便利な別名である。

       --destination-ports port[,port[,port...]]
              宛先ポートが指定されたポートのうちのいずれかであればマッチする。   フラグ  --dports
              は、このオプションの便利な別名である。

       --ports port[,port[,port...]]
              送信元ポートと宛先ポートが等しく、 かつそのポートが指定されたポートの  うちのいずれ
              かであればマッチする。

   owner
       このモジュールは、ローカルで生成されたパケットに付いて、  パケット生成者のいろいろな特性に
       対してマッチを行う。 これは OUTPUT チェインのみでしか有効でない。 また、(ICMP ping  応答の
       ような) パケットは、 所有者がいないので絶対にマッチしない。

       --uid-owner userid
              指定された実効ユーザー  ID  のプロセスにより パケットが生成されている場合にマッチす
              る。

       --gid-owner groupid
              指定された実効グループ ID  のプロセスにより  パケットが生成されている場合にマッチす
              る。

       --pid-owner processid
              指定されたプロセス ID のプロセスにより パケットが生成されている場合にマッチする。

       --sid-owner sessionid
              指定されたセッショングループのプロセスにより パケットが生成されている場合にマッチす
              る。

       --cmd-owner name
              指定されたコマンド名を持つプロセスにより   パケットが生成されている場合にマッチする
              (この機能をサポートしたカーネルのもとで  iptables がコンパイルされた場合 にのみ、こ
              のモジュールは存在する)。

   physdev
       このモジュールは、ブリッジデバイスのスレーブにされた、    ブリッジポートの入出力デバイスに
       マッチする。  このモジュールは、ブリッジによる透過的な IP ファイアウォールの基盤の一部であ
       り、 カーネルバージョン 2.5.44 以降でのみ有効である。

       --physdev-in name
              パケットが受信されるブリッジのポート名 (INPUT, FORWARD, PREROUTING チェインに入るパ
              ケットのみ)。  インターフェース名が "+" で終っている場合、 その名前で始まる任意のイ
              ンターフェース名にマッチする。   ブリッジデバイスを通して受け取られなかったパケット
              は、 '!' が指定されていない限り、このオプションにマッチしない。

       --physdev-out name
              パケットを送信することになるブリッジのポート名 (FORWARD, OUTPUT, POSTROUTING チェイ
              ンに入るパケットのみ)。 インターフェース名が "+" で終っている場合、  その名前で始ま
              る任意のインターフェース名にマッチする。 natmangle テーブルの OUTPUT チェインで
              はブリッジの出力ポートにマッチさせることができないが、 filter テーブルの OUPUT チェ
              インではマッチ可能である。  パケットがブリッジデバイスから送られなかった場合、 また
              はパケットの出力デバイスが不明であった場合は、 '!' が指定されていない限り、パケット
              はこのオプションにマッチしない。

       --physdev-is-in
              パケットがブリッジインターフェースに入った場合にマッチする。

       --physdev-is-out
              パケットがブリッジインターフェースから出ようとした場合にマッチする。

       --physdev-is-bridged
              パケットがブリッジされることにより、  ルーティングされなかった場合にマッチする。 こ
              れは FORWARD, POSTROUTING チェインにおいてのみ役立つ。

   pkttype
       このモジュールは、リンク層のパケットタイプにマッチする。

       --pkt-type [unicast|broadcast|multicast]

   state
       このモジュールは、接続追跡 (connection tracking) と組み合わせて用いると、 パケットについて
       の接続追跡状態を知ることができる。

       --state state
              state は、マッチングを行うための、コンマで区切られた接続状態のリストである。 指定可
              能な  state  は以下の通り。   INVALID:   このパケットは既知の接続と関係していない。
              ESTABLISHED: このパケットは、過去双方向にパケットがやり取りされた接続に属するパケッ
              トである。 NEW: このパケットが新しい接続を開始したか、 双方向にはパケットがやり取り
              されていない接続に属するパケットである。  RELATED: このパケットが新しい接続を開始し
              ているが、 FTP データ転送や ICMP エラーのように、既存の接続に関係している。

   tcp
       これらの拡張は `--protocol tcp' が指定され場合にロードされ、 以下のオプションが提供される:

       --source-port [!] port[:port]
              送信元ポートまたはポート範囲の指定。   サービス名またはポート番号を指定で    きる。
              port:port  という形式で、2 つの番号を含む範囲を指定すること もできる。 最初のポート
              を省略した場合、"0" を仮定する。 最後のポートを 省略した場合、"65535"  を仮定する。
              最初のポートが最後のポートより大きい  場合、2  つは入れ換えられる。  フラグ --sport
              は、このオプションの便利 な別名である。

       --destination-port [!] port[:port]
              送信先ポートまたはポート範囲の指定。 フラグ --dport  は、このオプションの便利な別名
              である。

       --tcp-flags [!] mask comp
              TCP フラグが指定されたものと等しい場合にマッチする。 第 1 引き数は評価 対象とするフ
              ラグで、コンマ区切りのリストである。 第 2 引き数は必ず設定 しなければならないフラグ
              で、コンマ区切りのリストである。  指定できるフラ  グは  SYN ACK FIN RST URG PSH ALL
              NONE である。 よって、コマンド
               iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
              は、SYN フラグが設定され ACK, FIN, RST フラグが設定されていない  パケットにのみマッ
              チする。

       [!] --syn
              SYN  ビットが設定され ACK と RST ビットがクリアされている TCP パケットに のみマッチ
              する。このようなパケットは  TCP   接続の開始要求に使われる。例え   ば、あるインター
              フェースに入ってくるこのようなパケットをブロックすれば、  内側への TCP 接続は禁止さ
              れるが、外側への TCP 接続には影響しない。 これ は --tcp-flags SYN,RST,ACK SYN  と等
              しい。  "--syn" の前に "!" フラグ を置くと、 SYN ビットがクリアされ ACK と RST ビッ
              トが設定されている TCP パケットにのみマッチする。

       --tcp-option [!] number
              TCP オプションが設定されている場合にマッチする。

       --mss value[:value]
              指定された MSS 値 (の範囲) を持つ TCP の SYN または SYN/ACK  パケットにマッチする。
              MSS は接続に対するパケットの最大サイズを制御する。

   tos
       このモジュールは IP ヘッダーの 8 ビットの (つまり上位ビットを含む)  Type of Service フィー
       ルドにマッチする。

       --tos tos
              引き数は、マッチを行う標準的な名前でも数値でもよい (名前のリストを見るには
               iptables -m tos -h
              を使うこと)。

   ttl
       このモジュールは IP ヘッダーの time to live フィールドにマッチする。

       --ttl ttl
              指定された TTL 値にマッチする。

   udp
       これらの拡張は `--protocol udp' が指定された場合にロードされ、  以下のオプションが提供され
       る:

       --source-port [!] port[:port]
              送信元ポートまたはポート範囲の指定。 詳細は TCP 拡張の --source-port オプションの説
              明を参照すること。

       --destination-port [!] port[:port]
              送信先ポートまたはポート範囲の指定。 詳細は TCP 拡張の --destination-port  オプショ
              ンの説明を参照すること。

   unclean
       このモジュールにはオプションがないが、    おかしく正常でないように見えるパケットにマッチす
       る。 これは実験的なものとして扱われている。

ターゲットの拡張

       iptables  は拡張ターゲットモジュールを使うことができる:   以下のものが、標準的なディストリ
       ビューションに含まれている。

   DNAT
       このターゲットは  nat テーブルの PREROUTING, OUTPUT チェイン、これらのチェインから呼び出さ
       れる ユーザー定義チェインのみで有効である。 このターゲットはパケットの送信先アドレスを修正
       する  (この接続の以降のパケットも修正して分からなく  (mangle) する)。 さらに、ルールによる
       チェックを止めさせる。 このターゲットにはオプションが 1 種類ある:

       --to-destination ipaddr[-ipaddr][:port-port]
              1 つの新しい送信先 IP アドレス、または IP アドレスの範囲が指定できる。 ポートの範囲
              を指定することもできる  (これはルールで -p tcp または -p udp を指定している場合にの
              み有効)。 ポートの範囲が指定されていない場合、送信先ポートは変更されない。

              複数の --to-destination オプションを指定することができる。 アドレスの範囲によって、
              もしくは複数の --to-destination オプションによって 2 つ以上の送信先アドレスを指定し
              た場合、 それらのアドレスを使った単純なラウンド・ロビン (順々に循環させる) がおこな
              われる。

   DSCP
       このターゲットは、IPv4  パケットの  TOS ヘッダーにある DSCP ビットの値の書き換えを可能にす
       る。 これはパケットを操作するので、mangle テーブルでのみ使用できる。

       --set-dscp value
              DSCP フィールドの数値を設定する (10 進または 16 進)。

       --set-dscp-class class
              DSCP フィールドの DiffServ クラスを設定する。

   ECN
       このターゲットは ECN ブラックホール問題への対処を可能にする。 mangle  テーブルでのみ使用で
       きる。

       --ecn-tcp-remove
              TCP ヘッダーから全ての ECN ビット (訳注: ECE/CWR フラグ) を取り除く。 当然、 -p tcp
              オプションとの組合わせでのみ使用できる。

   LOG
       マッチしたパケットをカーネルログに記録する。  このオプションがルールに対して設定されると、
       Linux カーネルはマッチしたパケットについての (大部分の IP ヘッダーフィールドのような) 何ら
       かの情報を カーネルログに表示する (カーネルログは dmesg または syslogd(8)   で見ることがで
       きる)。  これは "非終了ターゲット" である。 すなわち、ルールの検討は、次のルールへと継続さ
       れる。 よって、拒否するパケットをログ記録したければ、 同じマッチング判断基準を持つ 2  つの
       ルールを使用し、  最初のルールで LOG ターゲットを、 次のルールで DROP (または REJECT) ター
       ゲットを指定する。

       --log-level level
              ログ記録のレベル (数値て指定するか、(名前で指定する場合は) syslog.conf(5)  を参照す
              ること)。

       --log-prefix prefix
              指定したプレフィックスをログメッセージの前に付ける。 プレフィックスは 29 文字までの
              長さで、 ログの中でメッセージを区別するのに役立つ。

       --log-tcp-sequence
              TCP シーケンス番号をログに記録する。 ログがユーザーから読める場合、セキュリティ上の
              危険がある。

       --log-tcp-options
              TCP パケットヘッダのオプションをログに記録する。

       --log-ip-options
              IP パケットヘッダーのオプションをログに記録する。

   MARK
       パケットに関連づけられた  netfilter  の  mark 値を設定する。 mangle テーブルのみで有効であ
       る。 例えば、iproute2 と組み合わせて使うことができる。

       --set-mark mark

   MASQUERADE
       このターゲットは nat テーブルの POSTROUTING チェインのみで有効である。 動的割り当て IP (ダ
       イヤルアップ) 接続の場合にのみ使うべきである。 固定 IP アドレスならば、SNAT ターゲットを使
       うべきである。 マスカレーディングは、パケットが送信されるインターフェースの IP  アドレスへ
       のマッピングを指定するのと同じであるが、  インターフェースが停止した場合に接続を忘れるとい
       う効果がある。 次のダイヤルアップでは同じインターフェースアドレスになる可能性が低い  (その
       ため、前回確立された接続は失われる) 場合、 この動作は正しい。 このターゲットにはオプション
       が 1 つある。

       --to-ports port[-port]
              このオプションは、使用する送信元ポートの範囲を指定し、 デフォルトの SNAT 送信元ポー
              トの選択方法 (上記) よりも優先される。 ルールが -p tcp または -p udp を指定している
              場合にのみ有効である。

   MIRROR
       実験的なデモンストレーション用のターゲットであり、 IP ヘッダーの送信元と送信先フィールドを
       入れ換え、  パケットを再送信するものである。  これは  INPUT,  FORWARD, PREROUTING チェイン
       と、これらのチェインから呼び出される ユーザー定義チェインだけで有効である。 ループ等の問題
       を回避するため、外部に送られるパケットは    いかなるパケットフィルタリングチェイン・接続追
       跡・NAT からも 監視されないREDIRECT
       このターゲットは、 nat テーブル内の PREROUTING チェイン及び OUTPUT  チェイン、そしてこれら
       チェインから呼び出される ユーザー定義チェインでのみ有効である。 このターゲットはパケットの
       送信先 IP アドレスを マシン自身の  IP  アドレスに変換する。  (ローカルで生成されたパケット
       は、アドレス 127.0.0.1 にマップされる)。 このターゲットにはオプションが 1 つある:

       --to-ports port[-port]
              このオプションは使用される送信先ポート・ポート範囲・複数ポートを指定する。 このオプ
              ションが指定されない場合、送信先ポートは変更されない。 ルールが -p  tcp  または  -p
              udp を指定している場合にのみ有効である。

   REJECT
       マッチしたパケットの応答としてエラーパケットを送信するために使われる。  エラーパケットを送
       らなければ、 DROP と同じであり、TARGET を終了し、 ルールの検討を終了する。  このターゲット
       は、  INPUT, FORWARD, OUTPUT チェインと、これらのチェインから呼ばれる ユーザー定義チェイン
       だけで有効である。以下のオプションは、返されるエラーパケットの特性を 制御する。

       --reject-with type
              type として指定可能なものは
              icmp-net-unreachable
              icmp-host-unreachable
              icmp-port-unreachable
              icmp-proto-unreachable
              icmp-net-prohibited
              icmp-host-prohibited or
              icmp-admin-prohibited (*)
              であり、適切な ICMP エラーメッセージを返す (port-unreachable  がデフォルトである)。
              TCP プロトコルにのみマッチするルールに対して、オプション tcp-reset を使うことができ
              る。  このオプションを使うと、TCP  RST  パケットが送り返される。   主として   ident
              (113/tcp) による探査を阻止するのに役立つ。 ident による探査は、壊れている (メールを
              受け取らない) メールホストに メールが送られる場合に頻繁に起こる。

              (*) icmp-admin-prohibited をサポートしないカーネルで、 icmp-admin-prohibited を使用
              すると、 REJECT ではなく単なる DROP になる。

   SNAT
       このターゲットは  nat テーブルの POSTROUTING チェインのみで有効である。 このターゲットはパ
       ケットの送信元アドレスを修正させる (この接続の以降のパケットも修正して分からなく  (mangle)
       する)。 さらに、ルールが評価を中止するように指示する。 このターゲットにはオプションが 1 種
       類ある:

       --to-source  ipaddr[-ipaddr][:port-port]
              1 つの新しい送信元 IP アドレス、または IP アドレスの範囲が指定できる。 ポートの範囲
              を指定することもできる  (ルールが  -p  tcp または -p udp を指定している場合にのみ有
              効)。 ポートの範囲が指定されていない場合、 512 未満の送信元ポートは、他の 512  未満
              のポートにマッピングされる。  512 〜 1023 までのポートは、1024 未満のポートにマッピ
              ングされる。 それ以外のポートは、1024  以上のポートにマッピングされる。  可能であれ
              ば、ポートの変換は起こらない。

              複数の --to-source オプションを指定することができる。 アドレスの範囲によって、 もし
              くは複数の --to-source オプションによって 2  つ以上の送信元アドレスを指定した場合、
              それらのアドレスを使った単純なラウンド・ロビン (順々に循環させる) がおこなわれる。

   TCPMSS
       このターゲットを用いると、TCP  の SYN パケットの MSS 値を書き換え、 そのコネクションの最大
       サイズ (通常は、送信インターフェースの MTU から 40 引いた値)  を制御できる。  もちろん  -p
       tcp と組み合わせてしか使えない。
       このターゲットは犯罪的に頭のいかれた ISP や ICMP Fragmentation Needed パケットをブロックし
       てしまうサーバーを 乗り越えるために使用する。 Linux  ファイアウォール/ルーターでは何も問題
       がないのに、 そこにぶら下がるマシンでは以下のように大きなパケットを やりとりできないという
       のが、この問題の兆候である。
        1) ウェブ・ブラウザで接続が、何のデータも受け取らずにハングする
        2) 短いメールは問題ないが、長いメールがハングする
        3) ssh は問題ないが、scp は最初のハンドシェーク後にハングする
       回避方法:  このオプションを有効にし、以下のようなルールを   ファイアウォールの設定に追加す
       る。
        iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
                    -j TCPMSS --clamp-mss-to-pmtu

       --set-mss value
              MSS オプションの値に指定した値を明示的に設定する。

       --clamp-mss-to-pmtu
              自動的に、MSS 値を (path_MTU - 40) に強制する。

       これらのオプションはどちらか 1 つしか指定できない。

   TOS
       IP  ヘッダーの 8 ビットの Type of Service フィールドを設定するために使われる。 mangle テー
       ブルのみで有効である。

       --set-tos tos
              TOS を番号で指定することができる。 また、
               iptables -j TOS -h
              を実行して得られる、使用可能な TOS 名の一覧にある TOS 名も指定できる。

   ULOG
       このターゲットは、マッチしたパケットを ユーザー空間でログ記録する機能を提供する。 このター
       ゲットがルールに設定されると、 Linux カーネルは、そのパケットを netlink ソケットを用いてマ
       ルチキャストする。 そして、1 つ以上のユーザー空間プロセスが いろいろなマルチキャストグルー
       プに登録をおこない、  パケットを受信する。  LOG と同様、これは "非終了ターゲット" であり、
       ルールの検討は次のルールへと継続される。

       --ulog-nlgroup nlgroup
              パケットを送信する netlink グループ (1-32) を指定する。 デフォルトの値は 1 である。

       --ulog-prefix prefix
              指定したプレフィックスをログメッセージの前に付ける。 32 文字までの指定できる。 ログ
              の中でメッセージを区別するのに便利である。

       --ulog-cprange size
              ユーザー空間にコピーするパケットのバイト数。  値が  0  の場合、サイズに関係なく全パ
              ケットをコピーする。 デフォルトは 0 である。

       --ulog-qthreshold size
              カーネル内部のキューに入れられるパケットの数。  例えば、この値を  10   にした場合、
              カーネル内部で  10 個のパケットをまとめ、 1 つの netlink マルチパートメッセージとし
              てユーザー空間に送る。 (過去のものとの互換性のため) デフォルトは 1 である。

返り値

       いろいろなエラーメッセージが標準エラーに表示される。 正しく機能した場合、終了コードは 0 で
       ある。  不正なコマンドラインパラメータによりエラーが発生した場合は、 終了コード 2 が返され
       る。 その他のエラーの場合は、終了コード 1 が返される。

バグ

       バグ? バグって何? ;-)  えーと…、sparc64 ではカウンター値が信頼できない。

IPCHAINS との互換性

       iptables は、Rusty Russell の ipchains と非常によく似ている。 大きな違いは、チェイン INPUTOUTPUT が、それぞれローカルホストに入ってくるパケットと、 ローカルホストから出されるパ
       ケットのみしか調べないという点である。 よって、(INPUT と OUTPUT の両方のチェインを起動する
       ループバックトラフィックを除く)   全てのパケットは 3 つあるチェインのうち 1 しか通らない。
       以前は (ipchains では)、 フォワードされるパケットは 3 つのチェイン全てを通っていた。

       その他の大きな違いは、 -i で入力インターフェース、  -o  で出力インターフェースを参照するこ
       と、 そしてともに FORWARD チェインに入るパケットに対して指定可能な点である。

       NAT のいろいろな形式が分割された。 オプションの拡張モジュールとともに デフォルトの「フィル
       タ」テーブルを用いた場合、 iptables は純粋なパケットフィルタとなる。  これは、以前みられた
       IP  マスカレーディングとパケットフィルタリングの 組合せによる混乱を簡略化する。 よって、オ
       プション
        -j MASQ
        -M -S
        -M -L
       は別のものとして扱われる。 iptables では、その他にもいくつかの変更がある。

関連項目

       iptables-save(8),       iptables-restore(8),       ip6tables(8),        ip6tables-save(8),
       ip6tables-restore(8).

       パケットフィルタリングについての詳細な        iptables       の使用法を       説明している
       packet-filtering-HOWTO。 NAT について詳細に説明している NAT-HOWTO。 標準的な配布には含まれ
       ない拡張の詳細を  説明している netfilter-extensions-HOWTO。 内部構造について詳細に説明して
       いる netfilter-hacking-HOWTO。
       http://www.netfilter.org/ を参照。

作者

       Rusty Russell は、初期の段階で Michael Neuling に相談して iptables を書いた。

       Marc Boucher は Rusty に iptables の一般的なパケット選択の考え方を勧めて、 ipnatctl を止め
       させた。 そして、mangle テーブル・所有者マッチング・ mark 機能を書き、いたるところで使われ
       ている素晴らしいコードを書いた。

       James Morris が TOS ターゲットと tos マッチングを書いた。

       Jozsef Kadlecsik が REJECT ターゲットを書いた。

       Harald Welte が ULOG ターゲットと、 TTL, DSCP, ECN のマッチ・ターゲットを書いた。

       Netfilter コアチームは、Marc Boucher, Martin Josefsson, Jozsef  Kadlecsik,  James  Morris,
       Harald Welte, Rusty Russell である。

       man ページは Herve Eychenne <rv@wallfire.org> が書いた。

                                           Mar 09, 2002                               IPTABLES(8)