xenial (8) ip6tables.8.gz

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

名前

       iptables/ip6tables — IPv4/IPv6 のパケットフィルタと NAT の管理ツール

書式

       iptables [-t table] {-A|-C|-D} chain rule-specification

       ip6tables [-t table] {-A|-C|-D} chain rule-specification

       iptables [-t table] -I chain [rulenum] rule-specification

       iptables [-t table] -R chain rulenum rule-specification

       iptables [-t table] -D chain rulenum

       iptables [-t table] -S [chain [rulenum]]

       iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]

       iptables [-t table] -N chain

       iptables [-t table] -X [chain]

       iptables [-t table] -P chain target

       iptables [-t table] -E old-chain-name new-chain-name

       rule-specification = [matches...] [target]

       match = -m matchname [per-match-options]

       target = -j targetname [per-target-options]

説明

       iptablesip6tables は Linux カーネルの IPv4/IPv6 パケットフィルタルールのテーブルの設定・管理・検査に
       使用される。 複数の異なるテーブルを定義できる。  各テーブルには数個の組み込みチェインがあり、  さらにユー
       ザー定義のチェインを加えることもできる。

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

ターゲット

       ファイアウォールのルールでは、  パケットのマッチ条件とターゲットを指定する。 パケットがマッチしない場合、
       チェイン内の次のルールが評価される。 パケットがマッチした場合、  ターゲットの値によって次のルールが指定さ
       れる。  ターゲットの値には、 ユーザー定義チェインの名前、 iptables-extensions(8) に説明があるターゲットの
       いずれか、 もしくは特別な値 ACCEPT, DROP, RETURN のいずれかを指定する。

       ACCEPT はパケット通過、  DROP はパケット廃棄を意味する。  RETURN は、このチェインを辿るのを中止して、  前
       の (呼び出し元) チェインの次のルールから再開するという意味である。 組み込みチェインの最後に到達した場合、
       または組み込みチェインでターゲット RETURN  を持つルールにマッチした場合、  パケットをどのように処理するか
       は、そのチェインのポリシーで指定されたターゲットにより決まる。

テーブル

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

       -t, --table table
              このコマンドで操作するパケットマッチングテーブルを指定する。  カーネルで自動モジュールローディング
              が有効になっている場合、 そのテーブルで必要となるモジュールがまだロードされていなければ、 ロードさ
              れる。

              以下のテーブルがある。

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

              nat:
                  このテーブルは新しい接続を開くパケットの場合に参照される。  PREROUTING (パケットが入ってきた場
                  合、すぐにそのパケットを変換するためのチェイン)、  OUTPUT  (ローカルで生成されたパケットをルー
                  ティングの前に変換するためのチェイン)、   POSTROUTING  (パケットが出て行くときに変換するための
                  チェイン) という 3 つの組み込みチェインがある。 IPv6 NAT サポートはカーネル 3.7 以降で利用でき
                  る。

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

              raw:
                  このテーブルは、NOTRACK ターゲットとの組み合わせで使用され、接続追跡 (connection tracking)  の
                  対象外とする通信を設定するのに使われる。このテーブルは  netfilter フックに優先度高で登録されて
                  いるので、 ip_conntrack や他の IP テーブルよりも前に呼ばれる。  このテーブルでは、  PREROUTING
                  (任意のネットワークインタフェースから到着するパケットに対するチェイン)、  OUTPUT (ローカルプロ
                  セスが生成したパケットに対するチェイン) の 2 つの組み込みチェインが提供されている。

              security:
                  このテーブルは、強制アクセス制御 (Mandatory Access Control; MAC)  のネットワークルール用に使用
                  される。 例えば、 SECMARKCONNSECMARK ターゲットにより有効にされるルールなどである。 強制ア
                  クセス制御は、 SELinux などの Linux セキュリティモジュールにより実装されている。  セキュリティ
                  テーブルは  filter  テーブルの後に呼ばれる。 これにより、 強制アクセス制御のルールよりも前に、
                  filter テーブルの任意アクセス制御 (Discretionary Access Control; DAC) のルールを適用することが
                  できる。  このテーブルでは、  INPUT  (マシン自体に入ってくるパケットに対するチェイン)、 OUTPUT
                  (ローカルマシンで生成されたパケットに対してルーティング前に変更を行うためのチェイン)、 FORWARD
                  (マシンを経由して転送されるパケットに対してルーティング前に変更を行うためのチェイン) の 3 つの
                  組み込みチェインが提供されている。

オプション

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

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

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

       -C, --check chain rule-specification
              指定したルールにマッチするルールが指定されたチェインにあるかを確認する。  このコマンドでマッチする
              エントリを探すのに使用されるロジックは -D と同じだが、 既存の iptables  設定は変更されず、終了コー
              ドは成功、失敗を示すのに使用される。

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

       -I, --insert chain [rulenum] rule-specification
              選択されたチェインにルール番号を指定して 1 つ以上のルールを挿入する。 ルール番号が 1  の場合、ルー
              ルはチェインの先頭に挿入される。 ルール番号が指定されなかった場合、ルール番号のデフォルトは 1 とな
              る。

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

       -L, --list [chain]
              選択されたチェインにある全てのルールを一覧表示する。  チェインが指定されない場合、全てのチェインの
              リストが一覧表示される。 他のコマンドと同様に、指定されたテーブル (デフォルトは filter) に対して作
              用する。 NAT ルールを表示するには以下のようにする。
               iptables -t nat -n -L
              DNS  の逆引きを避けるために、  -n  オプションと共に使用されることがよくある。 -Z (ゼロクリア) オプ
              ションを同時に指定することもできる。  この場合、各チェインの表示とゼロクリアは同時に行われ、カウン
              タ値に抜けが発生することはない。 細かな出力内容は同時に指定された他の引き数により変化する。 以下の
              ように -v オプションを指定しない限り、 ルールの表示は一部省略されたものとなる。
               iptables -L -v

       -S, --list-rules [chain]
              選択されたチェインにある全てのルールを表示する。チェインが指定されない場合、 iptables-save  と同じ
              く、   全てのチェインの情報が表示される。   他のコマンド同様、   指定されたテーブル  (デフォルトは
              filter) に対して作用する。

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

       -Z, --zero [chain [rulenum]]
              全てのチェインのパケットカウンタとバイトカウンタをゼロにする。  チェインやチェイン内のルールが指定
              された場合には、 指定されたチェインやルールのカウンタだけをゼロにする。 クリアされる直前のカウンタ
              を見るために、 -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 コマンドで用いられて) ルールの仕様を決める。

       -4, --ipv4
              このオプションは  iptables  と iptables-restore では効果を持たない。 -4 オプションを使ったルールを
              ip6tables-restore で挿入された場合、(この場合に限り)  そのルールは黙って無視される。それ以外の使い
              方をした場合はエラーが発生する。このオプションを使うと、 IPv4 と IPv6 の両方のルールを一つのルール
              ファイルに記述し、iptables-restore と ip6tables-restore の両方でそのファイルを使うことができる。

       -6, --ipv6
              -6 オプションを使ったルールを iptables-restore で挿入された場合、(この場合に限り) そのルールは黙っ
              て無視される。それ以外の使い方をした場合はエラーが発生する。このオプションを使うと、  IPv4 と IPv6
              の両方のルールを一つのルールファイルに記述し、iptables-restore と  ip6tables-restore  の両方でその
              ファイルを使うことができる。 このオプションは ip6tables と ip6tables-restore では効果を持たない。

       [!] -p, --protocol protocol
              ルールで使われるプロトコル、またはチェックされるパケットのプロトコル。    指定できるプロトコルは、
              tcp, udp, udplite, icmp, esp, ah, sctp と特別なキーワード all  のいずれか  1  つか、または数値であ
              る。  数値には、これらのプロトコルのどれか、またはそれ以外のプロトコルを表す数値を指定することがで
              きる。 /etc/protocols にあるプロトコル名も指定できる。 プロトコルの前に "!" を置くと、そのプロトコ
              ルを除外するという意味になる。 数値 0 は all と等しい。 "all" は全てのプロトコルとマッチし、このオ
              プションが省略された際のデフォルトである。 ip6tables では、 esp 以外の IPv6 拡張ヘッダは指定できな
              い点に注意。  espipv6-nonext はバージョン 2.6.11 以降のカーネルで使用できる。 数値 0 は all と
              等しい。 これは、プロトコルフィールドが値 0 であるかを直接検査できないことを意味する。 HBH  ヘッダ
              とマッチさせるためには、  HBH ヘッダが例え最後にある場合であっても、 -p 0 を使うことはできず、必ず
              -m hbh を使う必要がある。

       [!] -s, --source address[/mask][,...]
              送信元の指定。 address はホスト名、ネットワーク IP アドレス (/mask を指定する)、通常の IP アドレス
              のいずれかである。ホスト名の解決は、カーネルにルールが登録される前に一度だけ行われる。  DNS のよう
              なリモートへの問い合わせで解決する名前を指定するのは非常に良くないことである。   mask   には、IPv4
              ネットワークマスクか  (iptables  の場合)、ネットワークマスクの左側にある  1 の数を表す数値を指定す
              る。つまり、 24 という iptables の mask は 255.255.255.0 と同じである。 アドレス指定の前に "!"  を
              置くと、そのアドレスを除外するという意味になる。 フラグ --src は、このオプションの別名である。複数
              のアドレスを指定することができるが、その場合は (-A での追加であれば) 複数のルールに展開され、  (-D
              での削除であれば) 複数のルールが削除されることになる。

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

       -m, --match match
              使用するマッチ、つまり、特定の通信を検査する拡張モジュールを指定する。    マッチの集合により、ター
              ゲットが起動される条件が構築される。  マッチは先頭から末尾に向けてコマンドラインで指定された順に評
              価され、 短絡式 (short-circuit fashion)  の動作を行う、つまり、いずれの拡張モジュールが偽  (false)
              を返した場合、そこで評価は終了する。

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

       -g, --goto chain
              ユーザー定義チェインで処理を継続することを指定する。 --jump オプションと異なり、 return が行われた
              際にこのチェインでの処理は継続されず、  --jump  でこのチェインを呼び出したチェインで処理が継続され
              る。

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

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

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

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

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

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

       -w, --wait
              Wait  for  the  xtables  lock.   To  prevent  multiple  instances  of  the  program  from  running
              concurrently,  an  attempt  will  be  made to obtain an exclusive lock at launch.  By default, the
              program will exit if the lock cannot be obtained.  This option will make the  program  wait  until
              the exclusive lock can be obtained.

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

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

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

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

マッチングとターゲットの拡張

       iptables は、パケットマッチングとターゲットの拡張を使うことができる。 iptables-extensions(8) man ページに
       利用できる拡張のリストが載っている。

返り値

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

バグ

       バグ? 何それ?? ;-)  http://bugzilla.netfilter.org/ を覗いてみるといいだろう。

IPCHAINS との互換性

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

       その他の大きな違いは、 -i で入力インターフェース、 -o で出力インターフェースを表わし、 FORWARD チェインに
       入るパケットでは入出力両方のインターフェースが指定可能な点である。

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

関連項目

       iptables-apply(8), iptables-save(8), iptables-restore(8), iptables-extensions(8),

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

作者

       Rusty Russell が最初に iptables を書いた。初期の段階での Michael Neuling との議論の上で書かれた。

       Marc Boucher は Rusty に iptables の汎用的なパケット選択のフレームワークを使うように働きかけて、 ipnatctl
       を使わないようにした。そして、mangle テーブル、所有者マッチング、 mark 機能を書き、いたるところで使われて
       いる素晴らしいコードを書いた。

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

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

       Harald Welte は ULOG ターゲット、NFQUEUE ターゲット、新しい libiptc や TTL, DSCP, ECN  のマッチ・ターゲッ
       トを書いた。

       Netfilter  コアチームは、Martin  Josefsson,  Yasuyuki  Kozakai,  Jozsef Kadlecsik, Patrick McHardy, James
       Morris, Pablo Neira Ayuso, Harald Welte, Rusty Russell である。

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

バージョン

       この man ページは iptables/ip6tables 1.4.21 について説明している。