WEBノート(IT編)

DHCPの冗長化

最終更新:

sho570922

- view
管理者のみ編集可

DHCPサーバの冗長化

基本的にはDHCPサーバは同一ネットワークに1つしか置いてはならない。
なぜなら、DHCPクライアントはサーバからIPアドレスを受け取るときにDHCPDISCOVERというメッセージをブロードキャストで流してしまうからだ。このDHCPDISCOVERを受け取ったDHCPサーバがクライアントに対してIPアドレスを貸し出す仕組みになっている。

2台のDHCPサーバが同じ設定で同一ネットワーク内に存在すると、どちらのDHCPサーバがIPアドレスを貸し出すか分からない。と、いうのはDHCPDISCOVERのメッセージを先に受け取ったサーバからIPアドレスが貸し出されることになるからである。

DHCPサーバは自分が貸し出したIPアドレスについては把握しているが、他のDHCPサーバが貸し出したものについては把握できていない。この状況で複数代のクライアントからIPアドレス貸し出しの要求があるとどうなるか。そう、IPアドレスのバッティングが起こることがあるのだ。

こうなると、通信できない状況に陥ってしまう。

この問題を回避する方法は次の3つが考えられる。

  1. それぞれのDHCPサーバで割り当て範囲を分ける
  2. クラスタソフトなどを使用し、稼動/待機の構成にする
  3. 2台のDHCPサーバで共通のデータストアを使用する

クライアントが100台有り、これを2台のDHCPサーバを冗長化してIPアドレスを割り当てる方法をそれぞれ見ていきたい。

1. それぞれのDHCPサーバで割り当て範囲を分ける

DHCPサーバ1 DHCPサーバ2
割り当て範囲 192.168.0.1~100 192.168.0.101~200
サブネット 255.255.255.0 255.255.255.0

上記の表のように、割り当て範囲を分割すればIPアドレスの競合は起こらないし、片方のDHCPサーバが死んだときもクライアントにIPアドレスが割り当てられなくなるようなことはないので、冗長化ができているといえる。

しかし、この方法には問題点がある。実際に使用できるIPアドレスの半分の数しか使えなくなってしまうのである。もし、クラスCのネットワークでクライアントが150台あるような状況であればアウトだ。クラスを変更して使えるIPアドレスの数を増やさなくてはならない。


2. クラスタソフトなどを使用し、稼動/待機の構成にする

通常、DHCPサーバというのは死んだ瞬間に業務が止まるということはありえない。1度クライアントに割り当てられたIPアドレスはリース期間の間は保持されるので、その間はDHCPサーバとやりとりすることはない。なので、DHCPサーバが死んだことを検知してからのんびりと待機しているものに切り替えてもよい。難点は、クラスタソフトの値段だろう。

と、思ったのだが調べてみたところ、2010年に発売予定のWindows Server 2008 R2では標準でDHCPサーバのfailover機能が搭載される模様。


3. 2台のDHCPサーバで共通のデータストアを使用する

これが最もスマートなやり方な気がするのだが、windows server 標準ではできないみたい。Soralisはできるみたいなのだが。。。
この方法についてはもっと調査が必要なので、後日時間があれば修正することにする。



以上

目安箱バナー