Provided by: manpages-ja_0.5.0.0.20131015+dfsg-2_all
名前
ip6tables - IPv6 パケットフィルタを管理する
書式
ip6tables [-t テーブル] -[AD] チェイン ルールの詳細 [オプション] ip6tables [-t テーブル] -I チェイン [ルール番号] ルールの詳細 [オプション] ip6tables [-t テーブル] -R チェイン ルール番号 ルールの詳細 [オプション] ip6tables [-t テーブル] -D チェイン ルール番号 [オプション] ip6tables [-t テーブル] -[LFZ] [チェイン] [オプション] ip6tables [-t テーブル] -N チェイン ip6tables [-t テーブル] -X [チェイン] ip6tables [-t テーブル] -P チェイン ターゲット [オプション] ip6tables [-t テーブル] -E 旧チェイン名 新チェイン名
説明
ip6tables は Linux カーネルの IPv6 パケットフィルタルールのテーブルを 設定・管理・検査する ために使われる。 複数の異なるテーブルが定義される可能性がある。 各テーブルは組み込み済み チェインを含む。 さらにユーザー定義のチェインを含むこともできる。 各チェインは、パケット群にマッチするルールのリストである。 各ルールは マッチしたパケットに 対して何をするかを指定する。 これは「ターゲット」と 呼ばれ、 同じテーブル内のユーザー定義 チェインにジャンプすることもできる。
ターゲット
ファイアウォールのルールは、パケットを判断する基準とターゲットを指定する。 パケットがマッ チしない場合、チェイン内の次のルールが評価される。 パケットがマッチした場合、 ターゲットの 値によって次のルールが指定される。 ターゲットの値は、ユーザー定義チェインの名前、または特 別な値 ACCEPT, DROP, QUEUE, RETURN のうちの 1 つである。 ACCEPT はパケットを通すという意味である。 DROP はパケットを床に落す (捨てる) という意味で ある。 QUEUE はパケットをユーザー空間に渡すという意味である (カーネルがサポートしていれば であるが)。 RETURN は、このチェインを辿るのを中止して、 前の (呼び出し元) チェインの次の ルールから再開するという意味である。 組み込み済みチェインの最後に到達した場合、 または組み 込み済みチェインで ターゲット RETURN を持つルールにマッチした場合、 チェインポリシーで指定 されたターゲットが パケットの行方を決定する。
テーブル
現在のところ 2 つの独立なテーブルが存在する (どのテーブルがどの時点で現れるかは、 カーネル の設定やどういったモジュールが存在するかに依存する)。 nat テーブルは、まだ実装されていな い。 -t, --table table このオプションは、このコマンドが操作するパケットマッチングテーブルを 指定する。 カーネルに自動モジュールローディングが設定されている場合、 そのテーブルに対する適切 なモジュールがまだロードされていなければ、 そのモジュールがロードされる。 テーブルは以下の通りである。 filter: (-t オプションが指定されていない場合は) これがデフォルトのテーブルである。 これ には INPUT (マシン自体に入ってくるパケットに対するチェイン)・ FORWARD (マシンを 経由するパケットに対するチェイン)・ OUTPUT (ローカルマシンで生成されたパケット に対するチェイン) という 組み込み済みチェインが含まれる。 mangle: このテーブルは特別なパケット変換に使われる。 カーネル 2.4.17 までは、 PREROUTING (パケットが入ってきた場合、 すぐにそのパケットを変換する ためのチェ イン)・ OUTPUT (ローカルで生成されたパケットを ルーティン グの前に変換するため のチェイン) という 2 つの組み込み済みチェインが含ま れていた。 カーネル 2.4.18 からは、これらの他に INPUT (マシン自体に 入ってくるパケットに対するチェイン)・ FORWARD (マシンを経由するパケッ トに対するチェイン)・ POSTROUTING (パケットが出 て行くときに変換する ためのチェイン)・ という 3 つの組み込み済みチェインもサ ポートされる。
オプション
ip6tables で使えるオプションは、いくつかのグループに分けられる。 コマンド これらのオプションは、実行する特定の動作を指定する。 以下の説明で許可されていない限り、 こ の中の 1 つしかコマンドラインで指定することができない。 長いバージョンのコマンド名とオプ ション名は、 ip6tables が他のコマンド名やオプション名と区別できる範囲で (文字を省略して) 指定することもできる。 -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) に対して作用する。 よって mangle ルールを表示 するには以下のようにする。 ip6tables -t mangle -n -L DNS の逆引きを避けるために、よく -n オプションと共に使用される。 -Z (ゼロ化) オプ ションを同時に指定することもできる。この場合、 チェインは要素毎にリストされて、 (訳 註: パケットカウンタとバイト カウンタが) ゼロにされる。出力表示は同時に与えられた他 の引き数に 影響される。以下のように、 -v オプションを指定しない限り、 実際のルール そのものは表示されない。 ip6tables -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, ipv6-icmp|icmpv6, all のいずれか 1 つか、数値である。 数値 は、これらのプロトコルの 1 つ、もしくは別のプロトコルを表す。 /etc/protocols にある プロトコル名も指定できる。 プロトコルの前に "!" を置くと、そのプロトコルを指定しな いという意味になる。 数値 0 は all と等しい。 プロトコル all は全てのプロトコルと マッチし、 このオプションが省略された際のデフォルトである。 -s, --source [!] address[/mask] 送信元の指定。 address はホスト名 (DNS のようなリモートへの問い合わせで解決する名前 を指定するのは 非常に良くない)・ ネットワーク IPv6 アドレス (/mask を指定する)・ 通 常の IPv6 アドレス (今のところ、ネットワーク名はサポートされていない)、のいずれかで ある。 mask はネットワークマスクか、 ネットワークマスクの左側にある 1 の数を指定す る数値である。 つまり、 64 という mask は ffff:ffff:ffff:ffff:0000:0000:0000:0000 に等しい。 アドレス指定の前に "!" を置くと、そのアドレスを除外するという意味にな る。 フラグ --src は、このオプションの別名である。 -d, --destination [!] address[/mask] 送信先の指定。 書式の詳しい説明については、 -s (送信元) フラグの説明を参照するこ と。 フラグ --dst は、このオプションの別名である。 -j, --jump target ルールのターゲット、つまり、パケットがマッチした場合にどうするかを指定 する。ター ゲットはユーザー定義チェイン (そのルール自身が入っている チェイン以外) でも、パケッ トの行方を即時に決定する特別な組み込み済み ターゲットでも、拡張されたターゲット (以 下の 「ターゲットの拡張」 を 参照) でもよい。 このオプションがルールの中で省略され た場合、 ルールに マッチしてもパケットの行方に何も影響しないが、 ルールのカウンタは 1 つ 加算される。 -i, --in-interface [!] name パケットを受信することになるインターフェース名 (INPUT, FORWARD, PREROUTING チェイン に入るパケットのみ)。インターフェース名の前に "!" を置くと、 そのインターフェースを 除外するという意味になる。 インターフェース名が "+" で終っている場合、 その名前で始 まる任意の インターフェース名にマッチする。このオプションが省略された場合、 任意の インターフェース名にマッチする。 -o, --out-interface [!] name (FORWARD, OUTPUT チェインに入る) パケットを送信するインターフェース名。 インター フェース名の前に "!" を置くと、 そのインターフェースを除外するという意味になる。 イ ンターフェース名が "+" で終っている場合、 その名前で始まる任意のインターフェース名 にマッチする。 このオプションが省略された場合、 任意のインターフェース名にマッチす る。 -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 を指定する。
マッチングの拡張
ip6tables は拡張されたパケットマッチングモジュールを使うことができる。 これらのモジュール は 2 種類の方法でロードされる: モジュールは、 -p または --protocol で暗黙のうちに指定され るか、 -m または --match の後にモジュール名を続けて指定される。 これらのモジュールの後ろに は、モジュールに応じて 他のいろいろなコマンドラインオプションを指定することができる。 複数 の拡張マッチングモジュールを 1 行で指定することができる。 また、モジュールに特有のヘルプを 表示させるためには、 モジュールを指定した後で -h または --help を指定すればよい。 以下の拡張がベースパッケージに含まれている。大部分のものは、 ! を 前におくことによってマッ チングの意味を逆にできる。 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 である。 よって、コマンド ip6tables -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 オプションが設定されている場合にマッチする。 udp これらの拡張は `--protocol udp' が指定された場合にロードされ、 以下のオプションが提供され る: --source-port [!] port[:port] 送信元ポートまたはポート範囲の指定。 詳細は TCP 拡張の --source-port オプションの説 明を参照すること。 --destination-port [!] port[:port] 送信先ポートまたはポート範囲の指定。 詳細は TCP 拡張の --destination-port オプショ ンの説明を参照すること。 ipv6-icmp これらの拡張は `--protocol ipv6-icmp' または `--protocol icmpv6' が指定された場合にロード され、 以下のオプションが提供される: --icmpv6-type [!] typename ICMP タイプを指定できる。タイプ指定には、 数値の IPv6-ICMP タイプ、または以下のコマ ンド で表示される IPv6-ICMP タイプ名を使用できる。 ip6tables -p ipv6-icmp -h mac --mac-source [!] address 送信元 MAC アドレスにマッチする。 address は XX:XX:XX:XX:XX:XX と いう形式でなけれ ばならない。イーサーネットデバイスから入ってくるパケッ トで、 PREROUTING, FORWARD, INPUT チェインに入るパケットにしか 意味がない。 limit このモジュールは、トークンバケツフィルタを使い、 単位時間あたり制限され た回数だけマッチす る。 この拡張を使ったルールは、(`!' フラグが指定され ない限り) 制限に達するまでマッチす る。 例えば、このモジュールはログ記録 を制限するために LOG ターゲットと組み合わせて使うこ とができる。 --limit rate 単位時間あたりの平均マッチ回数の最大値。 数値で指定され、添字 `/second', `/minute', `/hour', `/day' を付けることもできる。 デフォルトは 3/hour である。 --limit-burst number パケットがマッチする回数の最大初期値: 上のオプションで指定した制限に 達しなければ、 その度ごとに、この数値になるまで 1 個ずつ増やされる。 デフォルトは 5 である。 multiport このモジュールは送信元や送信先のポートの集合にマッチする。 ポートは 15 個まで指定できる。 このモジュールは -p tcp または -p udp と組み合わせて使うことしかできない。 --source-ports port[,port[,port...]] 送信元ポートが指定されたポートのうちのいずれかであればマッチする。 フラグ --sports は、このオプションの便利な別名である。 --destination-ports port[,port[,port...]] 宛先ポートが指定されたポートのうちのいずれかであればマッチする。 フラグ --dports は、このオプションの便利な別名である。 --ports port[,port[,port...]] 送信元ポートと宛先ポートが等しく、 かつそのポートが指定されたポートの うちのいずれ かであればマッチする。 mark このモジュールはパケットに関連づけられた netfilter の mark フィールドにマッチする (この フィールドは、以下の MARK ターゲットで設定される)。 --mark value[/mask] 指定された符号なし mark 値のパケットにマッチする (mask が指定されると、比較の前に mask との論理積 (AND) がとられる)。 owner このモジュールは、ローカルで生成されたパケットに付いて、 パケット生成者のいろいろな特性と のマッチングをとる。 これは OUTPUT チェインのみでしか有効でない。 また、(ICMP ping 応答の ような) パケットは、 所有者がいないので絶対にマッチしない。 これは実験的なものという扱いで ある。 --uid-owner userid 指定された実効ユーザー ID のプロセスにより パケットが生成されている場合にマッチす る。 --gid-owner groupid 指定された実効グループ ID のプロセスにより パケットが生成されている場合にマッチす る。 --pid-owner processid 指定されたプロセス ID のプロセスにより パケットが生成されている場合にマッチする。 --sid-owner sessionid 指定されたセッショングループのプロセスにより パケットが生成されている場合にマッチす る。
ターゲットの拡張
iptables は拡張ターゲットモジュールを使うことができる: 以下のものが、標準的なディストリ ビューションに含まれている。 LOG マッチしたパケットをカーネルログに記録する。 このオプションがルールに対して設定されると、 Linux カーネルはマッチしたパケットについての (IPv6 における大部分の IPv6 ヘッダフィールド のような) 何らかの情報を カーネルログに表示する (カーネルログは 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 IPv6 パケットヘッダのオプションをログに記録する。 MARK パケットに関連づけられた netfilter の mark 値を指定する。 mangle テーブルのみで有効であ る。 --set-mark mark REJECT マッチしたパケットの応答としてエラーパケットを送信するために使われる。 エラーパケットを送 らなければ、 DROP と同じであり、TARGET を終了し、 ルールの検討を終了する。 このターゲット は、 INPUT, FORWARD, OUTPUT チェインと、これらのチェインから呼ばれる ユーザー定義チェイン だけで有効である。以下のオプションは、返されるエラーパケットの特性を 制御する。 --reject-with type type として指定可能なものは icmp6-no-route no-route icmp6-adm-prohibited adm-prohibited icmp6-addr-unreachable addr-unreach icmp6-port-unreachable port-unreach であり、適切な IPv6-ICMP エラーメッセージを返す (port-unreach がデフォルトである)。 さらに、TCP プロトコルにのみマッチするルールに対して、オプション tcp-reset を使うこ とができる。 このオプションを使うと、TCP RST パケットが送り返される。 主として ident (113/tcp) による探査を阻止するのに役立つ。 ident による探査は、壊れている (メールを受け取らない) メールホストに メールが送られる場合に頻繁に起こる。
返り値
いろいろなエラーメッセージが標準エラーに表示される。 正しく機能した場合、終了コードは 0 で ある。 不正なコマンドラインパラメータによりエラーが発生した場合は、 終了コード 2 が返され る。 その他のエラーの場合は、終了コード 1 が返される。
バグ
バグ? バグって何? ;-) えーと…、sparc64 ではカウンター値が信頼できない。
IPCHAINS との互換性
ip6tables は、Rusty Russell の ipchains と非常によく似ている。 大きな違いは、チェイン INPUT と OUTPUT が、それぞれローカルホストに入ってくるパケットと、 ローカルホストから出さ れるパケットのみしか調べないという点である。 よって、全てのパケットは 3 つあるチェインのう ち 1 つしか通らない (ループバックトラフィックは例外で、INPUT と OUTPUT チェインの両方を通 る)。 以前は (ipchains では)、 フォワードされるパケットが 3 つのチェイン全てを通っていた。 その他の大きな違いは、 -i で入力インターフェース、 -o で出力インターフェースを指定し、 と もに FORWARD チェインに入るパケットに対して指定可能な点である。 ip6tables では、その他にも いくつかの変更がある。
関連項目
ip6tables-save(8), ip6tables-restore(8), iptables(8), iptables-save(8), iptables-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 マッチングと TTL ターゲット・ libipulog を書いた。 Netfilter コアチームは、Marc Boucher, Martin Josefsson, Jozsef Kadlecsik, James Morris, Harald Welte, Rusty Russell である。 ip6tables の man ページは、Andras Kis-Szabo によって作成された。 これは Herve Eychenne <rv@wallfire.org> によって書かれた iptables の man ページを元にしている。 Mar 09, 2002 IP6TABLES(8)