[OpenBSD]

[前に戻る: リストとマクロ] [目次] [次に進む: パケットフィルタリング]

PF: テーブル


目次


はじめに

テーブルは、IPv4 および/または IPv6 アドレスのグループを保持するために使用されるものです。 テーブルに対する参照は、リストに比べて、 より少ないメモリと CPU 時間で、非常に高速に実行できます。このため、 テーブルは大規模なアドレスのグループを保持するのに理想的であり、 50,000 個のアドレスを保持するテーブルの参照時間は 50 個のアドレスを保持するものより わずかに余計にかかるだけです。テーブルは、以下のような方法で使用することができます。

テーブルは、 pf.conf の中に記述するか、または pfctl(8) を使用するかのいずれかで生成することができます。

設定

pf.conf の中で、テーブルは table ディレクティブを 使用して作成します。それぞれのテーブル中には、以下の属性を指定できます。

例:

table <goodguys> { 192.0.2.0/24 }
table <rfc1918> const { 192.168.0.0/16, 172.16.0.0/12, \
   10.0.0.0/8 }
table <spammers> persist

block in on fxp0 from { <rfc1918>, <spammers> } to any
pass  in on fxp0 from <goodguys> to any

アドレスは、以下のような否定 (あるいは "not") 修飾子を使用して 指定することができます。

table <goodguys> { 192.0.2.0/24, !192.0.2.5 }

この例では、goodguys テーブルは、192.0.2.5 を除く 192.0.2.0/24 ネットワークのすべてのアドレスにマッチするようになります。

テーブル名は常に < > で囲むということに注意してください。

テーブルは IP アドレスやネットワークのリストを含む テキストファイルに記述しておくこともできます。

table <spammers> persist file "/etc/spammers"

block in on fxp0 from <spammers> to any

この /etc/spammers ファイルは、IP アドレスのリストおよび/または CIDR ネットワークブロックを一行にひとつ含んでいます。 た、# から始まるすべての行はコメント行と解釈され、無視されます。

pfctl を使用した操作

テーブルは pfctl(8) を使用して、運用中に操作することができます。たとえば、 上記で作成した <spammers> テーブルにエントリを追加するには、以下のようにします。
# pfctl -t spammers -Tadd 218.70.0.0/16

このとき、<spammers> テーブルがまだ存在していない場合には、 これを生成します。テーブル中のアドレスのリストを取得するには以下のようにします。

# pfctl -t spammers -Tshow
それぞれのテーブルのエントリの統計情報を表示するため、-Tshow とともに、引数 -v を指定することができます。テーブルから アドレスを除去するには以下のようにします。
# pfctl -t spammers -Tdelete 218.70.0.0/16

pfctl を使用したテーブルの操作についてのより詳しい情報は pfctl(8) を参照してください。

アドレスの指定

IP アドレスを指定する以外にも、ホスト名を使用してホストの指定を 行うこともできます。ホスト名解決で IP アドレスに変換される際に、 その結果としてのすべての IPv4 および IPv6 アドレスがテーブルに 入ります。IP アドレスは、有効なインターフェイス名や self キーワードを指定してテーブルに入れることもできますが、この場合、 インターフェイスに割り当てられているすべてのアドレスがテーブルに追加されます。

アドレスマッチング

テーブルに対するアドレス参照では、最も狭い範囲でマッチするエントリが返されます。 これにより、以下のようなテーブルの生成が許されることになります。
table <goodguys> { 172.16.0.0/16, !172.16.1.0/24, 172.16.1.100 }

block in on dc0 all
pass  in on dc0 from <goodguys> to any

dc0 を通過して入ってくるすべてのパケットは、<goodguys> テーブルにマッチする送信元アドレスを持っています。

[前に戻る: リストとマクロ] [目次] [次に進む: パケットフィルタリング]


[back] www@openbsd.org
Originally [OpenBSD: tables.html,v 1.9 ]
$Translation: tables.html,v 1.11 2004/01/03 06:14:18 toshi Exp $
$OpenBSD: tables.html,v 1.10 2004/01/04 22:47:55 horacio Exp $