アットマーク・アイティ @IT@IT自分戦略研究所@IT情報マネジメント 
 @IT > Master of IP Network > DHCPの設定は正しいか?
 
連載:ネットワーク・コマンドでトラブル解決(6)

DHCP設定は正しいか?
〜DHCP設定の確認と利用〜

加地眞也
2002/2/26


関連するコマンド
ipconfig

DHCPと動的自動設定

 DHCP(Dynamic Host Configuration Protocol)は名前の示すとおり、動的/自動的にホストの設定を行うためのプロトコルだ。主にクライアントのブート時など、自身のIPアドレスを自動設定するために、DHCPサーバから取得する際に用いられる。

 DHCPはもともとBOOTP(BOOTstrap Protocol:RFC951が基になっており、メッセージ構造などはほぼそのままだ。BOOTPでは単にクライアントに使用させたいIPアドレスを通知するだけだったのに対し、DHCPでは拡張部分を利用して、割り当てられたIPアドレスに利用可能期間(リース期間)を設けたり、クライアントに使用させたいDNSサーバやデフォルト・ゲートウェイのIPアドレスといった設定値も自動設定できるよう、汎用的に定義し直している。これらは、RFC2131RFC2132で規定されている。

図1 DHCPの動作概要(図版をクリックすると拡大表示します

 DHCPの最も端的なメリットは、クライアント機のネットワーク設定の自動化だ。DHCPサーバで値さえ設定しておけば、後はクライアント自身が必要に応じて自動的に設定値を読み取り設定してくれる。いちいちすべてのクライアントに対して、個々にIPアドレスを割り振ったり管理する必要がなくなる。

 Windowsでは、コントロールパネルの「ネットワークとダイヤルアップ接続」プロパティなどの「TCP/IP」設定において、手動でIPアドレスを取得するのではなく、「自動的に取得する」を選択しておくだけだ。または、ipconfigコマンドによって手動で実行することもできる。

 管理者は、DHCPサーバにおいて、まず割り当てるIPアドレスの範囲を決定できる。これがIPアドレスのプールだ。この範囲で、DHCPサーバは個々のクライアントにユニークとなるようにIPアドレスを順に割り当ててくれる。この範囲外の割り当ては拒否されるので、限りあるIPアドレスを、実際に使用する分だけ効率的に活用できる。通常、どのホストにどのアドレスが割り当てられるかはサーバが自動的に決定するが、特定のMACアドレスのクライアントに対して特定のIPアドレスを割り当てるよう設定できる場合もある。

 また、リース期間を設けることで、定期的にIPアドレスを再割り当てできる。このリース期間を過ぎると、DHCPクライアントは現在割り当てられているIPアドレスを破棄し、再びDHCPサーバに再割り当てを要求する。また、クライアントはリース期間前に利用を終了し、割り当てられたIPアドレスを返却(リリース)することもできる。これらの機能により、常に必要最小限度のIPアドレスでの運用が可能になる。

 一般には、このようにIPアドレスの自動「貸し出し」機能としてとらえられるDHCPだが、IPアドレスの取得機能自体はBOOTPですでに対応している機能にすぎない。IPアドレスに限らず、実際のネットワーク設定では、さらにサブネット・マスク・アドレスやデフォルト・ゲートウェイ・アドレス、DNSサーバ・アドレスなどの設定をする必要があるが、それらさまざまな「オプション」の自動設定にも対応しているのが、DHCPの大きな特徴となっている。

DHCPメッセージ

 以下は、DHCPで用いられる「メッセージ」のデータ構造図だ。クライアント〜サーバ間では、こうしたメッセージのやりとりにより、IPアドレスなどのデータがクライアントにより取得される。

図2 DHCPメッセージのフォーマット(図版をクリックすると拡大表示します

 DHCPメッセージはUDPによって送信される。ポート番号は、サーバ側は67、クライアント側では68が使用されることになっている。

 BOOTPとメッセージ構造は同じだ。クライアントIPアドレスは最終的にクライアントへ割り当てられたIPアドレス、サーバIPアドレスは割り当てたDHCPサーバのアドレスで、BOOTPと共通している。ただし、DHCPではオプション部分にタグ番号で示されるさまざまな種類のデータを設定して、より詳細なオプション・データを通知できる。

タグ値
(10進)
タグ名
サイズ
(オクテット)
意味
1
Subnet Mask
4
サブネット・マスク・アドレス
3
Router
可変
デフォルト・ゲートウェイ・アドレス
6
Domain Server
可変
DNSサーバ・アドレス
12
Hostname
可変
クライアントのホスト名
15
Domain Name
可変
DNSドメイン名
50
Address Request
4
クライアントがリクエストするIPアドレス
51
Address Time
4
IPアドレス・リース期間
53
DHCP Msg Type
1
DHCPメッセージ・タイプ
54
DHCP Server Id
4
DHCPサーバ・アドレス
56
DHCP Message
可変
DHCPエラーメッセージ
58
Renewal Time
4
クライアントがアドレスを取得してからRenewal(リースの再延長要求)するまでの期間(秒)
59
Rebinding Time
4
クライアントがアドレスを取得してからRebindingするまでの期間(秒)
表1 DHCPオプションの一覧(一部抜粋。こちらをクリックすると表全体を表示します)

 実際のDHCPメッセージでのメインの情報となるのがオプション部分だ。これらのオプション・データは、オプション部分に複数設定される「レコード」データだと思えばよい。

  タグ「53」のデータは、「DHCPメッセージ・タイプ」と呼ばれる。DHCPにおけるクライアントからサーバへの要求やデータの通知など、DHCPメッセージとしての主要な意味を伝えるのに使用される。次のような種類が定義されている。

メッセージ名
意味
1
DHCPDISCOVER クライアントがサーバを「発見」するためのメッセージ
2
DHCPOFFER サーバからクライアントへの設定値「候補」を通知するメッセージ
3
DHCPREQUEST クライアントが決定したサーバへの取得依頼メッセージ
4
DHCPDECLINE クライアントからサーバへの拒否(エラー)メッセージ
5
DHCPACK サーバからクライアントへの取得正常終了メッセージ
6
DHCPNAK サーバからクライアントへの取得拒否(エラー)メッセージ
7
DHCPRELEASE クライアントからサーバへのリリース要求メッセージ
8
DHCPINFORM IPアドレス取得は行わず、オプション取得のみ行う場合にクライアントから送られるメッセージ
9
DHCPFORCERENEW サーバからクライアントへの再構成要求。サーバから能動的に再設定を指示できる。RFC3203で定義されている。ただし対応するサーバ製品はまだないようだ
表2 DHCPメッセージ種類

 サブネット・マスク・アドレス、デフォルト・ゲートウェイ・アドレスなどの設定値はオプションで示される。大変数多く定義されているが、すべてのDHCPクライアントが、これら設定値を完全に解釈して設定できるとは限らない。例えばWindowsのDHCPクライアントでは、サブネット・マスク・アドレス、デフォルト・ゲートウェイ・アドレス、DNSサーバ名、DNSドメイン名のほか、WINSサーバ・アドレス、ノード・タイプなどに限られる。また、これらRFCなどで定義された標準値以外にも、ベンダなどが独自に定義できる「クラス」も表現可能だ。

 なお、どのようなオプションやメッセージ種類が定義されているかは、RFC2132またはIANAのサイトにある「DHCP and BOOTP Parameters」で確認することができる。

DHCPの処理フロー

●リース時

図3 リース時の動作。DHCPサーバがDISCOVERメッセージを受信すると、自身で割り当てられるIPアドレスやオプションをOFFERメッセージで返答する。DHCPサーバがクライアントからREQUESTメッセージを受け取ると、要求されたIPアドレスに問題がなければ、プールされているアドレスから貸し出す(図版をクリックすると拡大表示します

 クライアントがサーバに対してIPアドレスなどの取得を行いたい場合には、まずDHCPDISCOVERメッセージをサブネット全体に対して送出する。つまりブロードキャストだ。イーサネット・フレームの送信先MACアドレスは「FF:FF:FF:FF:FF:FF」、IPパケットの送信先IPアドレスは「255.255.255.255」(サブネット・マスクが「255.255.255.0」の場合)となっている。つまり、クライアントはあらかじめどのホストがDHCPサーバなのかさえも知っている必要がない。そのため、ネットワーク全体に対して問い合わせするわけだ。これは、最大限クライアントでの設定変更を省くために有効だ。クライアントも、まだ自身のIPアドレスを持っていないため、送信元IPアドレスは「0.0.0.0」としている。

 DHCPサーバがDHCPDISCOVERメッセージを発見すると、次にDHCPOFFERメッセージを返答する。これは、候補とするIPアドレスをクライアントへ通知するメッセージだ。また、DHCPサーバが自身であることを通知するメッセージでもある。このIPアドレスで問題ないとクライアントが判断した場合には、正式な取得要求であるDHCPREQUESTメッセージが送信される。これを受け、サーバはDHCPACKメッセージによってIPアドレスやそのほかオプションを通知、クライアントで設定が行われることになる。

 なお、DHCPOFFERメッセージによって受信したIPアドレスが、ほかのホストによってすでに使用されており、それをクライアントが発見した場合などには、DHCPDECLINEメッセージがサーバへ送られ、再度DHCPDISCOVERが行われる。またDHCPREQUESTメッセージ受信後、何らかの問題でそのIPアドレスをリースできないとサーバが判断した場合には(すでにリースされてしまった場合など)、DHCPACKメッセージではなく、DHCPNAKメッセージがクライアントへ通知され、やはり再度DHCPDISCOVERからやり直される。

 これらの通信はすべて、ブロードキャストでのみ実行されることに注意しよう。つまり、実際には複数のDHCPサーバがサブネット内に設置されている可能性もある。その場合には、複数のDHCPサーバからDHCPOFFERメッセージが返信されるかもしれない。クライアントはその中から特定のサーバを選択してDHCPREQUESTを行うが、ほかのサーバがすべてそうした通信も把握できるようにするために、通信はすべてブロードキャストでなければならないのだ。また、実際に割り当てられるIPアドレスはサーバの決定次第だが、以前に使用していたIPアドレスがある場合は、DHCPDISCOVERメッセージでそれを要求する場合もある(Rebindの動作)。

●リース延長

図4 リース延長時の動作(図版をクリックすると拡大表示します

 DHCPACKメッセージで通知されるリース期間として、実際のリース期間のほか、Renewing期間、Rebinding期間も通知されることがある。Renewing期間を過ぎると、同じDHCPサーバへリースの延長(Renew)を求めなければならない。またRebinding期間が過ぎると、どのサーバでもいいのでDHCPDISCOVERメッセージで再度IPアドレスの再取得(Rebind)を行わなければならない。リース期間はIPアドレスを使用できる最大期間で、この期間を過ぎると、サーバ側で現在のIPアドレスがほかのクライアントへ再割り当てされるかもしれないので、クライアントがそのIPアドレスを利用し続けてはならない。一般に、次の順番で期間が長くなる。

Renewing期間 < Rebinding期間 < リース期間

 リース延長要求は特定のDHCPサーバに対して行われるため、ブロードキャストではなくユニキャストで行われる。延長要求なので、現在使用しているIPアドレスが必ず指定されるが、それ以外はリース時と同様の動作だ。これは、Windowsのipconfigコマンドなど、ユーザーが手動でRenewingを行うことも可能だ。

●リリース

図5 リリース時の動作。DHCPサーバは、リリースされたIPアドレスを再びプールして再利用する(図版をクリックすると拡大表示します

 DHCPクライアントからIPアドレスのリリース(返却/解放)が行われると、サーバはリリースされたIPアドレスを再びプールして、ほかのクライアントからの要求に再利用できるようになる。リリースでは、単にクライアントからサーバへ通知すれば処理は終了だ。

●追加設定の問い合わせ
 DHCPINFORMメッセージはIPアドレスの割り当ては行わず、使用するオプションのみを問い合わせるメッセージだ。受け取ったサーバはDHCPACKメッセージによってオプションのみを通知する。


DHCPを使用する際のヒント

●1つのサブネットには原則1つのDHCPサーバ
 DHCPDISCOVERメッセージの例のように、クライアントはサブネット全体へのブロードキャストによってDHCPサーバを「発見」する。ブロードキャストはサブネットを越えないので、通常はクライアントと同一のサブネット内のDHCPサーバしか使用できないことになる。

 逆に、1つのサブネットに複数のDHCPサーバを配置することも理論上は問題ない。すでに説明したように、DHCPサーバはやりとりされるブロードキャスト・メッセージを追跡するので特に誤動作はないものの、実運用上あまり意味はないかもしれない。

●DHCPリレー・エージェント
 とはいえ、すべてのサブネットごとにDHCPサーバを配置してそれぞれ管理するのは煩雑な作業だ。そこで、ほかのサブネット上のDHCPサーバへDHCPメッセージを仲介する「DHCPリレー・エージェント」と呼ぶ仕組みがある。

図6 DHCPリレー・エージェント

 DHCPリレー・エージェントはサブネット内のDHCPメッセージを発見すると、自身の把握しているほかのサブネットのDHCPサーバへメッセージを転送するとともに、クライアントとの通信を中継する。例えば、ダイヤルアップ接続してきたクライアントとDHCPサーバを仲介する、などの利用が行われる。つまり、DHCPクライアントが接続されるサブネットでは、DHCPサーバかDHCPリレー・エージェントを配置すればよい。

 ルータなどでサポートしている例もあるほか、Windows 2000では「ルーティングとリモートアクセス」サービス、LinuxではdhcrelayコマンドなどでDHCPリレー・エージェントを構成できる。

●リース期間の設定に注意
 多くのWindowsクライアントでもそうだが、DHCPクライアントとして構成されたホストが、シャット・ダウン時に必ずしもIPアドレスをリリースするとは限らない点に注意しよう。ほとんどの場合、リース期間が訪れるまではリリースせず、起動時にリース期間を過ぎていたらリース延長要求を行うだけだ。リリースという行為自体、あまり頻繁には行われない。

 例えば、モバイルで使用しているクライアントが多い場合、実際に使用していないクライアントが多いにもかかわらず、ほとんどのIPアドレスがリースされっ放しで、IPアドレスが足りなくなってしまうことがある。これは、リリースが行われずにネットワークから離れるホストが多い場合によく見受けられる現象だ。十分なIPアドレスが確保できている場合には問題ないが、少ないIPアドレスを順に使い回すつもりだと、予想に反して慌ててしまうこともある。

 こうした場合には、リース期間を見直して短くしてみよう。通常、リース期間はデフォルト値だと1週間程度となっているはずだが、これを1日〜数時間としてみる。こうすることで、サーバでプールに戻されるIPアドレスの割合が上がり、効率的な割り当ても可能になる。あまり短すぎても、DHCPアクセスが頻繁に起こる結果となるだけなので、このときは適度な期間を見つけ出すしかない。

 

関連ネットワーク・コマンド/ツール
  ipconfig
〜Windowsのネットワーク設定を確認する
 


「Master of IP Network総合インデックス」


 本企画では、各種コマンド/ツール紹介やそれらを活用したTipsを順次追加、各種索引を用意して、読者の方々に手軽にご利用いただける、便利なリソース集としてアップデートしていく予定です。ぜひご期待ください。



 




</comment> <tr> <td bgcolor="#EEEEEE"><font size="2"><a href="javascript:KeepIt();"> <img src="/club/keepoint/images/ico_kpt.gif" alt="kee&lt;p&gt;oint保存" border="0" align="absmiddle" width="24" height="18">kee&lt;p&gt;ointで保存</a></font></td> </tr> <comment>
ゲストさん、こんにちは
ログインする | ヘルプ
印刷用プリンタ用表示
URL送信リンクをメール


新SPARC64搭載の富士通サーバをサンはどう見る?

世界は「Convergence=変革と統合」に向かう、ノーテル

7.1チャンネル・オーディオを可能にする新Pentium 4

「すごさを知って」、IBMが早大でメインフレームセミナー

日本の独自技術PHSの未来に賭ける“外資系ファンド”

ドキュメンタム、レガートを統合するEMCの狙いが分かった

SOAをうまく採用するための3つの注意点

ニュース一覧へ →
-PR-
転職プランの立て方、教えます
7/16無料セミナー in丸の内


プロジェクトの度重なる仕様
変更に柔軟に対応する方法


@IT自分戦略研究所へ →

お勧め求人情報 -PR- -PR-
世界に通じるITエンジニアを
目指す第二新卒を期間限定募集

-------------------------
【無料】あなたに合った
最新の仕事情報をメール配信


-PR-
待望の1冊! XMLマスター
プロフェッショナル編


UMLモデリングを
業界第一人者が伝授!


@ITハイブックスへ →

-PR-
.NET 企業内Webアプリ
開発技術書プレゼント


@ITクラブへ →

-PR-
組込みLinuxを
真のリアルタイムOSに


もっと上をめざす
開発者のためのギルド


check!あなたのPC
本当はもっと速い!


ソフトウェア開発者へ贈る
セキュアなコードへの第一歩


顧客に提案ができる自立したエ
ンジニアになるには?


持ち込みPCなどによる脅威と
クライアント・セキュリティ


24時間365日無料サポート
レンタルサーバの有力候補


SPSS Data Mining Day 2004
詳細なイベントレポート公開


手軽に使えるASP型VPN
「GMOどこでもLAN」登場!


オブジェクト指向と業務コン
サルのその先にある技術とは?


組み込み開発の常識を変える
「intent」の衝撃!全容紹介


@IT FYIへ →

 
   
 
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

@IT [FYI] 注目記事
持ち込みPCなどによる脅威とクライアント・セキュリティ
組み込み開発の常識を変える「intent」の衝撃!全容紹介
手軽に使えるASP型VPN「GMOどこでもLAN」登場!

@IT 新着記事
“書類選考NG”にもめげないモチベーションアップ法
Eclipseプラグインを作る(2)
NISサーバとパスワード同期機能(後編)
VBのモジュールはオブジェクト指向に不要?
TravelXMLのWebサービス実証実験デモが成功
Java TIPS
パフォーマンス向上の最短コースを知る
ASP/ASP.NETを支える周辺技術の移行
JSPを理解する最短コースを試そう
仕事への取り組み方は最初の数カ月で決まる!
Windows TIPS
Tripwireでファイルの改ざんを検出せよ
関連チャンネル
運用管理

   

Master of IP Networkフォーラムスポンサー
 
Master of IP Networkフォーラムのトップへ
記事へのご意見、ご感想はIP Network会議室

Copyright(c) 2000-2004 atmarkIT
著作権はアットマーク・アイティまたはその記事の筆者に属します
@ITに掲載されている記事や画像などの無断転載を禁止します
「アットマーク・アイティ」「@IT」「@IT自分戦略研究所」「@ITハイブックス」は、株式会社アットマーク・アイティの登録商標です
弊社へのご連絡は「アットマーク・アイティへのお問い合わせ」をご覧ください