このページの本文へ

前へ 1 2 次へ

サーバトラブル解決のセオリー 第7回

アドレスプールやリースの有効期限をチェックしよう

DHCPサーバからIPアドレスが発行されない

2009年08月14日 09時00分更新

文● のりぞう

  • この記事をはてなブックマークに追加
  • 本文印刷

クライアントにIPアドレスが発行されない

 DHCPサーバが動作しているにもかかわらずクライアントにIPアドレスを発行しない場合、いくつかの原因が考えられる。

アドレスプールの不足

 動的割り当てのために用意したアドレスプールを超える数のクライアントが同時にネットワークに接続されると、割り当てるIPアドレスが足りなくなる。接続されているクライアントの数とアドレスプールの範囲を確認し、不足している場合はアドレスプールを増やそう。またIPアドレスのリース期間(有効期限)があまりにも長すぎると、使われなくなったクライアントにIPアドレスを貸したままという状態に陥りやすい。リース期間の設定を短くすることも検討する。

 Windows Server内のDHCPサーバで動的に割り当てているIPアドレスを確認するには、DHCPの管理画面の[アドレスのリース]を開く(画面1、2)。

画面1 Windows Server 2003のDHCPサーバ設定

 静的割り当てをする場合はDHCPサーバにMACアドレスを登録し、IPアドレスを固定的に割り当てるようにする。画面1の例には表示されていないが、動的割り当てをしたクライアントとIPアドレスもここに表示される。

画面2 DHCPによるIPアドレス割り当てをしない範囲

 画面2のDHCPサーバには192.168.3.16~192.168.3.240を管轄するスコープを設定してあり、192.168.3.1~192.168.3.15は管轄しない。また、192.168.3.224~192.168.3.240の範囲を除外設定しているため、この範囲のIPアドレスもクライアントに割り当てられない。

 UNIX系OSで一般的に使われているISC dhcpdでは、dhcpd.leasesというファイルの内容を確認する(画面3)。OSの種類によってこのファイルが置かれているディレクトリは異なる。たとえばRed Hat Enterprise Linuxの場合は、/var/lib/dhcpディレクトリに置かれている。

画面3 dhcpd.leasesの内容

 dhcpd.leasesファイルには動的割り当てを行なったIPアドレスとリース(割り当て)期間、クライアントの情報が記録される。画面3の例では、192.168.3.218が2008/11/03 16:49:07~22:49:07までの期間限定で割り当てられ、すでに解放(binding statusがfree)されている。また、192.168.3.215はbinding statusがactiveなので割り当て中であることを示している。なお、日付時刻はすべてUTCとなっている。

複数のDHCPサーバが競合している

 DHCPのリクエストとレスポンスにはブロードキャストが用いられる。基本的には同一のブロードキャストドメインにはDHCPサーバを1台だけ設置して運用する。DHCPサーバは割り当てたIPアドレスとそのリース期間を管理する必要があるが、管轄するアドレスプールのIPアドレスをほかのDHCPサーバが割り当ててしまうと、これらの情報を把握できなくなってしまう。その結果、不適切なIPアドレスが割り当てられてネットワーク障害を起こす可能性がある

 ブロードバンドルータにはDHCPサーバ機能を持つものが多いので注意が必要だ。

 競合の原因となっているDHCPサーバを見つけるには、Windows Support ToolsやWindows Server 2003 Resource Kit Toolsに含まれるdhcploc.exeというコマンドを利用するか、ネットワークモニタでDHCPパケットをキャプチャして調べる。これらのツールはマイクロソフトのダウンロードセンターサイトからダウンロードできる。

IPアドレスの手動設定による競合

 DHCPの動的割り当てをする範囲のIPアドレスをローカル設定で固定的に利用しているノードがあると、IPアドレスが競合してネットワークに接続できないクライアントが発生する可能性がある。Windowsではイベントログに競合ノードのMACアドレスが記録されるので、これを基に原因を突き止める。また、Linuxではarpingコマンドで原因ノードのMACアドレスを調べられる。

DHCPサーバを安全に冗長化するには

 同一のネットワークに複数のDHCPサーバが存在し、これらが競合するとネットワークトラブルの原因になる。しかし、DHCPサーバは重要な機能を持つため、耐障害性を向上させるためにも冗長化は行ないたい。

 簡単な解決法は、動的割り当てをするIPアドレスの範囲が重ならないように各DHCPサーバのアドレスプールを設定するというものだ。それぞれのDHCPサーバは自身が管轄するアドレスプールの管理を行ない、他のDHCPサーバが管轄するアドレスプールにはかかわらない。クライアントから見れば、どのDHCPサーバがIPアドレスやネットワーク接続情報を配布してくれてもかまわない。そのため、最低1台のDHCPサーバが稼働していればよい。しかしこの方法には、IPアドレスの利用効率が低下してしまうという欠点もある。

 もう1つの解決法として、ISC dhcpd 3.0以降で実装されたDHCPフェイルオーバー機能を利用することが挙げられる。これは2台のDHCPサーバが管理しているIPアドレス情報を交換して協調動作できるようにする仕組みだ。現在のところ利用可能なのはISC dhcpdだけであること、3台以上のDHCPサーバでは利用できないことが制限となるが、2台のDHCPサーバで同一のアドレスプールを管轄できるのでIPアドレスの利用効率が低下しないという利点がある。

-->

前へ 1 2 次へ

カテゴリートップへ

この連載の記事