このページでは DHCP (Dynamic Host Configuration Protocol ) についてお話します。
ネットワークが大きくなればなるほど、DHCP
は必要不可欠なサービスになります。
しっかり、機能を把握して知識を役立ててくださいね。
では、早速はじめましょうか!
DHCP とは
DHCP は Dynamic Host
Configuration Protocol の略で、
動的かつ自動的に IP
アドレスを割り振ってくれる、とっても便利な機能なんです。
TCP/IP
ネットワークでは、各コンピュータにユニーク(重複しない)な
IP アドレスを割り当てる必要があります。
この IP
アドレスの設定と管理は煩雑で、少しでも間違うと通信ができなくなります。
1000 台のコンピュータの IP
アドレスを設定することを考えてみて下さい。
非常に骨の折れる仕事であることは、想像に難くないでしょ?
そこで登場したのが、DHCP
です。
DHCP を導入することにより、自動的にコンピュータに IP アドレスを割り振ってくれます。
IP アドレスだけでなく、デフォルト ゲートウェイ、DNS、WINS、DNS サフィックス(※1)
などを割り当てることができるのです。
もちろん、このほかにも多数のオプションをサポートしています。
Windows
Server は DHCP サービスを初めから備えています。
Windows 2000 Server 以降であれば、アプリケーション(プログラム)の追加と削除の
Windows コンポーネットの追加と削除から追加できます。
NT4
は・・・う〜ん、忘れました。(笑)
たぶん、同じだったと思います。
NT4 は MS
のサポートが切れているので、お話する必要はないですよね?
ちなみに DHCP
にも弱点があります。
それは便利過ぎるがゆえに、ネットワークのセキュリティを弱めてしまうのです。
これはどういう事か言うと、社内にコンピュータを持ち込めれば、
ネットワークのアドレス体系を知らずとも LAN ケーブルを挿しさえすれば
ネットワークに接続できるのです。
このセキュリティ リスクを嫌うネットワーク管理者は、DHCP を導入せずに
固定 IP アドレスを使用することで、このリスクを回避しようとします。
しかし、管理コストは増大するため、おすすめ出来ません。
このリスクはネットワークへの接続・切断を監視するソリューションで
十分軽減できるのです。
となれば、わざわざ管理コストの掛かる固定 IP アドレスを使用する
理由はありませんよね?
DHCPサーバーとDHCPクライアントとの通信
さて、DHCP について概要をお話しましたので、次はもう少し細かい部分
についてお話します。
DHCP サーバーとは、DHCP
サービスが稼働しているコンピュータのことです。
DHCP クライアントとは、DHCP サーバーから情報を受け取るように設定
されているコンピュータのことです。
DHCP クライアントは起動すると、以下のような手順を経て TCP/IP の
設定情報を取得します。
※特に問題が発生しなかった場合の例です。
DHCP
クライアント DHCP サーバー
------------>
IP リース要求
(DHCPDiscover)
<------------
IP リース提供
(DHCPOffer)
------------>
IP リース選択
(DHCPRequest)
<------------
IP リース確認通知 (DHCPAck)
1. DHCP クライアントは起動すると、IP リース要求をブロードキャストします。
ブロードキャストとは、相手の IP アドレスが分からない場合、
どこにいますか〜?って、叫び相手を探す方法です。(笑)
2. IP リース要求を受け取った DHCP サーバーは、クライアントに IP アドレス
を提示します。
3. クライアントは提示されたアドレスを選択し、受け入れの通知を返します。
4. 受け入れの通知を受け取ったサーバーは承認し、IP リース確認通知を
発信します。この通知には、その他の DHCP オプション情報も含まれます。
5. (肯定)通知を受け取ったクライアントは、DHCP オプションを元に TCP/IP を
構成しネットワークに参加します。
上記の説明は、それぞれの工程がスムーズに流れた場合のお話です。
次にそれぞれの工程でスムーズに流れなかった場合についてお話します。
工程2:DHCP サーバーからの応答がない場合
Windows 2000、2003、XP の場合
IP アドレスを自身で自動的に構成します。
この機能を Automatic Private IP Addressing (APIPA) (※2) と言います。
この機能は無効にすることもできます。
それ以外の OS の場合
IP
アドレスの取得に失敗します。
その後、バックグランドで最大 4回まで IPリース要求 (DHCPDiscover)
を発信します。
工程3:クライアントが提示されたアドレスを拒否した場合
再度、工程1から要求を実行します。
クライアントの再起動
IP アドレスをリースしている DHCP クライアントが再起動した場合、
IP リース要求 (DHCPDiscover) からではなく、IP リース選択 (DHCPRequest)
から開始します。
このとき IP
アドレスは、それまで割り当てられていたものを要求します。
ほかのクライアントが使用していたり、ネットワークを移動していると
否定通知 (DHCPNak) を受け取ることになります。
この場合は、要求を初めからやり直すことになります。
リースの更新
IP アドレスのリース期間 (※3) の半分が過ぎると DHCP クライアントは、
DHCP サーバーにリースの更新を要求します。
DHCP サーバーからの応答がない場合、リース期間の 87.5% が過ぎた時点で
再度更新要求を行います。
更新の許可を受け取れずリース期間の満了を迎えると DHCP クライアントは
IP アドレスの使用を停止し、IP リース要求 (DHCPDiscover) から要求を行う
ことになります。
リース期間を決定するにあたって
リース期間は長くなればなるほど、クライアント、サーバーの負荷を小さくすること
ができます。しかし、長すぎるリース期間は IP アドレスの枯渇を招きます。
そこで、リース期間を決定する際、次のことを考慮する必要があります。
● 割り当てる IP アドレスは使用するコンピュータの数より十分余分があるか?
余裕がないならリース期間を短くする必要がある。
●モバイル コンピュータ(ダイヤルアップ接続や VPN 接続するコンピュータ)
やラップトップ コンピュータは接続切断を繰り返すため、リース期間を短くすると良い。
●デスクトップ コンピュータはリース期間を比較的長く取ることができる。
DHCP リレーエージェント
次に DHCP リレー
エージェントについてお話します。
Windows Server に付属する DHCP のリレー機能を、DHCP リレー エージェント
と言います。他のベンダー製品では DHCP リレーと言ったり、IP ヘルパと言ったりします。
では、DHCP リレー
エージェントはどんなサービスなんでしょうか?
DHCP クライアントは、ブロードキャストで DHCP
サーバーを探します。
つまり、同一セグメント上に DHCP サーバーがなければ、DHCP サーバーを
探すことができないのです。
セグメントとは、ルーターを越えない LAN の範囲のことですね。
ちなみにセグメントは物理的な範囲を指す言葉ですが、
論理的な範囲を指す言葉で、サブネットというものがあります。
一般的には両者はほぼ同じことを言っていますが、
物理ネットワーク上に複数の論理ネットワークが存在することもあります。
このようなネットワークをスーパーネットとかマルチネットと言います。
基本は物理ネットワークと論理ネットワークは一意に対応づけることが推奨されます。
少し話が脱線しました。話を元に戻しまして。。。
では、セグメントが複数あった場合、DHCP をそれぞれ配置する必要が
あるのでしょうか?
多数の DHCP サーバーが必要なのであれば、非常にコストが掛かり管理
も大変ですね。
そこで、活躍するのがこの DHCP リレー エージェントです。
DHCP
リレー エージェントは IP リース要求(DHCPDiscover) をリッスンし、
別のセグメントに配置されている DHCP サーバーに要求を中継する役割
を果たします。
ここで一つ疑問が出てきませんか?
別のセグメントに配置されている DHCP
サーバーがどうやって、
DHCP クライアントに正しいネットワーク
アドレスを割り当てるのだろうか?
これってすごーく単純なことだったんです。
DHCP クライアントの要求は DHCP リレー
エージェントがリッスンしました。
つまり、DHCP クライアントと DHCP リレー エージェントは同一ネットワーク上に
いるわけです。
ということで、DHCP サーバーはリレー エージェントと同じネットワーク アドレス上
の IP アドレスを返せば良いわけです。
因みに要求されたネットワーク アドレスが DHCP サーバー上で管理されて
いなければ、DHCP サーバーは応答しませんので、あしからず。
この DHCP リレー エージェントは、Windows Server
がなることもできますし、
一般的なルーターやレイヤー3スイッチであれば、機能が付いています。
レイヤー3スイッチとは、とりあえずルーティング機能を兼ね備えスイッチング
ハブ
だと思ってください。
図1:DHCP サーバーとクライアントが同一セグメント上にある場合
図2:DHCP サーバーとクライアントが別セグメントにある場合
図3:リレー エージェントを使用した場合
80/20ルール
DHCP ネットワークを設計する上で必要となる知識として
80/20 ルールというものがあります。ここでは、このルールについてお話します。
DHCPサーバーで障害が発生すると IP アドレスの割り当てを受けていない
クライアントはネットワークに接続できなくなります。
つまり、DHCPは非常に重要なサーバーであるということです。
このように重要な役割を果たすサーバーには冗長性を持たせることが
一般的です。
冗長には無駄な、とか蛇足という意味があり、
対障害性を向上させるために利用されるものです。
たとえば、1台で良いところを
2台用意したりすることで、
1台で障害が発生したとしても、サービスを提供し続けることが
できるわけです。
つまり、平常時には蛇足と言わざるを得ませんが、障害時に活躍できる
わけです。冗長はフォールト トレランスとも言われます。
DHCP サーバーは、サーバーを
2台配置することやクラスタを組むことで、
冗長性を確保します。
一般的にクラスタは高価になるため、DHCP では 2台でカバーすることが
多いようです。
クラスタとは複数台のサーバーを、1台のサーバーに見せかける技術のことです。
DHCP サーバーを
2台で構成する場合、注意するべき点があります。
それは IP アドレスの範囲が重複しないようにすることです。
DHCP
サーバーは自分が割り当てた IP アドレスしか管理できません。
つまり、他のサーバーが割り当てている IP アドレスを認識できないため、
2 台のサーバーが同じ範囲の IP アドレスを管理している場合、
重複して割り当てる可能性があります。
実際には Windows ベースのサーバー、クライアントともにアドレス衝突の
回避機能があるため、重複は避けられますが、パフォーマンスが低下します。
これを避けるため、お互いに
IP アドレスの範囲を分けて設定します。
ここで適用するのが 80/20 ルールと言われるものです。
これは IP アドレスの範囲の 80% を 1台のサーバーに管理させ、
残りの 20% をもう 1台のサーバーが管理させるようにすることです。
DHCPクライアントに、より近い DHCP サーバーに
80% の IP アドレスを設定します。
遠い DHCP サーバーには残りの 20% を設定します。
こうすることにより、80% を管理している DHCP サーバーを有効に動作される
ことが可能なのです。
20% を管理する DHCP
サーバーはバックアップとして動作することになります。
ここで一つ疑問が出てきませんか?
80% を管理する DHCP サーバーがダウンした場合、20% しかない DHCP サーバー
では IP アドレスが足りないのでは?
大丈夫なんです。
DHCP サーバーから割り当てられた IP アドレスにはリース期間が
設けられています。
つまり、リース期間内であれば、DHCP サーバーがなくても、DHCP クライアントは
ネットワークに接続できます。
ダウンしたサーバーを復旧させる間に、IP アドレスを持たない DHCP クライアントと
リース期間を過ぎた DHCP クライアントの分だけ、
IP アドレスがあれば足りると言うことです。
なるほど!って感じじゃないですか?
さらに補足すると、バックアップとして動作している DHCP は、そのままでは
勿体ないですよね。
なので、バックアップとして動作している DHCP にもメインとして動作する
IP アドレスを管理してもらえば良いのです。
言葉で説明すると難しいかもしれませんので、下図を参照してくださいね。
図4:DHCP ネットワーク基本構成 (図をクリックすると拡大図が表示されます)
上手を簡単に補足しますと、左側のネットワーク A のネットワーク アドレスは
192.168.35.0/24 となっており、ネットワーク A 上の DHCP サーバー上で
80% の IP アドレスが管理されています。
右側のネットワーク B
のネットワーク アドレスは 192.168.45.0/24 となっており、
ネットワーク B 上の DHCP サーバー上で 80% の IP
アドレスが管理されています。
残りの 20% をお互いに管理し合うことで、80/20 ルールを適用した冗長構成が
完成します。
DHCP サーバーの承認
DHCP
は非常に便利なサービスですが、不用意に設置されてしまうことがあります。
それは検証の名の下に召還された DHCP
たちです。
これらの DHCP
はネットワークを混乱の渦に陥れます。
なぜでしょうか?
それは、そのネットワークで使用されるはずの IP アドレスとは全く違う
IP アドレスを割り当てるからです。
本来の IP アドレスとは違う IP アドレスを割り当てられたコンピュータたちは
ネットワークから切断されたも同然なのです。
この問題は Windows 2000 Server よりも前の OS である、NT4.0 Server では
ときどき起こりました。
しかし、Windows 2000 Server 以降では機能が強化され、Active Directory で
承認されていないDHCP はサービスを起動することができなくなっています。
DHCP オプション
DHCP は IP アドレス以外に DNS や WINS などの設定も DHCP クライアントに
配布します。これらの設定は DHCP オプションと言われます。
このオプションはいくつかのレベルに分かれています。
●DHCP クライアント全体に適用されるサーバー オプション
●スコープごとに適用されるスコープ オプション
●サーバー オプション、スコープ オプション内でよりきめ細かく設定する
ユーザー オプションとベンダー オプション
●特定のコンピュータに固定の設定を割り当てる予約済みクライアント オプション
サーバー
オプションは、DHCP
クライアント全体に適用されるオプションです。
他のオプションで同じオプションが設定されている場合、上書きされる運命にあります。
もっとも一般的なオプションを指定することになります。
たとえば複数のサブネットがありながらも、DNS や WINS が共通な場合など
に使用されます。
スコープとは、要は範囲のことでサブネットを
1つの管理グループとしています。
つまり、スコープ
オプションはサブネットごとに割り当てるオプションのことになります。
サブネットごとに DNS や WINS が違う場合や、サーバー
オプションで指定された
DNS や WINS の負荷を分散するために、いくつかのスコープでプライマリと
セカンダリを逆に設定するときなどに利用されます。
ユーザー オプションとベンダー オプションは、サーバー オプションやスコープ
オプションをよりきめ細かく設定する場合に利用されます。
ユーザー オプションは特定環境のクライアントやユーザー クラス ID を設定
されているクライアントに適用されます。
ベンダー オプションはベンダー クラス ID によって識別され、たとえば Windows
のバージョンなどで区別できるようになります。
予約済みクライアント オプションは、予約されたクライアントに固有のオプションを
割り当てる際に利用されます。
図5:DHCPオプション 割り当て概要図 (図をクリックすると拡大図が表示されます)
ダイナミック DNSの補助
ダイナミック DNS とは動的に DNS レコードを更新できる
DNS のことです。
この機能は Windows 2000 以降の OS に実装されています。
つまり、Windows 2000 よりも前の OS (レガシー クライアント)はダイナミック
DNS
を認識できません。
レガシー クライアントはダイナミック
DNSに動的に登録できないのでしょうか?
そんなことはありません。
レガシー
クライアントにも助け舟が出されています。
それは DHCP がクライアントを肩代わりしてダイナミック DNS にホスト レコード
とポインタ レコードを登録、更新する機能です。
この機能により、レガシー クライアントもダイナミック DNS
の恩恵に与れるのです。
ちなみに、既定では Windows 2000 以降の OS はホスト レコードを自分で
登録しますが、ポインタ レコードは DHCP が登録、更新するよう設定されています。
以上、DHCP
について基本機能から設計に必要な知識をご紹介しました。
いかがでしたでしょうか?
この 1 ページを作成するのにどれほどの時間を費やしたことか!
これで少しでも皆さんの DHCP の理解のお役に立てれば良いのですが・・・
このページでは結構詳しく書いたつもりです。
たいていは、この情報だけで良いと思いますがー
もっとーもっとーって方は、こんな書籍もあるようですよ。
▼DHCP―ホスト設定サーバの設定・運用・管理
※1
DNS サフィックスとは、ホスト名だけで名前解決が実行された際、自動的に付加
されるドメイン名のこと。
※2
APIPA (Automatic Private IP Addressing) とは、DHCP クライアントが IP アドレスを
取得できなかった場合に自動的に使用する IP アドレスのこと。
Windows 2000 以降の OS に実装されている。169.254.0.1 〜 169.254.255.254
の
範囲の IP アドレスが使用される。
単一ネットワーク上で複数のコンピュータで APIPA が使用されれば、
ルーティングはできないが、お互いに通信することができる。
つまりネットワークに詳しくない管理者でも簡単にネットワークが構築できる。
これは NetBEUI の代替と言えるのではないだろうか?
※3
IP アドレスのリース期間
IP アドレスを無期限に割り当てると、いつかは IP アドレスが枯渇することになる。
これを防ぐためにDHCP では IP アドレスを割り当てる際、一般的に一定期間の
貸し出し期間を設けます。
これをリース期間と言います。