図1 2台のネット機器に同じIPアドレスを割り当てたら? ファイアウォール装置(米ウオッチガード・テクノロジーズのWatchGuard SOHO)2台に同じIPアドレスを割り当て,1台だけ(ファイアウォールA)をインターネットにつないだら,パソコンはインターネットにアクセスできるだろうか。
図1 2台のネット機器に同じIPアドレスを割り当てたら? ファイアウォール装置(米ウオッチガード・テクノロジーズのWatchGuard SOHO)2台に同じIPアドレスを割り当て,1台だけ(ファイアウォールA)をインターネットにつないだら,パソコンはインターネットにアクセスできるだろうか。
[画像のクリックで拡大表示]
図2 pingは何度試しても,きちんと応答が返ってきた パソコンをリセットしたり,時間を空けても,ファイアウォールにあてたpingコマンドの応答はきちんと返ってきた。
図2 pingは何度試しても,きちんと応答が返ってきた パソコンをリセットしたり,時間を空けても,ファイアウォールにあてたpingコマンドの応答はきちんと返ってきた。
[画像のクリックで拡大表示]
図3 Webアクセスしてみたら,ページが表示できるときとできないときがあった Webアクセスはできるときと,できないときがあった。そこでarpコマンドを使って,パソコンのARPキャッシュの内容を調べてみた。
図3 Webアクセスしてみたら,ページが表示できるときとできないときがあった Webアクセスはできるときと,できないときがあった。そこでarpコマンドを使って,パソコンのARPキャッシュの内容を調べてみた。
[画像のクリックで拡大表示]
図4 pingの応答が返ってきたわけ 同じIPアドレスを割り当てたファイアウォールにpingパケットを送ったら,キチンと応答が返ってきた。やりとりしたパケットの中身を調べたら,応答を返していたファイアウォールが途中で切り替わっていた。
図4 pingの応答が返ってきたわけ 同じIPアドレスを割り当てたファイアウォールにpingパケットを送ったら,キチンと応答が返ってきた。やりとりしたパケットの中身を調べたら,応答を返していたファイアウォールが途中で切り替わっていた。
[画像のクリックで拡大表示]


若手部員 貴子さん
  Windowsマシン2台に同じIPアドレスを割り当てても,重複したことをWindowsが検出してくれたけれど,ネットワーク機器の場合はどうなるのかしら?  

若手部員 宇田くん
  機器がピーピー鳴ったり,ランプが点滅するかも知れないよ。でも,きちんと調べて,実際に試してみないとわからないなぁ。  


貴子:なに,ぼーっとしているの。暇なら会議の資料作りを手伝ってよ。

宇田:ぼーっとしていたわけじゃないんだよ。この前の実験で,Windowsマシン2台に同じIPアドレスを割り当てたら,Windowsが重複していることを検出してくれただろう。でも,ルーターやファイアウォール装置のようなネットワーク機器の場合はどうなるのか,考えていたんだよ。

 前回の記事で確かめたように,WindowsやMac OSは,自分が利用しようとするIPアドレスがほかと重複していないかを事前に調べる。

 しかし,IPアドレスを持っているのはパソコンだけではない。家庭向けのISDNルーターやブロードバンド・ルーター,ファイアウォール装置など,さまざまなネットワーク機器もIPアドレスを持つ。今回は,こうした機器に同じIPアドレスを割り当てたらどうなるか,というオキテ破りを実験で確かめてみることにしよう。

■重複を確かめない機器もある

貴子:どう? 何かわかった?

宇田:機器メーカーのWebページなどを調べてみたんだけれど,自分自身に割り当てられたIPアドレスがほかと重複していないかを確かめないネットワーク機器が多いようだよ*

貴子:そうなの。じゃあ,実際に同じIPアドレスが割り当てられたネットワーク機器がLAN上に2台存在することもあり得るわね。そうなったら,やっぱり問題が起こるのかしら?

宇田:ダメそうだけれど,なんとかなるんじゃない?

貴子:重なったら通信できないわよ。

宇田:自信がありそうだな。

貴子:常識でしょ。本にもダメだと書いてあるわよ。

宇田:同じIPアドレスの機器が2台あっても,どちらか片方とは通信できるんじゃないかな。

貴子:じゃあ,試してみましょうよ。

宇田:よし,わかった。

 今回の実験では,パソコン1台と,ファイアウォール装置2台を使うことにした(図1 )。2台のファイアウォール装置には米ウオッチガード・テクノロジーズ社のWatchGuard SOHO*を使った。これらは,自身に割り当てられたIPアドレスがほかの機器と重複していないかを確認しない。

 パソコンにはIPアドレスとして192.168.1.1,デフォルト・ゲートウエイ*として192.168.1.254を割り当てた。次にファイアウォールAだけをつなぎ,IPアドレスとして192.168.1.254を割り当てた。また,ファイアウォールAはインターネットとも接続し,この状態ではパソコンからインターネットのWebページが正しく表示できるようにした。

 さらに,もう1台のファイアウォールBにもAと同じIPアドレス(192.168.1.254)を割り当てた。ただし,ファイアウォールBはインターネットとつないでいない。これでパソコンから見ると,デフォルト・ゲートウエイがファイアウォールAとBの2台あることになる。

■pingは問題なく通った

宇田:実験環境は作ったよ。実際に試してみよう。

貴子:じゃあ,パソコンのデフォルト・ゲートウエイになっているファイアウォールと通信できるかを,pingコマンド*で確かめてみましょう。

宇田:お,やっぱり通信できるじゃないか。きちんと,応答が返ってきているよ(図2)。今回は貴子さんの予想がはずれたね。

貴子:え~。そんなはずはないわよ。もう一度確認してみてよ。

宇田:何度試してみても,結果は同じだよ。ほらね。

貴子:まだ納得できないなぁ。

宇田:でも実際に「Reply from ・・・」という応答が表示されているんだから,通信できているのは確かさ。

 pingコマンドは,Windowsのコマンド・プロンプトから

  ping <IPアドレス>
のように実行する。相手がネットワークにつながっていれば,「Reply form ・・・」のようなメッセージが表示され,つながっていなければ「Request timed out.」といったメッセージが表示される。

 この実験では,2台のファイアウォール装置に同じIPアドレスを割り当て,そのIPアドレスに対してpingコマンドを実行したが,問題なく応答が返って来た。

■Webアクセスができないことも

貴子:じゃあ,パソコンから実際にWebアクセスできるのかしら。これができるんだったら,今回の私の予想がはずれだったと認めるわ。

宇田:往生際が悪いなあ。試してみればいいんだろう。

貴子:うん。お願い。宇田:Webブラウザを起動して,「http://・・・」。あれ,ダメだ。エラーが表示されるぞ(図3(a))。

貴子:ほらね。やっぱり,つながらないのよ。私は資料作りで忙しいから,実験した機器を片づけておいてね。

宇田:うーむ。わかったよ。でも,pingは通ったのになぁ。

 <しばらくしてから…>

宇田:お,Webブラウザのリロード・ボタンをクリックしたら,Webページが表示されたぞ(図3b)。おーい,貴子さん,こっちに来てくれよ。

貴子:何よ,忙しいのに。

宇田:ほら,Webページが表示されたよ。エラーが表示されたときから,構成や設定は変えていないよ。

貴子:あら,本当ね。どうして,Webページが表示されるときと,エラーが出るときがあるのかしら。

■つながる機器が時によって変わる

 Webアクセスでエラーが出たり,出なかったりしたのはなぜだろうか。

 それには,パソコンが記憶しているARP*キャッシュを調べればよい。ARPは通信相手のIPアドレスに対するMACアドレス*を調べるプロトコルである。LAN全体に届くブロードキャスト・パケットの中に相手のIPアドレスを入れてARPパケットを送ると(ARP要求),そのIPアドレスが割り当てられているネット機器からMACアドレスを知らせる応答(ARP応答)が返ってくる。パソコンは,このやりとりで得たIPアドレスに対応するMACアドレスの対応表をメモリーに一時的に記録する。これがARPキャッシュである。

 ARPキャッシュの内容を調べるには,Windowsのコマンド・プロンプトから

  arp -a
と打ち込む。図3のように,Webアクセスに失敗したときのARPキャッシュの内容は,IPアドレスが192.168.1.254の機器のMACアドレスは00-09-7f-0f-e6-acになっている。これはファイアウォールBのMACアドレスである。つまり,Webアクセスに失敗したときは,インターネットにつながっていないファイアウォールBにアクセス要求パケットを送っていたのである。

 一方,Webアクセスに成功したときのMACアドレスは00-09-7f-0f-e9-88である。インターネットにつながっているファイアウォールAに,パソコンがアクセス要求パケットを送っていたのである。

■途中で通信相手が変わっていた

宇田:先輩に聞いてみたら,Webアクセスができたり,できなかったりした理由は,ARPキャッシュの内容の違いだとわかったよ。

貴子:でも,どうしてARPキャッシュの内容が違うことがあるのかは,わからないわ。それにpingではきちんと応答が返ってきていたし・・・。

宇田:パケット・キャプチャ・ソフト*で,pingコマンドを実行したときにやりとりしたパケットを詳しく調べてみよう。

貴子:全部で11個のパケットがやりとりされているみたいね(図4)。

宇田:最初はARP要求パケットがLAN全体に届くブロードキャストの形でパソコンから送出されているよ(1)。そのあとで,ARP応答が2回返ってきているみたいだな(2,4)。

貴子:その間にping要求(ICMP*エコー要求)も出ているわ(3)。

宇田:送信元やあて先のMACアドレスが違うみたいだよ。

貴子:最初のARP応答(2)はファイアウォールAから返ってきていて,これを基にパソコンがping要求パケットをファイアウォールAに送っているみたいね。でも,2回目以降のping要求パケット(6,8,10)はファイアウォールBあてになっているわ。

宇田:どうして,あて先が変わっているんだろうか。不思議だね。

貴子:えっと,たぶん1回目のping要求と,2回目のping要求の間でファイアウォールBがARP応答パケット(4)を返信しているからよ。

宇田:ということは,このARP応答パケットがキッカケになって,あて先が切り替わっているのかな。

 もう少し詳しく見ておこう。パソコンがARP要求パケットを送ると(1),まずファイアウォールAからARP応答パケットが返ってくる(2)。この時点のパソコンのARPキャッシュには,192.168.1.254に対するMACアドレスはファイアウォールAのMACアドレスが登録されるので,ping要求はファイアウォールAあてになる(3)。
 ところが,このあとでファイアウォールBからもARP応答パケットがパソコンに返ってくる(4)。すると,パソコンのARPキャッシュの内容が書き換わり,192.168.1.254に対してはファイアウォールBのMACアドレスが登録される。このため,2回目以降のping要求パケットはファイアウォールBあてになる。
 ただし,どちらのファイアウォール装置もLANにきちんとつながっているので,ping応答パケットはパソコンに返る(5,7,9,11)。つまり,pingコマンドでは,2台のファイアウォール装置が同じIPアドレスになっていても,エラーは起こらないのである。


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

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