ip6fw(8) FreeBSD 一般コマンドマニュアル

ip6fw

前のページ 上に戻る 次のページ

ip6fw


     ip6fw [-f | -q] flush
     ip6fw [-q] zero [number ...]
     ip6fw delete number ...
     ip6fw [-aftN] list [number ...]
     ip6fw [-ftN] show [number ...]
     ip6fw [-q] add [number] action [log] proto from src to dst
           [via name | ipv6no] [options]


解説

     簡単に設定するために、ルールをファイルに格納して、最初の書式に示すように
     ip6fw に処理させることが可能です。絶対 pathname を使用する必要があります
     ファイルは、1 行ずつ読み込まれ、 ip6fw ユーティリティへの引数に適用されま
     す。

     オプションとして、プリプロセッサを -p preproc で指定可能であり、ここを
     pathname がパイプされます。有用なプリプロセッサには cpp(1)m4(1) があ
     ります。 preproc の最初の文字がスラッシュ (`/') で開始しない場合、通常の
     PATH の名前検索が実行されます。 ip6fw 実行時には (まだ) 全ファイルシステ
     ムがマウントされていない環境においては、注意が必要です (例えば NFS 経由で
     マウントする場合)。一度 -p が指定されると、オプションの -D-U の指定を
     続けることが可能であり、これらはプリプロセッサに渡されます。これにより、
     設定ファイル (ローカルホスト名による条件等) が柔軟になり、 IP アドレス等
     の頻繁に必要となる引数を集中管理可能となります。

     ip6fw コードは、各パケットに対してマッチするものが見つかるまでルールリス
     トを走査することによって動作します。ルールにはすべて 2 つの関連のあるカウ
     ンタがあります。パケットカウンタとバイトカウンタです。これらのカウンタは
     パケットがルールにマッチするときに更新されます。

     ルールは、 1 から 65534 までの ``行番号'' で序列がつけられており、ルール
     を決めたり削除したりするのに使用されます。ルールは昇順で試され、パケット
     に最初にマッチしたルールが適用されます。複数のルールが同じ行番号を共有で
     きます。この場合、追加した順番でルールが適用されます。

     番号をつけずにルールを足した場合、その直前のルールよりも 100 大きい番号が
     つけられます。定義されたルール番号の最大値が 65434 よりも大きい場合、新し
     く定義されるルールは、ルールの最後に追加されます。

     delete 操作では、それが存在する場合には、 number を行番号にもつ最初のルー
     ルが削除されます。

     list コマンドは、現在のルールセットを出力します。

     show コマンドは `ip6fw -a list' と等価です。

     zero 操作は、ルール番号 number に関連づけられたカウンタを 0 にします。

     flush 操作は、すべてのルールを削除します。

     `#' で始まるコマンドおよび空白だけのコマンドはみな無視されます。

     次のルールは必ず存在します:
           いない場合は、暗黙のうちにこのオプションが指定されています。

     -q    add 操作や zero 操作、flush 操作を行っている最中に、そのアクション
           に対して何も表示しません (暗黙のうちに '-f' が指定されています)。こ
           れは、リモートログイン時のセッションでスクリプト内で複数の ip6fw コ
           マンドを実行したり (例えば、sh /etc/rc.firewall のように)、たくさん
           の ip6fw ルールファイルを処理したりすることでルールを調節するときに
           便利です。通常モード (冗長) で flush 操作を行うと、メッセージが出力
           されます。ルールがすべて flush されるので、ログインセッションにメッ
           セージを送ることができず、ログインセッションも閉じてしまいます。そ
           のため、残りのルールセットは処理されなくなってしまいます。復旧に
           は、コンソールへのアクセスが必要になります。

     -t    list している最中に、最後にマッチしたときのタイムスタンプを表示しま
           す。

     -N    出力で、アドレスおよびサービス名を解決しようとします。

     アクションは次の通りです。

         allow             ルールにマッチしたパケットを許可します。そして探索
                           を終了します。別名は pass, permit, accept です。

         deny              ルールにマッチしたパケットを捨てます。そして探索を
                           終了します。 dropdeny の別名です。

         reject            (非推奨です) ルールにマッチしたパケットを捨てて、
                           ICMPv6 の host unreachable notice メッセージを送ろ
                           うとします。そして探索を終了します。

         unreach code      ルールにマッチしたパケットを捨てて、 ICMPv6 の
                           unreachable notice メッセージをコード code で送ろう
                           とします。ここで、 code は 0 から 255 までの番号も
                           しくは次の別名のうちのいずれかです: noroute, admin,
                           notneighbor, addr, noport 。そして探索を終了しま
                           す。

         reset             TCP パケットのみです。ルールにマッチしたパケットを
                           捨てて、 TCP reset (RST) notice メッセージを送ろう
                           とします。そして探索を終了します (まだ動作しません)
                           。

         count             ルールにマッチしたすべてのパケットに対するカウンタ
                           を更新します。探索は、次のルールへと継続します。

         skipto number     number よりも小さい番号のついたルールをスキップしま
                           す。探索は number 以上の番号のついたルールへと継続
                           します。

     カーネルを IP6FIREWALL_VERBOSE つきでコンパイルした場合、パケットが
     ``log'' キーワードつきのルールにマッチしたときにはコンソールにメッセージ
     が表示されます。カーネルを IP6FIREWALL_VERBOSE_LIMIT オプションつきでコン
         udp               UDP パケットだけがマッチします。

         ipv6-icmp         ICMPv6 パケットだけがマッチします。

         <number|name>     指定したプロトコルだけがマッチします (完全なリスト
                           は /etc/protocols を参照してください)。

     src および dst は次の通りです。

         <address/prefixlen> [ports]

     <address/prefixlen> は次のように指定できます:

         ipv6no            An ipv6number of the form fec0::1:2:3:4 という形式
                           の IPv6 ナンバ。

         ipv6no/prefixlen  fec0::1:2:3:4/112 のような形式のプレフィックス長を
                           もった IPv6 ナンバ。

     ``not'' 修飾子をアドレスの前につけることで、マッチの意味を反転させること
     ができます。これによって、他のすべてのアドレスが代わりにマッチするように
     なります。これは、ポート番号の選択には影響ありません。

     TCP および UDP プロトコルでは、オプションで ports が次のように指定できま
     す:

         {port|port-port}[,port[,...]]

     ( /etc/services より) サービス名を、数値によるポート番号の代わりに使用で
     きます。範囲は最初の値としてのみ指定でき、ポートリスト長は
     IP6_FW_MAX_PORTS ( /usr/src/sys/netinet/ip6_fw.h で指定) 個のポートまでに
     制限されています。

     0 ではないオフセットを持つ (すなわち、最初のフラグメントではない) フラグ
     メントパケットは、1 つ以上のポートが列挙されたルールには絶対にマッチしま
     せん。フラグメントパケットのマッチについての詳細は frag オプションを参照
     してください。

     ルールは、パケットが入力されるとき、および出力されるとき、あるいはその両
     方ともであるときに適用されます。 in キーワードは、入力パケットにのみルー
     ルがマッチしなくてはならないことを示すものです。 out キーワードは、出力パ
     ケットにのみルールがマッチしなくてはならないことを示すものです。

     あるインタフェースを通るパケットにマッチするためには、 via を使用して次の
     ようにインタフェースを指定してください。

         via ifX           パケットは、インタフェース ifX を通らなくてはなりま
                           せん。

         via if*           パケットは、インタフェース ifX を通らなくてはなりま
                           せん。ここで、X は任意のユニット番号です。

     recv インタフェースは、入力パケットあるいは出力パケットのどちらかでテスト
     されます。これに対して、 xmit インタフェースは、出力パケットでしかテスト
     されません。そのため、 xmit を使用する場合はいつでも out が必要です (そし
     て、 in は不正です)。 xmit あるいは recv と一緒に via を指定するのは不正
     です。

     パケットには、受信インタフェースあるいは送信インタフェースがないかもしれ
     ません。ローカルホストから送信されたパケットには受信インタフェースがあり
     ません。そして、ローカルホストへ向けて送信されたパケットには送信インタ
     フェースがありません。

     追加の options は次の通りです。

         frag              パケットがフラグメントであり、しかもデータグラムの
                           最初のフラグメントでなければマッチします。 frag
                           は、 tcpflags あるいは TCP/UDP ポートの指定と一緒に
                           は使うことができません。

         in                パケットが入ってこようとしている場合にマッチしま
                           す。

         out               パケットが出ていこうとしている場合にマッチします。

         ipv6options spec  IPv6 ヘッダに、 spec で指定されたコンマ区切りのオプ
                           ションリストの要素が含まれていればマッチします。サ
                           ポートしている IPv6 オプションは次の通りです。
                           hopopt (hop-by-hop オプションヘッダ)、 route (ルー
                           ティングヘッダ)、 frag (フラグメントヘッダ)、 esp (
                           暗号ペイロード)、 ah (認証ヘッダ)、 nonxt (次ヘッダ
                           なし)、そして opts (デスティネーションオプション
                           ヘッダ) です。特定のオプションがないことは、 ``!''
                           で表します (まだ動作していません) 。

         established       RST あるいは ACK ビットがセットされているパケットに
                           マッチします。

         setup             SYN ビットはセットされているが ACK ビットがセットさ
                           れていないパケットにマッチします。

         tcpflags spec     TCP ヘッダに、 spec で指定されたコンマ区切りのフラ
                           グリストの要素が含まれていればマッチします。サポー
                           トしている TCP フラグは以下の通りです。 fin, syn,
                           rst, psh, ack, そして urg です。特定のフラグがない
                           ことは ``!'' を使って表します。 tcpflags 指定を含ん
                           だルールは、 0 でないオフセットを持ったフラグメント
                           パケットには絶対にマッチしません。フラグメントパ
                           ケットへのマッチに関する詳細は frag オプションを参
                           照してください。

         icmptypes types   ICMPv6 のタイプが types リスト中にあればマッチしま
                           す。リストには、範囲と、個々のタイプをコンマで区
                           切ったものを、任意に組み合わせて指定できます

     ファイアウォールが常に破棄するパケットが 1 種類あります。それは、フラグメ
     ントオフセット 1 を持った IPv6 フラグメントです。これは正しいパケットです
     が、使用方法は 1 つだけです。それは、ファイアウォールの抜け道を探そうとす
     ることです。

     ネットワーク越しにログインしている場合は、 ip6fw の KLD バージョンをロー
     ドするのは、おそらくあなたが思っているほどには簡単ではないでしょう (サポ
     ートされていません ) 。次のようなコマンド行を推奨します。

                       kldload /modules/ip6fw_mod.o && \
                       ip6fw add 32000 allow all from any to any

     同様の状況で、同じ行で

                       ip6fw flush

     を行うことも良くないアイデアです。


パケット変換

     サポートされていません。


使用例

     このコマンドは、 hacker.evil.org から wolf.tambov.su の telnet ポートへの
     TCP パケットすべてを、このホストでフォワードしないようにします。

           ip6fw add deny tcp from hacker.evil.org to wolf.tambov.su 23

     次のコマンドは、hackers ネットワーク全体から自ホストへの接続を何であれ禁
     止します。

           ip6fw addf deny all from fec0::123:45:67:0/112 to my.host.org

     これは、カウント値の記録とタイムスタンプ情報を表示するためのリストコマン
     ドの良い使用例です。

           ip6fw -at l

     あるいは、タイムスタンプなしの、短い形式のものは

           ip6fw -a l
     です。


関連ファイル

     ip(4), ipfirewall(4), protocols(5), services(5), reboot(8), sysctl(8),
     syslogd(8)


バグ

     注意 !! 注意 !! 注意 !! 注意 !!

     このプログラムは、あなたのコンピュータをかなり使えない状態にしてしまう可
     能性があります。初めて使用する際には、コンピュータのコンソールで作業して
     ください。また、理解していないことは何も しないでください。

FreeBSD 4.4                     March 13, 2000                     FreeBSD 4.4

ABELNET VPSサービス