DHCPリレーにおけるパケットフロー

 ここでは、DHCPリレーが行われる際の、DHCPクライアントとDHCPサーバ間のやり取りにおけるパケットのフロー流れを図を使って、説明します。

DHCPリレーにおけるDHCPクライアントとサーバ間のやり取りは、下図のように行われます。

 クライアントからDHCPサーバへはUDPの67番が、DHCPサーバからクライアントへは68番が利用されます。

DHCPDISCOVERのパケットフロー

DHCPOFFERのパケットフロー

DHCPREQUESTのパケットフロー

DHCPACKのパケットフロー

DHCP(セグメントの識別)

 ルータのDHCPリレー機能を使用すれば、ルータを超えた先のDHCPサーバからIPアドレスの払い出しを受けることができます。ここでは、なぜ、自分の所属するネットワークのIPアドレスをDHCPクライアントが受け取ることができるのかを説明して行きます。

 DHCPリレー機能を利用すれば、下図のようなネットワークを構築することができます。DHCPサーバを集約して、1台のDHCPサーバーでIPアドレスの払い出しを管理できるようになります。

DHCPサーバには、下記のようにセグメント(ネットワーク)ごとにスコープを設定することになります。

 1F・・・10.1.0.0/16
 2F・・・10.2.0.0/16
 3F・・・10.3.0.0/16
 4F・・・10.4.0.0/16
 5F・・・10.5.0.0/16

 それでは、なぜ、DHCPサーバは、DHCPクライアントが所属するセグメント(ネットワーク)を識別して、セグメントごとに異なる設定情報を割り当てているのでしょうか?

 それは、DHCPメッセージ内の「GIADDR」のIPアドレスによって、どのサブネットのIPアドレスに割り当てるかを識別しIPアドレスを割り当てているからです。「GIADDR」に値が無い場合は、同一セグメントと認識しています。

DHCPのメッセージフォーマット
情報名説明
CIADDRクライアントIPアドレス、クライアントがBOUND、 RENEW、REBINDING状態の場合に用いられる。
YIADDRDHCPサーバが割り当てるクライアントのIPアドレス(自分のIPアドレス)
SIADDRDHCPサーバのIPアドレス
GIADDRDHCPリレーエージェントのIPアドレス。DHCPサーバはGIADDRを見てクライアントの所属するサブネットを識別する。
CHADDRクライアントのMACアドレス
DHCPのメッセージフォーマット

 DHCPリレーが設定されたルータは、DHCPパケットをDHCPサーバに転送する前に、パケットのGIADDRフィールドに、そのセグメント用のルータのIPアドレス(DHCPパケットの着信インターフェイスのIPアドレス)を格納します。

 DHCPクライアントが、IPアドレスを取得する際に、そのIPアドレスがクライアントのためのゲートウェイアドレスとなります。