図1 サブネット・マスクの設定間違いがLANを遅くしていた? PC1のサブネット・マスクの設定が間違っていた。ここを正しい値に設定すると,LANが遅くなることはなくなったが,どうしてなのだろうか。
図1 サブネット・マスクの設定間違いがLANを遅くしていた? PC1のサブネット・マスクの設定が間違っていた。ここを正しい値に設定すると,LANが遅くなることはなくなったが,どうしてなのだろうか。
[画像のクリックで拡大表示]
図2 ルーターがあると,pingが通った PC1からPC2にあてにpingコマンドを実行すると,ルーターがない環境ではエラーが表示されたが,ルーターがある環境だと応答が問題なく返ってきた。
図2 ルーターがあると,pingが通った PC1からPC2にあてにpingコマンドを実行すると,ルーターがない環境ではエラーが表示されたが,ルーターがある環境だと応答が問題なく返ってきた。
[画像のクリックで拡大表示]
図3 pingが成功したときにやりとりされたパケットを見てみたら ルーターがあるとき,PC1からPC2へあてたpingの応答は返ってきたが,そのときにやりとりされたパケットは少し特殊だった。
図3 pingが成功したときにやりとりされたパケットを見てみたら ルーターがあるとき,PC1からPC2へあてたpingの応答は返ってきたが,そのときにやりとりされたパケットは少し特殊だった。
[画像のクリックで拡大表示]
図4 PC1とPC2のやりとりはルーターが中継していた 図のようなやりとりになっていたため,LANを流れるトラフィックは通常の2倍になり,ルーターにも大きな負荷がかかっていた。
図4 PC1とPC2のやりとりはルーターが中継していた 図のようなやりとりになっていたため,LANを流れるトラフィックは通常の2倍になり,ルーターにも大きな負荷がかかっていた。
[画像のクリックで拡大表示]


若手部員 宇田くん
  お客様のネットワークで,たまにLANが遅くなると言われて調査に出向いたんだけれど,原因がよくわからないんだ。1台のパソコンのサブネット・マスクを正しく設定し直したら,問題は解決したんだけど・・・。  

若手部員 貴子さん
  サーバーやLAN自体には問題はなかったんでしょう。サブネット・マスクの設定ミスでLANが遅くなったりするのかしら。前回もサブネット・マスクの設定ミスを試してみたけれど,もう一度試してみましょうよ。  


宇田:うーん。

貴子:どうしたの。

宇田:お客様のLANがときどき遅くなるということで,調査したんだけれど,原因がさっぱりわからないんだ。

貴子:通信量がLANの許容量を超えて応答が悪くなっただけじゃないの?

宇田:そうじゃないんだ。設計上は十分対応できる範囲なんだ。サーバー・マシンなどの性能も十分だったし・・・。

貴子:それじゃあ,まだ対策もできていないの?

宇田:実は,サブネット・マスク*の設定を間違えていたパソコンが1台あって,それとほかのパソコンの間で大きなファイルをやりとりしたら,LANが遅くなっていたんだ。それで,パソコンのサブネット・マスクを正しく設定し直したら,問題は発生しなくなったんだよ。だから,対策はできたんだけれど,原因がわからないんだよ。これじゃあ,報告書が書けないよ。

貴子:サブネット・マスクの設定を間違っていたパソコンは,ほかと通信できていたの。

宇田:どこまで通信できていたかは突き止めていないけれど,「ほとんどは通信できていて支障はなかった」といっていたよ。でも,言われてみれば,変な話だな。

貴子:じゃあ,その設定を再現して実験してみましょうよ。

 前回のこの連載コラムで,サブネット・マスクの設定が間違っていても,通信できる場合があることを確認した。今回は,その続きである。

■通信できないはずが・・・

貴子:設定は控えてある?

宇田:設定ミスしたパソコン(PC1)のIPアドレスは192.168.0.1,サブネット・マスクは255.255.255.0,デフォルト・ゲートウエイ*のアドレスは192.168.0.254だったよ(図1)。このパソコンは,主にPC2と大きなファイルをやりとりしていて,そのときにLANが遅くなっていたみたいなんだ。PC2のIPアドレスは192.168.1.2,サブネット・マスクは255.255.0.0,デフォルト・ゲートウエイのアドレスは192.168.0.254だよ。

貴子:じゃあ,パソコン2台をリピータ・ハブにつないで試してみましょう。

宇田:でも,それって前回のテストで調べたのと同じだよ。PC1からPC2あてにping*コマンドを実行すると,PC1はPC2が自分と同じネットワークにいないと判断してエラーになるはずだよ。

貴子:そうね。前回もやったけれど,PC1の内部処理を考えると,相手のIPアドレス(192.168.1.2)と自分に設定されているサブネット・マスクから,相手のネットワーク・アドレスは192.168.1.0だと算出するわ*。一方,自分のネットワーク・アドレスは192.168.0.0だから,PC2は同じLANにいないと判断するわけね。

宇田:ほら,pingコマンドの結果も,「Distination host unreachable.」とエラーが出ているよ(図2(1))。

貴子:でも,お客さんのLAN環境では,つながったんでしょう。

宇田:そうなんだよ。あちらでpingコマンドを試したときは,きちんとつながったよ。

貴子:私たちで作った実験環境は,お客さんのLAN環境と違うのかしら?

宇田:うーむ。

■ルーターの有無で挙動が変わる?

 読者のみなさんは,宇田くんが出向いたお客さんのLAN環境と,実験環境の違いに気づいただろうか。

 それはデフォルト・ゲートウエイの有無である。実験環境のようにデフォルト・ゲートウエイがない環境で,PC1からPC2へpingコマンドを実行するとエラーになる。

 では,デフォルト・ゲートウエイがあると,どうなるのだろうか。話を先に進めよう。

貴子:少し冷静になって考えてみたんだけれど,デフォルト・ゲートウエイは関係しないかしら。実験環境ではデフォルト・ゲートウエイを無視していたでしょう。

宇田:デフォルト・ゲートウエイって,LANとインターネットやLAN同士の境界に置くルーターのことだろう。PC1とPC2は,同じLANでつながっているから関係なさそうだけどな。

貴子:でも,パソコンは自分がつながっているLANにいない相手へパケットを届けるときには,デフォルト・ゲートウエイに転送を任せるのよ。だから,実験環境にデフォルト・ゲートウエイを加えると,PC1はPC2へpingパケットを送ろうとしてデフォルト・ゲートウエイにパケットの転送を任せるんじゃないかしら。

宇田:お! それは名推理かもしれないぞ。ルーターもつないでテストしてみよう。

■ルーターがパケットを転送

貴子:ルーターをつないだわ。さっそく,pingコマンドを試すわよ。「ping 192.168.1.2」と。

宇田:どう?

貴子:応答が返ってきたわ。通信できているみたいよ(図2(2))。

宇田:逆に,こちらからpingを打ってみよう。「ping 192.168.0.1」と。

貴子:うまくいった?

宇田:うん。通信できているよ。

貴子:ところで,今のやりとりをキャプチャ*しておいてくれた?

宇田:もちろん。こっちで見てみよう。まずPC1からPC2にあててpingコマンドを実行したのが,これだよ(図3)。

貴子:最初はデフォルト・ゲートウエイにpingパケットを送っているわね。私の推測通りだわ。あて先MACアドレス*(キャプチャ画面では「送信先ステーションアドレス」)が,デフォルト・ゲートウエイになっているルーターのものだから,キャプチャ結果を見れば確認できるでしょう(図3(1))。

宇田:要するに,PC1はpingパケットをPC2へ送ろうとしたとき,PC2が同じネットワークにいないと判断して,ルーターに転送を任せているんだよね。

貴子:これを受信したルーターは,どうしたのかしら?

宇田:2番目のパケットを見てみるとわかるよ(図3(2))。ルーターがPC2へ転送しているよ。

貴子:ルーターは,あて先のPC2がPC1と同じLANにいると判断して,外部に転送しないで,内部に折り返したのね。ルーターに設定したサブネット・マスクは255.255.0.0で,IPアドレスは192.168.0.254だったから,ルーターとPC2のネットワーク・アドレスは,どちらも192.168.0.0と算出されるからよ。

宇田:ルーターはLANをまたがる通信を中継するものだと思っていたけれど,LAN内部の通信を中継することもあるんだ。

貴子:そうみたいね。

宇田:これでPC2にpingパケットが届いたわけだ。応答パケットの方はどうなっているかな。

貴子:あら,PC2はPC1に応答パケットを直接返信しているわ(図3(3))。

宇田:本当だ。PC2は,自分のネットワーク・アドレスは192.168.0.0だとあらかじめ計算していて,返信先のPC1のネットワーク・アドレスは192.168. 0.1と255.255.0.0(自分のサブネット・マスク)から192.168.0.0だとわかる。だから,PC1は同じLANにいると判断して,応答パケットをルーター経由ではなく,直接返信したんだ。

貴子:PC1からPC2に送信するときだけ,デフォルト・ゲートウエイを経由するのね。

宇田:つまり,PC1からPC2にパケットを送ると,2個のパケットがLANを流れるんだ。大容量のデータを送れば,LANがパンクしやすくなるね。

■通常の2倍のトラフィックが集中

 話を整理しよう。今回のケースでは,PC1からPC2へのパケットをデフォルト・ゲートウエイ(ルーター)が中継したことで,本来なら通信できないはずのPC1とPC2の通信が可能になってしまった。

 また,PC1からPC2へのパケットは,PC1→デフォルト・ゲートウエイ,デフォルト・ゲートウエイ→PC2とLAN上を2回流れる。この2台のパソコン間で大容量のファイルをやりとりすれば,本来流れる2倍のトラフィックが発生する。このため,LANが飽和して*,ほかの端末同士の通信が極端に遅くなったと考えられる。また,ルーターが転送処理に追われて,ほかのパソコンからのインターネット・アクセスが滞ったりもしたと考えられる(図4)。

宇田:だから,LANが極端に遅くなったりしたんだね。でも,設定ミスしたパソコンが大きなデータをやりとりしていなかったら,ほかから苦情が出ることもなくて,気づかなかったかもしれないね。

貴子:そうね。直接的な原因は単純だけれど,奥が深かったわね。じゃあ,頑張って報告書を書いてね。

宇田:あ,そうだった!


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

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