Part3では,Case1:貸し出し期限が切れたら,Case2:サーバーが複数あったら,Case3:ルーターが途中にあったら,Case4:サーバーがダウンしていたら---という,実際の現場で使ったときに起こる典型的な4つのケースを想定して,そのときにDHCPがどう動くのかを見ていこう。
Case1 貸し出し期限が切れたら
期限の半分になったらみずから期間延長を要求
基本編Step2でも少し触れたが,DHCPで割り当てられた設定情報にはリース(貸し出し)期限がついてくる。つまり,パソコンがもらったIPアドレスなどの情報は,いつかは返さなければならない。でも,サーバー・マシンなどは,ずっと電源を入れっぱなしにしていたりする。こうしたケースではDHCPを利用できないのだろうか。
何度でも延長できる
本当は,このような心配はいらない。DHCPでは,リース期限が切れるまでに,期限を延長するしくみがあるからだ。設定情報を割り当てられたパソコンは,リース期限の残り半分を切ると,自動的にDHCPサーバーにリース期限の延長を要求する(図1)。
延長要求といっても,特別なパケットをDHCPサーバーへ送るわけではない。基本編で見てきたやりとりをそのまま使う。具体的には,パソコンがDHCPリクエスト・パケットをDHCPサーバーに送る。これだけである。
この延長要求は,パソコンが起動している限り,何度でもできる。このため,サーバー・マシンのように電源を入れっぱなしにしているコンピュータでも,ずっと同じIPアドレスを使い続けることができる。
ただ,延長要求に対してDHCPサーバーから応答(DHCPアック)がないと,期限延長要求は失敗に終わる。この場合,パソコンはリース期限が切れるまで定期的に何度も延長要求を繰り返す。
こうして何度も延長要求を繰り返し,それでもなおDHCPサーバーから応答がないままリース期限が切れてしまったら,パソコンは使っていたIPアドレスなどの設定情報を無効にする。
なぜ延長要求だとわかるのか
通常のDHCPリクエスト・パケットなのに,なぜDHCPサーバーは,期限延長要求だと判断できるのだろうか。
実は,DHCPサーバーは最初にパソコンに設定情報を割り当てたとき,割り当てたIPアドレスなどの情報とパソコンのMACアドレスの対応関係を記録する。このため,DHCPサーバーがリクエスト・パケットを受信すると,すでに割り当て済みのパソコンからのリクエストだとがわかり,期限延長要求だと判断する。
ちなみに,ここでのDHCPリクエストはユニキャストになる。パソコンが最初に設定情報をもらったときに,DHCPサーバーのIPアドレスを覚えているからだ。RFCでは,リース期限の半分が過ぎた時点でDHCPサーバーへユニキャストで延長要求を送り,リース期限の87.5%を過ぎたらブロードキャストにすることを推奨している。
Case2 サーバーが複数あったら
パソコンからのメッセージはどのサーバーにも届くから大丈夫
DHCPサーバーがダウンしたら,設定情報がもらえないので,パソコンはLANにつながらなくなる。そこで,DHCPでは複数のDHCPサーバーを同じネットワークにおくことも想定している。
サーバー1台のときとまったく同じ
基本編Step1で見てきたDHCPのやりとりに沿って,2台のDHCPサーバーがあったらどうなるかを見てみよう。
パソコンが最初に出すDHCPディスカバーはブロードキャストだから,2台のDHCPサーバーのどちらにも届く(図2(1))。すると,どちらのDHCPサーバーも,パソコンにオファー・パケットを送ってIPアドレスなどを提案する(2)。
これに対して,パソコンは採用する情報を一つだけ選ぶ。どのように選ぶかは,OSの種類などによって違うが,Windowsの場合は先に受信した提案を優先する。そして,本申請にあたるDHCPリクエスト・パケットをブロードキャストで送信する(3)。ここもブロードキャストなので,2台のDHCPサーバーのどちらにも届く。
このリクエスト・パケットには,パソコンが選んだDHCPサーバーのIPアドレスと,そのDHCPサーバーに提案されたIPアドレスが書き込まれている。だから,DHCPサーバーは自分の提案が採用されたかどうかがわかる。
したがって,このリクエスト・パケットを受け取ったDHCPサーバーのうち,自分が提案した情報が採用された方は,DHCPアック・パケットを出して,提案した情報を確定させる。
一方,採用されなかったDHCPサーバーは,仮に確保していたIPアドレスなどの情報をほかに割り当てられるようにする。
つまり,パソコンからのパケットはブロードキャストなので,どのDHCPサーバーも受信できるため,DHCPサーバーが複数あってもやりとり自体は1台のときと同じで済む。