TCP/IP とデータ通信

DHCP/BOOTP の有効利用を制限するネットワークトポロジ

DHCP クライアントと BOOTP クライアントは最初、ローカル IP ネットワークについての情報を持っていません。したがって、自己の IP アドレスとして 0.0.0.0 (デフォルトのネットワークアドレス) を使用します。DHCP 要求または BOOTP 要求が、これらのクライアントから 255.255.255.255 IP アドレス (ブロードキャスト通信アドレス) へ送信され、ローカル IP ネットワークに接続されている全 IP デバイスが受信します。

DHCP サーバーと BOOTP サーバーは、以下の要素をベースにしてクライアントの IP ネットワークのアタッチメントを判定します。

  1. DHCP 要求または BOOTP 要求を受け取ったネットワークのハードウェアインタフェース

  2. 受け取った DHCP 要求または BOOTP 要求は、BOOTP 中継エージェントからのものであったかどうか

    BOOTP 中継エージェントは、DHCP クライアントまたは BOOTP クライアントと同じ IP ネットワークに接続されている、自己のネットワークのハードウェアインタフェースの IP アドレスを挿入します。この IP アドレスが欠落している場合は、クライアントが直接接続された IP ネットワーク上にある旨の信号がサーバーへ送信されます。この IP アドレスが存在する場合は、サーバーから離れたリモート IP ネットワークにクライアントが接続されていること、および BOOTP 中継エージェントの IP アドレスを使用してサーバーがクライアントへ応答を返信することを表しています。

  3. クライアントが接続されている IP ネットワークがサブネット化されているかどうか

    サーバーは、IP アドレスをキーとして使用して、netmasks テーブル (サブネットのマスク情報を格納しています) の内容を調べます。この場合に使用する IP アドレスは以下のうちのいずれかです。

    • クライアントが直接接続された IP ネットワーク上にある (パケットの中継アドレスフィールド内の 0.0.0.0 という IP アドレスによって示されます) 場合は、サーバーのネットワークのハードウェアインタフェースの IP アドレス

    • BOOTP 中継エージェントがクライアントの要求内に IP アドレスを指定していた場合は、その指定された IP アドレス

クライアントの IP ネットワークのアタッチメントを判定するこの手順が有効なのは、ネットワークのハードウェア媒体 (たとえば、イ−サネット) 上に存在する IP ネットワークが 1 つだけである場合のみです。複数のネットワークハードウェアインタフェースを使用するか、または複数の論理インタフェースを使用することによって、複数の IP ネットワークが同じネットワークハードウェア媒体を共有している IP ネットワーク環境では、DHCP は適切に動作しません。この場合には、DHCP クライアントの要求が全ネットワークハードウェアインタフェース上に表示され、「外観上は」そのクライアントがすべての IP ネットワークに同時に接続されているかのように見えます。DHCP サーバーは IP アドレスを動的に要求元のクライアントへ割り当てるため、そのクライアントへ割り当てるべき IP アドレスをサーバーが決定することはできません。それは、その時点でサーバーが保持している IP アドレスの妥当性検査を試行すると、DHCP クライアントは、割り当てられたネットワーク上だけではなく、すべての論理 IP ネットワーク上に存在するように見えるからです。

このようなネットワークトポロジは回避する必要があります。そのためには、より効率的なサブネット化を行い、可変長サブネットマスク (VLSM) を使用して IP ネットワーク間のハードウェア媒体のマップを一対一に保持するか、あるいは、ただ 1 つの論理 IP ネットワークがサービスの対象となるように DHCP または BOOTP のサービスを構成します。詳細は、netmasks(4) を参照してください。