OKI
セキュリティ・アンド・モビリティ・カンパニー
マーケティングチーム
井上 伸也 OKI
セキュリティ・アンド・モビリティ・カンパニー
マーケティングチーム
井上 伸也

いまでは枯れているはずのDHCP。しかし、無線IP電話の導入で、そうではないことを再認識した。DHCPサーバーを冗長化したら端末に割り当てるIPアドレスが枯渇したり、少しの間、無線LANの圏外状態になると圏内に戻ってもIPアドレスが変わり通話が切れてしまったりとまだまだ難しいことが残されていた。その癖は、DHCPサーバーや無線LAN端末によって、さまざまである。

 無線IP電話を利用する場合、端末のIPアドレスの割り当て/管理にDHCP(Dynamic Host Configuration Protocol)サーバーを用いることが多い。DHCPは、IPアドレスなどのネットワーク設定情報をサーバーで一元管理し、運用管理を効率化するための技術である。サーバーが端末の要求によって、IPアドレスを割り当てる(リース)してくれるので、ネットワーク・セグメントを移動しても端末の設定を手動で変更しなくて済む。IPネットワークが標準になり、安定した技術、製品だと思われている。

 ところが、無線IP電話を利用するうえで、これまで隠れてた問題が表面化した。無線IP電話「FOMA N900iL」をユーザー企業に導入したときに、IPアドレスが浪費され枯渇したり通話が切れたりするトラブルが発生した。調査を進めると、DHCPサーバーの構成や機種によっては異なる不具合が生じることがわかった。

DHCPサーバーの冗長化が必須要件

 NTTドコモのFOMA/無線LANデュアル端末「N900iL」の導入を進めていたユーザー企業では、DHCPサーバーの冗長化を必須要件に挙げていた。通常、拠点ごとにDHCPサーバーを設置して個別に運用する。WANでの障害発生に備えてのことである。しかし、このユーザーの場合、DHCPサーバーでIPアドレスを配布する対象が「FOMA N900iL」のみであり、拠点ごとにDHCPサーバーを配置、管理したくないという。このため、データセンターにDHCPサーバーを冗長化して配置することにした。

 そこで、冗長化の機能があり、比較的安価に構築できるRed Hat Linuxに白羽の矢が立った。このLinuxに標準搭載されているDHCPサーバーを冗長化して使用することにした(図1)。1台で運用し、障害などの問題が発生したら、もう1台のほうが代わりに処理を受け持つ。いわゆるアクティブ/スタンバイの構成である。

図1●LinuxのDHCPサーバー冗長化機能   図1●LinuxのDHCPサーバー冗長化機能
[画像のクリックで拡大表示]

冗長化試験時にアドレスが枯渇?

 LinuxのDHCPサーバーを冗長化して導入することは初めてであった。このため運用前に、そのユーザーの拠点で試験することにした。実際にN900iLを100台準備し、DHCPサーバーを冗長化して試験を実施した。一通り試したところ、DHCPサーバーを冗長化させた状態で特に問題なく動作していた。

 しかし、次の段階の試験で問題が発生した。1台のDHCPサーバーに故意に障害を発生させた状態で、端末を何度か再接続させると、数台が圏外のまま接続できなくなってしまった。端末の再接続とは、電源を入れ直したり、ニューロ・ボタン(中央のボタン)を長押したりすることで、無線LANに接続し直すことである。

 端末の再接続をさらに繰り返すと、最終的にはすべての端末が圏外状態となり接続できなくなった。DHCPサーバーのログを見ると、端末からのIPアドレス割り当て要求に対して、サーバーは無応答になっていた。どういうわけか、DHCPサーバーからIPアドレスが払い出されなくなってしまったようだ。アクティブ、スタンバイのどちらか1台をダウンさせるとこの問題が発生する。

 この現象は不思議なことに、冗長化の設定をした状態で、1台のDHCPサーバーをダウンさせた場合のみ発生する。調査のためWindowsのノートPCを無線LAN端末として使用してみたが、この現象は発生しない。パケットのやりとりを調べてみた結果、どうやらN900iLがIPアドレスを再取得する際に、「DHCP Release」パケットを送出することが関係しているようだ。

 DHCP Releaseというのは、端末がそれまで使っていたIPアドレスが不要になったときにその旨をサーバーに伝えるメッセージである。本来ならばサーバーは、Releaseパケットを受け取れば、その端末が使っていたIPアドレスを再割り当てするはずである。しかし、そのアドレスを保持してしまうようだ(図2)。つまり、端末の再接続を繰り返すたびに、新しいIPアドレスが払い出されていき、最終的にIPアドレスが枯渇してしまっていることがわかった。

図2●DHCPサーバー冗長構成で1台がダウンすると・・・
図2●DHCPサーバー冗長構成で1台がダウンすると・・・
端末からのDHCP Release(IPアドレス解放)を受け取ると、そのIPアドレスが使用不可になっていった。

 冗長化状態では、2台のサーバーで端末に割り当てたIPアドレスのテーブルの同期を取っている。ところが、1台がダウンして同期が取れなくなると、DHCP Releaseを受け取ると、そのアドレスを“寝かせる”ような動作をしているようである。これは、ダウンさせていたサーバーを復帰させて同期が取れるようになると、正常にアドレスを割り当てられるようになることから確認できた。