DHCPリースとは、ダイナミック・ホスト・コンフィギュレーション・プロトコル(DHCP)サーバーがクライアントに対してIPアドレスおよび関連設定を付与する、時間制限付きのバインディングであり、リースが期限切れになったり解放されたりすると、サーバーはアドレスを回収して再利用できるようになります。 リース処理は、「ディスカバー(Discover)」「オファー(Offer)」「リクエスト(Request)」「アックノレッジ(Acknowledge)」という4段階の交換手順に従い、RFC 2131で定義されているように、クライアントはリース時間の50%(T1)で更新を行い、更新に失敗した場合は87.5%(T2)で再バインディングを行います。 リース期間は、ネットワーク運用、ネットワーク効率、およびセキュリティに大きな影響を与えます。リース期間が長いと、更新トラフィックが削減され、障害時の回復力が向上しますが、一時的なクライアントが存在するネットワークではアドレスプールが枯渇する可能性があります。一方、リース期間が短いとアドレスは迅速に解放されますが、サーバーの負荷が増加し、障害時の復旧時間が短くなります。
DHCPリースの仕組み
リースは、クライアントがDHCP交換を完了した時点で開始され、サーバーが指定した期間続きます。その後、クライアントはタイマーを監視し、アドレスを維持するか、あるいは解放するかを判断します。
- ディスカバリとオファー:クライアントがサーバーへのリクエストをブロードキャストすると、サーバーは提供可能なアドレスと提案するリース期間を返信します。
- 要求と確認応答:クライアントは提供されたアドレスを要求し、サーバーは確認応答を送信してリースを開始するとともに、バインディングを記録します。
- T1での更新:デフォルトでは、リース時間の50パーセント(タイマーT1)に達した時点で、クライアントは元のサーバーにリースの延長を要求します。
- T2での再バインディング:更新要求に対して応答がない場合、リース時間の87.5%が経過した時点(タイマーT2)で、クライアントは任意のサーバーに対して要求をブロードキャストします。
- 有効期限またはリースの解放:サーバーがリースを延長しない場合、クライアントはそのアドレスの使用を停止しなければなりません。また、クライアントがリースを早期に解放することも可能で、その場合はアドレスが直ちに解放されます。
サーバーは、クライアント識別子、アドレス、有効期限など、各リース情報をリースデータベース(リーステーブルとも呼ばれる)に格納します。リース期間は、RFC 2131 に記載されているように、通常はスコープごとに管理者が設定します。
DHCPリースに関する一般的な問題
ゲストWi-Fiで数日間のリース期間が設定されたスコープには、数時間前に接続を解除したデバイスからのバインディングが蓄積されます。その結果、新しいクライアントはアドレスを取得できず、古いリースが期限切れになるまで、自己割り当てされたリンクローカルアドレスを使用することになります。
多数のクライアントが同時にリースを取得した場合、それらの更新タイマーが一斉に作動します。サーバーの再起動や長時間の停止後、これによりリクエストが集中し、更新が一時的に失敗することがあります。
サーバーがリースデータベースを失ったり、フェイルオーバーペアの設定に誤りがあったりすると、クライアントがまだ保持しているアドレスが割り当てられる可能性があります。その結果、アドレスの競合が発生し、影響を受けたホストでは接続が断続的になったり、重複アドレスの警告が表示されたりします。
リース期間が数分程度の場合、サーバー障害発生時にクライアントが動作を継続できる時間はほとんどありません。期限切れ前に更新できないため、サーバーがダウンするとすぐにデバイスは接続を失ってしまいます。
ダイナミックDNSの更新がリース期間に紐付けられている場合、期限切れや解放されたリースが適切にクリーンアップされないまま残っていると、現在他のデバイスが使用しているアドレスを指すレコードが残ってしまいます。その結果、名前解決で誤ったホストが返されてしまいます。