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

名前

       ipchains - IP ファイアウォール管理

書式

       ipchains -[ADC] チェイン ルールの詳細 [オプション]
       ipchains -[RI] チェイン ルール番号 ルールの詳細 [オプション]
       ipchains -D チェイン ルール番号 [オプション]
       ipchains -[LFZNX] [チェイン] [オプション]
       ipchains -P チェイン ターゲット [オプション]
       ipchains -M [ -L | -S ] [オプション]

説明

       ipchains  は Linux カーネル中の IP ファイアウォールのルールを設定し、保守し、 検査するため
       のものである。 これらのルールは、4 つのカテゴリに分類できる - IP input (入力) チェイン、IP
       output (出力) チェイン、 IP forward (転送) チェイン、そしてユーザ定義チェインである。

       これら各々のカテゴリ毎に、ルールの一覧表【訳注: table/テーブル】が 用意される。 これらルー
       ルはユーザ定義チェインのどれか一つを参照することもある。 詳細については ipfw(4) を参照のこ
       と。

ターゲット

       ファイアウォールルールでは、パケットの判定基準とターゲットを指定する。  対象パケットがマッ
       チしないと、チェイン中の次のルールが検査される。    ルールに一致する場合、次のルールはター
       ゲットの値によって指定される。  ターゲットの値はユーザ定義チェインの名前か、または特別な値
       である ACCEPT, DENY, REJECT, MASQ, REDIRECT, RETURN のうちの 1 つである。
       ACCEPT は、対象パケットを通過させる。 DENY は、対象パケットを床へ落とし、捨て去る。 REJECT
       は、対象パケットを捨て去るという点では  DENY と同じだが、 DENY よりも 礼儀正しく、デバッグ
       し易くなっている。 何故なら、パケットを捨てる際に対象パケットを捨てたことを示す ICMP  メッ
       セージを送信元に返信するからである。 ( DENYREJECT は、 ICMP パケットに関しては動作が同
       じであることに注意されたい。)
       MASQ   は    forward    チェインとユーザ定義チェインに対してのみ有効であり、且つカーネルが
       CONFIG_IP_MASQUERADE 付きでコンパイルされている場合にだけ使用できる。 これにより、パケット
       はあたかもローカルホストから発信されたかのように  マスカレードされる。  更に、受信されるパ
       ケットは先にマスカレードされたホストに対する返答として    認識されると共に、自動的にマスカ
       レード外し (demasquerade) が行われ、 forward チェインのチェックから外される。
       REDIRECT    は    input     チェインとユーザ定義チェインに対してのみ有効であり、カーネルが
       CONFIG_IP_TRANSPARENT_PROXY  付きでコンパイルされている場合にだけ使用できる。 このターゲッ
       トにより、リモートホスト宛に送信されたパケットであっても  ローカルのソケットへ振り向けられ
       る。  リダイレクト先のポートにデフォルト値である 0 が指定されていると、 そのパケットの宛先
       ポートがリダイレクト先のポートとして使用される。  このターゲットを用いる時は、オプションの
       引数としてポート番号が指定できる。
       ユーザ定義チェインの終りに達するか、またはターゲット   RETURN   を持つルールにマッチした場
       合、以前の (呼び出し元の) チェイン中の次の ルールが評価される。 組み込み済みチェインの終り
       に達するか、または組み込み済みチェインのルールの  ターゲットとして  RETURN  にマッチした場
       合、チェインに指定されたポリシーがそのパケットの運命を 決定する。

オプション

       ipchains が認識するオプションは、幾つかのグループに分類できる。

   コマンド
       これらのオプションは実行する特定の機能を指定する -  以下に特別に指定のない限り、コマンドラ
       インではこれらのオプションのうち いずれか一つしか指定することができない。 ロングバージョン
       のコマンドやオプション名は、必ずしも完全な形の名前で 指定する必要はなく、 ipchains  が他の
       オプションと識別することができるだけの長さがあれば十分である。  【訳注:  例えば、 --append
       の場合、 --a で始まるオプション名は他にないので、 --app でも可である。】

       -A, --append
              選択したチェインの末尾に 1 つ以上のルールを追加する。  名前解決の結果、発信元アドレ
              スと宛先アドレスの両方またはいずれかの名前が 1 つ以上の IP アドレスを持つ場合、ルー
              ルは各々の可能なアドレスの組合せ毎に 追加される。

       -D, --delete
              選択したチェインから、1 つ以上のルールを削除する。 このコマンドには 2  つのバージョ
              ンがある - ルールは (最初のルールを 1 として数え始めて) チェイン中の番号で 指定され
              るか、一致するルールにて指定される。

       -R, --replace
              選択したチェインのルールを置き換える。 名前解決の結果、発信元と宛先の両方またはいず
              れかの名前が  複数の IP アドレスを持つ場合、コマンドの実行は失敗する。 ルールには 1
              から始まる番号が振られる。

       -I, --insert
              選択したチェインへ、 1 つ以上のルールを指定のルール番号で挿入する。  従って、ルール
              番号に 1 を指定すると、そのルールはチェインの先頭に 挿入される。

       -L, --list
              選択したチェインに含まれる全てのルールを一覧表示する。 チェインを指定しないと、全て
              のチェインが一覧表示される。 チェインを指定しない時に、 -Z (ゼロ)  オプションとの組
              み合わせは有効である。 正確な出力は他の引数の指定によって行われる。

       -F, --flush
              選択したチェインの内容を一気に消去する。 これは全てのルールを一つずつ削除することと
              等価である。

       -Z, --zero
              全てのチェインのパケットカウンタとバイトカウンタをゼロに初期化する。 カウンタがクリ
              アされる直前にその値を見たい時の為に、 -L, --list (リスト) オプションとの組み合わせ
              は有効である - カウンタのクリアを行う際、特定のチェインを指定することは出来ない。 (
              全ての チェインが表示されると共にクリアされる)

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

       -X, --delete-chain
              指定したユーザ定義チェインを削除する。 削除対象チェインへの参照が存在してはならない
              (参照されている場合は、そのチェインを削除する前に、参照元のルールを  削除するか、或
              は他のチェインへ移動しなければならない)。 引数が与えられなかった場合、 ipchains  は
              組み込み済みチェインを除く 全てのユーザ定義チェインを削除しようとする。

       -P, --policy
              チェインのポリシーを指定したターゲットに設定する。     正しいターゲットについては、
              ターゲット の項を参照。  ポリシーを持つことができるのはユーザ定義ではないチェインだ
              けであり、 組み込み済みチェインもユーザ定義チェインもポリシーのターゲットとはなり得
              ない。

       -M, --masquerading
              このオプションは、( -L オプションと組み合わせて) 現在マスカレードされている接続を閲
              覧したり、( -S オプションと組み合わせて) カーネルにマスカレードの値を設定する。

       -S, --set tcp tcpfin udp
              IP  マスカレードに使用するタイムアウト値を変更する。  このコマンドは常に 3 つのパラ
              メータを取り、それぞれ、TCP セッション、 FIN パケット受信後の  TCP  セッション、UDP
              パケットに対するタイムアウト 値 (秒) を表す。 タイムアウト値 0 は、対応する項目の現
              在のタイムアウト値が保持される ことを意味する。 このオプションは、 -M  フラグとの組
              み合わせの時のみ使用できる。

       -C, --check
              選択したチェインで与えられたパケットを照合する。 このパケットを、ネットワークから来
              た "本物の" パケットのように扱わせることで カーネルルーチンのテストに使える。  組み
              込み済みチェインやユーザ定義チェインをチェックするのにも使える。 ファイアウォールの
              ルールを規定した引数は、テスト用パケットを構築するのにも 使える。 特に、  -s  (発信
              元)、 -d (宛先)、 -p (プロトコル)、 -i (インターフェース) フラグは必ず指定する。

       -h, --help
              コマンドの書式に関する   (今のところは非常に簡単な)  説明を表示する。  オプションに
              icmp を指定すると、ICMP 名の一覧を表示する。

       -V, --version
              単に ipchains のバージョン番号を表示する。

   引数
       下記に示すパラメータは (追加 (append), 削除 (delete), 置換(replace),  挿入  (insert)  及び
       チェック (check) の各コマンドにて用いられる) ルールの 指定を補う。

       -p, --protocol[!] protocol
              チェック対象となるルールまたはパケットのプロトコル。 プロトコルには tcp, udp, icmp,
              all,   のどれか一つを指定する。    またはこれらのプロトコルに対応したプロトコル番号
              や、これらのプロトコルに  対応していない番号を指定できる。 また、 /etc/protocols に
              あるプロトコル名での指定も許される。 プロトコル指定の前に "!"  を置くと、そのプロト
              コルを指定しないことになる。 数値 0 は all と等価である。 プロトコル all は全てのプ
              ロトコルと一致し、このオプションが省略された場合のデフォルト値  である。   all   は
              check コマンドと組み合わせてはならない。

       -s, --source, --src [!] address[/mask] [!] [port[:port]]
              発信元の指定。 address は、ホスト名・ネットワーク名・素の IP アドレスのいずれでもよ
              い。 mask は、ネットマスク・単なる数 (ネットマスクの左側から数えた 1 の個数) のいず
              れでもよい。 したがって、 24 という mask の値は、 255.255.255.0 と等価である。 アド
              レス指定の前に "!" を置くと、そのアドレスを指定しないことになる。
              発信元にはポート指定または ICMP  タイプを含めてもよい。  これはサービス名、ポート番
              号、ICMP タイプの数値、あるいは
               ipchains -h icmp
              コマンドで表示される ICMP タイプ名のいずれかでよい。
              これら  ICMP  名の多くはタイプとコードの両方を参照することに注意されたい。 よって、
              -d フラグの後の ICMP コードの指定は誤りである。  この節の残りの部分では、  port  は
              ポート指定または    ICMP    タイプのいずれかを意味する。   対象とするポートの範囲を
              port:port という書式で指定することもできる。 最初のポートを省略すると、"0" とみなさ
              れる。 最後のポートを省略すると、"65535" とみなされる。
              ポートは、 tcp, udp, icmp プロトコルとの組み合わせでのみ指定可能である。 ポート指定
              の前に "!" を置くと、そのポートを指定しないことになる。 check  コマンドが指定された
              場合、厳密に  1 つのポートが必要である。 -f (fragment) フラグが指定された場合、ポー
              トの指定は許されない。

       --source-port [!] [port[:port]]
              発信元ポートまたは発信元ポート範囲の、個別指定を可能とする。 詳細については、前出の
              -s フラグに関する解説を参照のこと。フラグ --sport は、このオプションの別名である。

       -d, --destination, --dst [!] address[/mask] [!] [port[:port]]
              宛先指定。 構文についての詳細な説明は、 -s (source) フラグの解説を参照のこと。 ポー
              トを持たない ICMP に対しては、"宛先ポート" は数字の ICMP コードを表す。

       --destination-port [!] [port[:port]]
              ポートの個別指定を可能とする。詳細については、 -s  フラグの解説を参照のこと。フラグ
              --dport は、このオプションの別名である。

       --icmp-type [!] typename
              ICMP  タイプの指定を可能にする  (正しい  ICMP タイプ名を確認するには、 -h icmp オプ
              ションを使用する)。 宛先指定に ICMP  タイプを付加するよりも、これを利用するほうがよ
              り便利な 場合が多い。

       -j, --jump target
              これはルールのターゲットを指定する - すなわち、ルールにマッチしたパケットの行く末で
              ある。 ターゲットはユーザ定義チェイン  (但し、当該ルールが含まれているものを  除く)
              か、パケットの運命を直接決定する特定のターゲットのうちの一つが     指定可能である。
              ルール中でこのオプションが省略された場合には、パケットの運命には全く     影響しない
              が、ルールのカウンタの値は増加する。

       -i, --interface [!] name
              (input  チェインにおいては) 受信したパケットが通過するインターフェース名、 (forward
              及び output チェインにおいては) 送信されるパケットが通過する インターフェース名を指
              定する。  このオプションが省略された場合は空文字列と見なされ、全ての インターフェー
              ス名を指定することと同じ意味になる。 インタフェース名の前に "!"  が置かれると、その
              インターフェースを 指定しないという意味になる。 インタフェース名の末尾の "+" は前方
              一致を示し、"+" の直前までの文字列 で始まるインタフェースの全てにマッチする。

       [!]  -f, --fragment
              寸断された (fragment: フラグメント) パケットのうち 2 番目以降の  フラグメントだけを
              参照するルールであることを意味する。 そのようなパケット (または ICMP タイプ) の発信
              元ポートや宛先ポートを   識別する方法は無いので、この類のパケットはあらゆるルールと
              マッチしない。  "-f"  フラグの前に  "!" があると、2番目以降のフラグメントを参照しな
              い。

   その他のオプション
       以下のオプションを追加することができる -

       -b, --bidirectional
              双方向モード。 ルールは IP パケットに対し双方向にマッチする -  これは発信元と宛先を
              交換してルールを繰り返して記述することと同じ効果を  もたらす。 TCP syn パケットの送
              出を許可する設定に -b ルールを適応すると、TCP syn  パケットでないパケットの受け取り
              を許可する設定にはならない。  【訳注:  -b  フラグが反対を意味するからといって、"TCP
              synパケット" の反対 の意味で "非SYNパケット"  という対応になったり、  "パケットの送
              出"  の反対 の意味で "パケットの受けとり" という対応にはならない。 意味が反対になる
              のは発信元アドレスと宛先アドレスの交換によるパケットの 方向だけであり、 "SYN パケッ
              ト" が"非SYNパケット" にはならないし、 input チェインから output チェインに扱いが変
              わる訳でもない。】 つまり、-b  フラグは使わずに、きちんと一つずつルールを指定したほ
              うがよい。

       -v, --verbose
              詳細表示。  このオプションは、コマンドのインターフェースアドレス・(もしあれば) ルー
              ルのオプション・TOS マスク・パケットとバイトのカウンタを一覧表にして 表示する。  カ
              ウンタ表示の後の  'K', 'M', 'G' は各々、 1000, 1,000,000, 1,000,000,000 倍を 意味す
              る。 (但し、 -x フラグはこの表示方法を変更する。)  -M  と組み合わせて使うと、デルタ
              シーケンス番号  (delta  sequence  numbers)  に  関連する情報も表示される。 追加、挿
              入、削除、置換にこのオプションを適用すると、ルールの詳細情報が   表示されるようにな
              る。

       -n, --numeric
              数値での出力。   IP  アドレスとポート番号が数値形式で出力される。  デフォルトでは、
              ipchains はそれらをホスト名、ネットワーク名、或は  サービス名で(出来るだけ)表示しよ
              うと試みる。

       -l, --log
              マッチしたパケットをカーネルのログに記録する。   ルールにこのオプションが設定される
              時、 Linux  カーネルは  printk()  関数を通じて、マッチしたパケット全ての(多くは  IP
              ヘッダフィールドに関する) 情報を出力する。

       -o, --output [maxsize]
              マッチしたパケットをユーザ空間のデバイスへコピーする。   これは現在主にユーザ空間で
              ファイアウォールの効果を使って何かしたい 開発者が使用する。  オプション引数の最大サ
              イズはコピーされるパケットの最大数を制限する  為に使われる。 このオプションはカーネ
              ルを CONFIG_IP_FIREWALL_NETLINK を設定して コンパイルした時のみ有効である。

       -m, --mark markvalue
              マッチしたパケットに印を付ける。 パケットには 32 ビットの符号無しの数値で印が付けら
              れ、  その値によって (そのうち) そのパケットが内部で どのように扱われるかが変更でき
              るようになるだろう。 あなたがカーネルハッカーでなければ、このオプションは気にしなく
              て良い。 マーク値 が + 或は - から始まる際には、  (ゼロから始まる) 現在のマーク値か
              らその値を 加算或は減算する。

       -t, --TOS andmask xormask
              IP ヘッダ内の TOS フィールドを変更する為に使用されるマスク。 パケットがルールにマッ
              チする時、その TOS フィールドは 1 番目のマスク でビット単位の論理積が行われ、その結
              果は 2 番目のマスクでビット単位の 排他的論理和が行われる。  マスク値は  16  進の  8
              ビット値で指定する。 TOS フィールドの LSB は不変でなければならない (RFC 1349) 。 こ
              れを変更しようとすると、拒絶される。 すなわち、 TOS ビットが 1 つ以上設定されている
              ものがこれに該当する。 パケットに複数の TOS ビットを設定しようとすると、(標準出力を
              通じて) ワーニングメッセージを出す。 そのような TOS  値を持つパケットが当該ルールに
              到達することはあり得ないと  わかっているなら、ワーニングメッセージは無視できる。 勿
              論、 TOS の操作はルールのターゲットが DENY 或は REJECT の場合には無意味である。

       -x, --exact
              番号表示の拡張。 パケット及びバイトカウンタの値を K (1000倍)、 M (1000K倍)  或は  G
              (1000M倍)で丸めた値でなく、正確な値で表示する。  このオプションは -L コマンドでのみ
              有効である。

       [!] -y, --syn
              TCP パケットの内、SYN ビットがセットされ ACK ビットと FIN  ビットがクリア  されたパ
              ケットにのみマッチする。  そのようなパケットは、TCP 接続の開始要求に使用される。 例
              えば、あるインターフェースへ到着するそのようなパケットを遮断すると、  内向きの  TCP
              接続を防止するが、外向きの  TCP 接続は影響を受けない。 このオプションは、プロトコル
              の種類が TCP に設定されている場合にのみ意味を持つ。 "-y"  の前に  "!"  フラグがある
              と、このオプションの判定結果が否定される。  【訳注: -y の場合、各々のビットの条件は
              "SYN=1 and ACK=0 and FIN=0" の 組合せにのみマッチする。 "! -y" はこの否定なので、各
              ビットの組合せが上記以外の全てのパケットが  マッチする。 すなわち、 "SYN=0 or ACK=1
              or FIN=1" という条件になる。 SYN ビットが 0  であれば良いのは言うまでもなく、例えば
              "SYN=1 and ACK=1 and FIN=0" という組合せでもマッチする。】

       --line-numbers
              ルールを一覧表示する際、各ルールの先頭にそのルールのチェイン中での 位置に対応する行
              番号を追加する。

       --no-warnings
              全ての警告を無効にする。

ファイル

       /proc/net/ip_fwchains
       /proc/net/ip_masquerade

返り値

       各種エラーメッセージは標準エラー出力に出力される。 正常動作時の終了コードは 0 である。  無
       効な、或は誤ったコマンド行パラメータに起因すると思われるエラーは、  終了コード  2 を発生す
       る。 その他のエラーでの終了コードは 1 である。

バグ

       ターミナルからの入力により forward チェインへルールが挿入または追加された ときに IP 転送機
       能が有効になっていない場合で --no-warnings を 指定していなければ、誤りを修正するまで IP 転
       送が行われないことを警告する メッセージが標準出力へ表示される。 これは、(2.0  カーネルには
       存在しなかった) 必要条件に気付かないユーザを助け るためのものである。

       パケットカウンタとバイトカウンタを  1  つのチェインの分だけリセットする 方法は無い。これは
       カーネルの制限である。

       ループの検知は ipchains では行われない。  ループ状態にあるパケットは破棄されログに記録され
       るが、 うっかりループを作ってしまうことを考慮して、ログから見つけ出すことが 必要である。

       新しい   2.1  カーネルのパケットスケジューリングのルーチンを詳述する文書が  リリースされる
       迄、パケットのマーキングの効果に関する説明は意図的に 曖昧にしている。

       (組み込み済みチェインの) ポリシーカウンタを 0 にする方法は無い 。

注意

       ipchains は、新しい IP ファイアウォールツリーを利用するという点で、Jos Vos 作の ipfwadm と
       は大きく異なっている。  ipchains の機能は ipfwadm のスーパーセットであり、コマンドはほぼ 1
       対 1 で 対応付けることができる。 新しいコマンド名は、より理に適ったものであると思う。 とは
       いえ、注意すべき変更点もいくつか存在する。

       フラグメントの扱いが異なる。   従来は、2   番目以降のフラグメントを全て通過させていた  (通
       常、これは安全である)。 現在では、これらをフィルタすることができる。 すなわち、 ipfwadm か
       らルールを変換する際には、フラグメントを許可する   ルールを明示しなければならない。   同様
       に、送信元及び宛先ポートに  0xFFFF  (ICMP  では  0xFF)  を指定して  チェックする、古い統計
       (accounting)ルールを探す必要がある。 これはフラグメントの統計を取る古い方法である。

       統計  (accounting) ルールは、現在は input チェインと output チェインへ 統合されている。 以
       前の挙動と同じようにするには以下のようにすればよい -
        ipchains -N acctin
        ipchains -N acctout
        ipchains -N acctio
        ipchains -I input -j acctio
        ipchains -I input -j acctin
        ipchains -I output -j acctio
        ipchains -I output -j acctout
       これは 3 つのユーザ定義チェイン、 acctin, acctout , acctio, を生成する。  これらはあらゆる
       統計ルールを含められる。  (これらのルールは -j フラグを使わず指定するべきである。 そうすれ
       ば、パケットはこれらのチェインを単に無傷のまま通過する。)

       カーネルが MASQ ターゲットや REDIRECT ターゲットが不適切なところにある  (つまり、  forward
       ルール以外に  MASQ  があったり、入力ルール以外に REDIRECT がある等) のを見つけると、syslog
       にメッセージを記録し、そのパケットは破棄される。

       SYN 及び ACK に合致する際の古い挙動 (従来、非 TCP パケットに対しては 無視されていた)  が変
       更された。 非 TCP パケット固有のルールに対する SYN オプションは誤りである。

       ACK マッチングオプション ( -k フラグ) は、もはやサポートされない。 !-y との組み合わせ
       がこれに相当する)。

       現在では、TOS の最下位ビットを設定・変更する TOS マスクを 明記するのはエラーになる -  以前
       の TOS マスクの場合、そのような試みはカーネル内部で黙って 変更されていた。

       現在、  -b フラグは単に送信元及び宛先の指定を反転させるルールの組合せを 挿入或は削除する為
       だけになった。

       インターフェースをアドレスで指定する方法は無い。インターフェース名を使うこと。

関連項目

       ipfw(4)

著者

       Rusty Russell <rusty@linuxcare.com>。細かな点まで校正してくれた Hans Persson  にお礼が言い
       たい。今後私が書く文書は、全部彼に読んでもらいたい!

翻訳者

       大神 淳 <ati@ff.iij4u.or.jp>
       松田 陽一 <matsuda@palnet.or.jp>

日本語版校正

       白方 健太郎 <argrath@ub32.org>
       武井 伸光 <takei@webmasters.gr.jp>
       元木 顕弘 <amotoki@dd.iij4u.or.jp>
       関根 達夫 <tsekine@isoternet.org>

                                         February 8, 1998                             IPCHAINS(8)