DHCP(Gratuitous ARP)

ここでは、Gratuitous ARPとDHCPとの関係を説明して行きます。

 Gratuitous ARPはARPパケットの一種で、主にホストIPアドレスが割り当てられた際に、他のホストへ既に同じIPアドレスが割り当てられていないかどうかを確認する為に使用されます。

 通常のARPパケットと異なり、Target Protocol Addressフィールドには、自分に割り当てられたもの、もしくは割り当てられようとしているものが設定されます。

つまり、Gratuitous ARPとは、自身のIPアドレスをリクエストするためのARPパケットなのです。

 本来のARPは、IPアドレスに対応するMACアドレスを解決するために使用します。自分のIPアドレスをリクエストすることに何の意味があるのでしょうか?

Gratuitousとは、「無料の;好意からの;無償の;必要のない」という意味があります。

本当に無意味なんでしょうか?

1つ目の用途として、設定ミス等によるIPアドレスの重複の検出に使用されます。

 本来であれば、自分自身のIPアドレスに対するARPリクエストを送信したところで、他の端末から返事なんてあるはずがありません。

ところが、返事があった場合はどうでしょうか?

既にそのIPアドレスが他の端末で使用されていることが分かります。

 この仕組みで、同一ネットワーク内において、IPアドレスが重複しているかどうかをチェックすることができるようになっているのです。

 Windows 2000 ベースのコンピュータでは、起動すると、ネットワーク内で、IPアドレスの重複が起こらないように、そのコンピュータのIPアドレスを含んだパケットがブロードキャストされるようになっています。

2つ目の用途として、VRRPでもGratuitous ARPが使用されます。

 これは、IPアドレスの重複を確認するのではなく、同一セグメント上のネットワーク機器上のARPキャッシュを更新するために行われています。

そうすることで、IPアドレスとMACアドレスの対応関係の更新を強制的に行います。

Gratuitous ARPの説明が長くなりましたが、本題のGratuitous ARPとDHCPとの関係の話に戻します。

 DHCPクライアントは、DHCPサーバからIPアドレスなどの設定情報を受け取った後、Gratuitous ARPを送信して、IPアドレスが重複していないかどうかの確認を行います。

 これは、手動による設定や他のDHCPサーバから、同じIPアドレスが既に割り当てられており、同一サブネット内でIPアドレスが重複している可能性があるからです。