EN JA
IPPOOL(5)
IPPOOL(5) FreeBSD File Formats Manual IPPOOL(5)

名称

ippool, ippool.conf - IP Pool ファイル形式

解説

ファイル ippool.conf は、ipnat(8) と ipf(8) での使用に対してアドレスプールを設定するために、ippool(8) で使用されます。

ippool.conf によって設定することができる 4 つの異なるタイプのアドレスプールがあります。様々なタイプは、それらがどのように使用されるかの簡潔な説明が下に提示されています:

dstlist

宛先リスト - は、ipnat.conf(5) のリダイレクト (rdr) 規則、またはポリシの基本となる経路のために ipf.conf(5) の宛先としてのいずれかで使用することができる、オプションのネットワークインタフェース名がある IP アドレスの収集である、政策に基づいた

group-map

グループマップ - は、それらで処理を開始する、アドレスまたはネットワーク規則グループ番号のリストを提供することによって、ipf.conf(5) の関数を呼び出す srcgrpmap と dstgrpmap をサポートしています。

hash

ハッシュテーブル - は、1 つの正確な一致だけがあると期待されるとき、アドレスまたはネットワークを非常に効率的な検索を実行するための手段を提供しています。これらは、より静的なアドレスのセットとともに最も使用されるので、それらを最適なサイズとすることができるます。

pool

アドレスプール - は、ほとんどの状況で都合よく実行することができる、ハッシュテーブルの代わりです。さらに、アドレスプールは、階層的な一致を考慮に入れるので、一致するようにサブネットを定義することができますが、その後に、それから指定されたアドレスを除外します。

発展した設定

長期にわたって、ippool.conf(5) によって使用される設定の構文は、発展しました。例えば、元々、使用される構文は、特別の値が何のために使用されていたかに関してより冗長でした:


table role = ipf type = tree number = 100
{ 1.1.1.1/32; !2.2.0.0/16; 2.2.2.0/24; ef00::5/128; };

これは、やや長ったらしくなっています。また、設定の構文の発展は、名前がある数の使用を名前に置き換えましたが、数は、次のように、まだ使用することができます:


pool ipf/tree (name "100";)
{ 1.1.1.1/32; !2.2.0.0/16; 2.2.2.0/24; ef00::5/128; };

上記の例の両方とも、ipf.conf(5) で使用するためにカーネルの同じ設定を生成します。

ippool.conf(5) で使用されるより新しいオプションは、新しい設定の構文でのみ提供され、"ippool -l"を使用するすべての出力は、さらに新しい設定の構文で提供されます。

IPFilter デバイスとプール

異なる管理スタイルに提供するために、ipool.conf(5) によって、利用者は、 IPFilter の特有の役割にプールを結び付けることができます。認識された役割名は、次の通りです:

ipf

役割 "ipf"のために定義されたプールは、auth 規則を除いて ipf.conf(5) で見つかるすべての規則で使用するために利用可能です。

nat

役割 "nat"のために定義されたプールは、ipnat.conf(5) で見つかるすべての規則で使用するために利用可能です。

auth

役割 "auth"のために定義されたプールは、ipf.conf(5) で見つかる "auth"規則で使用するためのみ利用可能です。

all

"all"役割のために定義されるプールは、ipnat.conf(5) または ipf.conf(5) のファイアウォール規則の NAT 規則である、すべてのタイプの規則に利用可能です。

アドレスプール

パケットの発信元または宛先のアドレスとの一致のために ipf.conf(5) と ipnat.conf(5) でアドレスプールを使用することができます。名前または数値のいずれかによって、それらを参照することができ、一致するアドレスパターンの任意の数を保持することができます。

アドレスプールは、"ツリータイプ"であると見なされます。より古い設定のスタイルでは、ippool.conf(5) に "type=tree"があることが必要でした。新しいスタイルの設定では、プールが設定されている IPFilter デバイスに従います。現在、省略されているなら、それは、デフォルトです。

便宜上、IPv4 と IPv6 アドレスの両方を同じアドレスプールに格納することができます。パケットのいずれかのタイプがアドレスファミリであるプールでいつもエントリと一致することだけができると言わないほうがよいでしょう。

アドレスプールは、最良の一致のために設定されたアドレスのリストを検索します。 "最良の一致"は、マスク中に設定されたビットの最も大きな数がある一致であると見なされます。したがって、2.2.0.0/16 と 2.2.2.0/24 の両方が、アドレスプールに存在するなら、アドレス 2.2.2.1 は、2.2.2.0/24 に一致し、2.2.1.1 は、2.2.0.0/16 と一致します。この理由は、否定の一致の使用を通じて追加される例外を許可することです。次の例において、プールは、このプールに一致するように見なされる、 2.2.2.0/24 の一致するものを除いて、2.2.0.0/16 と一致する、すべてのパケットを意味して、"2.2.0.0/16"と "!2.2.2.0/24"を含んでいます。

table role = ipf type = tree number = 100
{ 1.1.1.1/32; 2.2.0.0/16; !2.2.2.0/24; ef00::5/128; };

明瞭さの目的のために、アドレスプールの内側のアドレスの大きな数を管理の援助のために、アドレスをロードする位置を指定することが可能です。これを簡単にするために、実際の IP アドレスを指定した、"file://" URL を使用します。


pool ipf/tree (name rfc1918;) { file:///etc/ipf/rfc1918; };

ファイルの内容は、次のように見えるかもしれません:


# RFC 1918 ネットワーク
10.0.0.0/8
!127.0.0.0/8
172.16.0.0/12
192.168.0.0/24

この例で、行 "!127.0.0.0/8"の包含 (inclusion) は、また、否定の一致がこのファイルでサポートされることを表示する例として、正確でない役割のみを厳密に話すことです。

ippool(8) がファイルからの入力と認識する別の形式は、whois サーバからのものです。次の例において、ネットワークが名前 "microsoft"に関係しているかに関する情報のための WHOIS サーバへの問い合わせからの出力は、 "ms-networks"と名前が付けられたファイルに保存されます。 whois サーバからの出力を修正する必要はありませんので、 whois コマンドまたは TCP 接続を越えてそれから直接データをダンプするかのいずれかを使用は、入力としてファイルを完全に動作します。


pool ipf/tree (name microsoft;) { whois file "/etc/ipf/ms-networks"; };

また、その後、そのファイルに定義されたネットワークへの/からのすべてのパケットをブロックし、次ような規則が、使用されます:


block in from pool/microsoft to any

whois サーバによって返された出力に制限があるので、それらの出力が利用者のゴールに対して 100% 完全でないかもしれないことを承知することに注意してください。

宛先リスト

宛先リストは、主として NAT リダイレクト規則 (rdr) で使用するために提供されます。それらの目的は、ipnat.conf(5) の "ラウンドロビン"規則を示す単純なラウンドロビン技術より次にトラフィックを送信するホストを選択するより洗練された方法を許可することです。

リダイレクトのリストとして使用するホストのリストを構築するとき、明示的に使用される各ホストをリストすることが必要です。範囲またはサブネットとしてホストの収集を表現することは、サポートされていません。また、各アドレスで、ネットワークインタフェース名を指定することは可能です。ネットワークインタフェース名は、宛先リストを使用するとき、NAT によって無視されます。ネットワークインタフェース名は、ボリシベースの経路制御でのみ現在使用されています (ipf.conf(5) の "to"/"dup-to"の使用)。

このファイルで表現することができる他の指令と異なり、宛先リストは、新しい設定の構文を使用して書き込まれなければなりません。各宛先リストは、それに関連する名前と次の中継点の選択ポリシがなければなりません。いくつかのポリシには、さらにオプションがあります。現在利用可能な選択ポリシは、次の通りです:

round-robin

宛先リストで 1 つずつ設定されたホストのリストを通したステップ。

random

次の中継点は、利用可能なリストからランダムな選択によって選ばれます。

src-hash

ハッシュは、パケット (アドレスとポート番号) の発信元のアドレスの構成要素で作られ、これは、使用される次の中継点のアドレスを選択するために使用されます。

dst-hash

ハッシュは、パケット (アドレスとポート番号) の宛先のアドレスの構成要素で作られ、これは、使用される次の中継点のアドレスを選択するために使用されます。

hash

ハッシュは、パケット (アドレスとポート番号) のすべてのアドレスの構成要素で作られ、これは、使用される次の中継点のアドレスを選択するために使用されます。

weighted

宛先の選択のために重み付けられたポリシを選ぶことは、どのタイプの重み付けられた選択が使用されかに関してさらなる明確化を必要とします。重み付けられたポリシのサブオプションは、次の通りです:

connection

接続の最小の数を受信されたホストは、次の中継点となるために選択されます。すべてのホストに同じ接続カウントがあるとき、使用された最後のものは、選択された次のアドレスになります。

最初の例は、ラウンドロビンの選択ポリシで使用される 4 つの宛先をここに表示します。


pool nat/dstlist (name servers; policy round-robin;)
{ 1.1.1.2; 1.1.1.4; 1.1.1.5; 1.1.1.9; };

次の例において、宛先は、接続の最小の数があるいずれかによって選ばれます。各アドレスと "all/dstlist"を記述することでインタフェース名を置くことによって、宛先リストは、ipnat.conf(5) と ipf.conf(5) の両方とともに使用することができます。


pool all/dstlist (name servers; policy weighted connection;)
{ bge0:1.1.1.2; bge0:1.1.1.4; bge1:1.1.1.5; bge1:1.1.1.9; };

グループマップ

グループマップは、より多くのサブネットとそれらのサブネットのための規則のグループがあるところで、パケットのより効率的な処理を可能とするために提供されています。グループマップは、"srcgrpmap"と "dstgrpmap"関数を使用する ipf.conf(5) の "call"規則で使用されます。

グループマップ宣言は、グループが適用されるすべての一致するアドレスのためのデフォルトグループであることを言及しなければなりません。次に、グループのためのアドレスとネットワークの内部のリスト、各々のものは、オプションで、それに関連するグループ数があります。最初の 2 つのエントリがグループ 2020 にマップするが、5.0.0.0/8 が、グループ 2040 を処理する規則を送信する、次のような単純な例。


group-map out role = ipf number = 2010 group = 2020
{ 2.2.2.2/32; 4.4.0.0/16; 5.0.0.0/8, group = 2040; };

12 のサブネットのそれぞれ 1 つは、異なるグループ数にマップされるところで、グループマップの実際の目的の概略の例は、次の通りです。これは、サブネットと一致し、先頭の文で分岐する ipf.conf(5) の 12 の規則のリストを書き込むのではなく、各サブネットがそれ自体のポリシがあるという理由であるかも知れず、同じ結果に達成する、このグループのマップとともに単一の規則を使用することができます。


group-map ( name "2010"; in; )
{ 192.168.1.0/24, group = 10010; 192.168.2.0/24, group = 10020;
192.168.3.0/24, group = 10030; 192.168.4.0/24, group = 10040;
192.168.5.0/24, group = 10050; 192.168.6.0/24, group = 10060;
192.168.7.0/24, group = 10070; 192.168.8.0/24, group = 10080;
192.168.9.0/24, group = 10090; 192.168.10.0/24, group = 10100;
192.168.11.0/24, group = 10110; 192.168.12.0/24, group = 10120;
};

グループマップにある制限は、利用者の ipf.conf(5) ファイルで、両方ではなく開始するグループにパケットをマップするために発信元アドレスまたは宛先アドレスのみ使用することができることです。

ハッシュテーブル

ハッシュテーブルは、アドレスプールに操作上似ています。規則の長いリストを書き込む必要を保存して、一致するアドレスの収集のための格納として使用されます。アドレスプールと同様に、検索することは、最良の一致を見つけることを試み - 最大の隣接するネットマスクがあるアドレス指定です。

ハッシュテーブルは、静的またはアドレスリストのサイズを変更するいずれかで動作することができるアドレスプールと対照するものである、アドレスのリスト、サブネットとネットワークが比較的静的なところで、最も使用されます。

さらなる作業は、まだ、IPFilter の正確なサイズがある必要があり、検索して最適化するハッシュテーブルを調整します。目標は、O(logn) である、アドレスプールと対照的に、肯定または否定の一致のいずれかのために O(1) に近く達成する小さなものか中間のサイズのテーブルのために許可することです。

次の 2 つの例は、古い設定形式 (最初) と新しいもの (2 番目) を使用して、カーネルの同じテーブルを構築します。


table role=all type=hash name=servers size=5
{ 1.1.1.2/32; 1.1.1.3/32; 11.23.44.66/32; };


pool all/hash (name servers; size 5;)
{ 1.1.1.2; 1.1.1.3; 11.23.44.66; };

関連ファイル

/dev/iplookup
 
/etc/ippool.conf
 
/etc/hosts

関連項目

ippool(8), hosts(5), ipf(5), ipf(8), ipnat(8)