図1 LAN上に複数のDHCPサーバーがあるとどうなる? DHCPサーバー機能を持った無線ルーターなどが社内ネットを設置されると,パソコンに変なアドレスが割り振られたりする。LAN上に複数のDHCPサーバーがあったとき,実際にはどうなるのだろうか。
図1 LAN上に複数のDHCPサーバーがあるとどうなる? DHCPサーバー機能を持った無線ルーターなどが社内ネットを設置されると,パソコンに変なアドレスが割り振られたりする。LAN上に複数のDHCPサーバーがあったとき,実際にはどうなるのだろうか。
[画像のクリックで拡大表示]
図2 DHCPのやりとり パソコンとDHCPサーバーとの間で4個のパケットをやりとりすることで,パソコンにIPアドレスなどの設定情報を割り当てる。
図2 DHCPのやりとり パソコンとDHCPサーバーとの間で4個のパケットをやりとりすることで,パソコンにIPアドレスなどの設定情報を割り当てる。
[画像のクリックで拡大表示]
図3 正しいアドレスが取得できたときと,できなかったときのパケットの詳細 正しいアドレスを取得できなかったときは,不正DHCPサーバーからのオファーにパソコンがすぐに応答していた。
図3 正しいアドレスが取得できたときと,できなかったときのパケットの詳細 正しいアドレスを取得できなかったときは,不正DHCPサーバーからのオファーにパソコンがすぐに応答していた。
[画像のクリックで拡大表示]
図4 正しいアドレスを取得できたときと,できなかったときのやりとりの違い
図4 正しいアドレスを取得できたときと,できなかったときのやりとりの違い
[画像のクリックで拡大表示]


若手部員 宇田くん
  DHCPサーバー機能がオンになっているブロードバンド・ルーターなどを社内LANにつなぐと,変なIPアドレスをパソコンに割り当ててしまったりするよね。どうなっているのかな。  

若手部員 貴子さん
  正しいIPアドレスを割り当てるDHCPサーバーと,そのブロードバンド・ルーターとがけんかをするのかしら。2台のDHCPサーバーをLANにつないで試してみましょう。  


宇田:ハブがあったら貸してくれないかな。

貴子:どうしたの?

宇田:新しく購入したノート・パソコンをLANにつなぎたいんだけれど,ハブのポートが足りないんだ。

貴子:そうねぇ。無線LANルーターでもいいかしら。たしか,LANポートがいくつか付いていたわ。

宇田:それで十分だよ。

貴子:はい,これよ。4ポートのLANスイッチとして使えるわ。

DHCPを勝手に動かしてはいけない

宇田:ありがとう。これで十分だ。あ,でも使う前にルーター機能をオフにしておかないとダメだね。

貴子:どうして?

宇田:そのままつないでしまうと,無線LANルーターのDHCP*サーバー機能が社内のパソコンに変なIPアドレスを割り振ってしまうからさ。以前,顧客のLANで似たようなトラブルがあって,原因を探すのに苦労したんだ。

貴子:そうなんだ。

 無線LANルーターやブロードバンド・ルーターはDHCPサーバー機能を備えていることが多い。こうした機器を不用意に社内LANにつなぐと,トラブルを起こす。ルーターがDHCPサーバーとして稼働してしまい,社内のパソコンにIPアドレスなどの設定情報を自動的に割り振ってしまうからだ。つまり,ルーターがパソコンに間違ったアドレスを割り当てるため,割り当てられたパソコンはインターネットなどにアクセスできなくなる。

DHCPサーバーを2台つないでみる

宇田:無線LANルーターを返すね。

貴子:どういたしまして。ところで,無線LANルーターのDHCPサーバー機能をオンにしたまま社内LANにつないだら,どうなるのかしら(図1)。

宇田:以前にあった顧客のトラブルでは,インターネットなどにアクセスできないパソコンが続出したよ。やっぱり,同一LANに複数のDHCPサーバーをつなぐなんてオキテ破りだよ。

貴子:そうかしら。DHCPサーバーがダウンしたときのために,予備のDHCPサーバーを用意しておきたいケースはあると思うんだけれど。

宇田:そういうケースもありそうだね。実際に試してみようか。社内LANで試すわけにはいかないから,実験的なLANに2台のDHCPサーバーをつないでみよう。

貴子:じゃあ,実験の準備は任せるわね。私はDHCPについて調べてみるわ。

 実験環境を確認しておこう。LAN上に2台のDHCPサーバー(ブロードバンド・ルーターなど)をつなぎ,1台を正規サーバー,もう1台を不正サーバーにする。そして,正規サーバーは192.168.0.10~192.168.0.254の範囲のIPアドレスをパソコンに割り振るように設定。一方の不正サーバーは,172.16.0.10~172.16.0.254の範囲のIPアドレスを割り振るように設定する。

 このLAN環境にパソコンをつないでみて,どんなIPアドレスが実際に割り当てられるかを調べる。

4個のパケットをやりとり

貴子:実験の準備はできた?

宇田:完璧だよ。実験を始めようよ。

貴子:その前に,結果を予想してみましょう。DHCPのことを調べたら,いろいろとわかったわ。パソコンをLANに接続するとDHCPサーバーとの間で,合計4個のパケットをやりとりするのよ(図2)。

宇田:どんなパケットなのかな。

貴子:パソコンにはIPアドレスなどが割り当てられていないし,DHCPサーバーのIPアドレスも登録されていないから,ブロードキャスト*・パケットを使うのよ。

宇田:なるほど。

貴子:まずパソコンが,「設定情報を割り当ててください」っていう意味のパケット(DHCPディスカバー)をブロードキャストするの(図2(1))。するとDHCPサーバーから「こんなIPアドレスはどうかな?」っていう提案が入ったパケット(DHCPオファー)が返ってくるわけ(図2(2))。そのあとで,パソコンが「そのアドレスを下さい」と正式なリクエスト・パケット(DHCPリクエスト)を送って(図2(3)),DHCPサーバーが返事を返す(DHCPアック)とやりとりが完了するの*(図2(4))。

宇田:だいたいわかった。でも,サーバー2台のケースは想像できないよ。

DHCPオファーは両方とも受信

貴子:そうね。やっぱり,実際に試してみましょう。LANに私のノート・パソコン(PC1)をつないで電源を入れてみるわね。

宇田:やりとりのパケットもキャプチャ*しておくよ。

貴子:パソコンは問題なく起動したわ。

宇田:じゃあ,ipconfigコマンド*でPC1に割り当てられたIPアドレスを確認してみてよ。

貴子:正規DHCPサーバーから割り当てられたみたいよ。IPアドレスが192.168.0.10になっているわ。

宇田:そうみたいだね。不正DHCPサーバーから割り当てられたのなら,172.16.0.10~172.16.0.254の範囲のIPアドレスになっているはずだからな。

貴子:パケットのキャプチャ結果はどうなったかしら。

宇田:4個ではなくて,5個のパケットをやりとりしているよ(図3a)。

貴子:DHCPオファーが正規サーバーと不正サーバーの両方からPC1へ届いているのね。

宇田:それで,PC1は正規サーバーからのDHCPオファーを採用することに決めて,DHCPリクエストを送信し,正規DHCPサーバーからDHCPアックを受け取ったんだよ。

何度やっても同じアドレスを取得

宇田:でも,不正DHCPサーバーからのIPアドレスを採用してしまうことはないのかな。このままなら,LANに不正なDHCPサーバーを設置しても問題ないはずだよ。

貴子:パソコンをリセットしてみましょう。そうすれば,新しく設定情報をもらい直すはずよ。

宇田:そう思って,パソコンをリセットしておいたよ。でも,さっきと同じIPアドレスが割り当てられているよ。

貴子:それは変ね。DHCPサーバーから割り当てられるIPアドレスがいつも同じになるなんて…。もう一度試してみてよ。

宇田:何回やっても同じだよ。ほら,IPアドレスは最初に割り当てられたときと同じ192.168.0.10だよ。

 WindowsXPなどでは,DHCPで割り当てられたIPアドレスを記録しておく。そして次の接続時には,同じIPアドレスを割り当ててもらうために,DHCPディスカバー・パケットにIPアドレスを記入して送信する。それを受け取ったDHCPサーバーは,そのIPアドレスをほかの機器に割り当てていなかったら,要求されたIPアドレスを割り当てる。

別のパソコンをつないでみる

宇田:先輩に聞いたら,わかったよ。パソコンの電源を落としても,以前に割り当てられたIPアドレスが記録されていて,同じIPアドレスを割り当ててもらうようにDHCPデスカバー・パケットを送信するんだ。だから,毎回同じIPアドレスになるんだよ。

貴子:ということは,同じパソコンを何度リセットしても結果は同じね。宇田くんのノート・パソコン(PC2)をつないでみましょうよ。

宇田:うん,それはいい手だ。パケットもキャプチャするよ。

貴子:どう?

宇田:僕のパソコンには不正DHCPサーバーからIPアドレスが割り当てられたみたいだ。IPアドレスが172.16.0.10になっているよ。パケットのキャプチャ結果を見ると,5個のパケットをやりとりしていたみたいだ。

貴子:でも,やりとりの順番が少し変わっているわよ(図3b)。今回は,PC2からDHCPリクエストを送信したあとで,正規サーバーからのDHCPオファーが届いているわ。

宇田:PC2は不正サーバーからのオファーに対してリクエストしたあとに,正規サーバーからのオファーを受信したんだ。これじゃ,正規サーバーのオファーを採用できないね。

どのオファーを採用するか

 2台のDHCPサーバーからIPアドレスを取得する流れを確認しておこう。

 パソコンはDHCPディスカバー・パケットをLAN全体にブロードキャストする。すると,DHCPサーバーから応答(DHCPオファー)が返ってくる。 このとき,パソコンは後に受信したDHCPオファー・パケットの内容を採用する*。そして,このオファーに対してDHCPリクエスト・パケットを送信し,これを受け取ったDHCPサーバーがDHCPアックを返す(図4a)。

 つまり,不正サーバーからのDHCPオファーが正規サーバーからのものより先に届くと,不正サーバーからのオファーは無視される。

 しかしタイミングがずれて,パソコン側がすでにDHCPリクエストを送ったあとに正規サーバーからのオファーが届くと,今度は正規サーバーからのオファーを無視してしまう(図4b)。この結果,パソコンには変なIPアドレスが割り当てられることになる。


寄稿者:ネットワークエンジニア集団 みずおか組

●水岡 祥二 NPOアイタック代表理事
●出口 雄一 株式会社タケキ IT教育事業部
●久保 幸夫 情報・通信エンジニア