日頃、仕事でもプライベートでも、ネットワークで不具合があった時に、一番良く使うコマンドです。
「Pingコマンド」
ITを職業としている方は、知らない人はいないと言われるくらい使用するコマンドですが、ITに関わらない方々にとっては、コマンドプロンプトを開いて実施する「コマンド」は敷居が高い操作です。
今回は、そんなコマンドの中から「pingコマンド」の使い方について、書きたいと思います。
『Ping』コマンド使用の目的
pingコマンドは、ネットワーク疎通を確認したいホストに対してIPパケットを発行し、そのパケットが正しく届いて返答が行われるかを確認するためのコマンドです。
Pingコマンドを使用する目的はいくつかあります
ここでは、Pingコマンドで確認可能な項目を、以下にご紹介します。
コマンドを使用する想定の環境は以下です。

目的1:自分の端末と通信したいホストと疎通確認
使用コマンド
ping 192.168.1.254
コマンド結果
疎通OKの場合

疎通NGの場合(ホストはいるが応答を返さない為タイムアウト)

ただし、PingがOKでもその他の通信ができない場合があります
例えば、Ping応答OKだけど、ファイルアクセスができないなどの場合です
その逆もあります
宛先ホストのファイアウォールや、経路でドロップされている場合もありますので、Pingは疎通を確認する手段で、通信すべてを確認するものではありせんので、ご注意ください。
ただし、通信でできない不具合時は、最低限実施をするのが『Pingコマンド』です。
目的2:通信したいホストとの間で遅延確認
先程と同じ構成で実施した、以下pingコマンドの結果から、状況を確認します。
使用コマンド
ping 192.168.1.254
コマンド結果
結果に表示される、「時間(返答時間)」について確認します。
同じLAN内なので数msで応答がある。遅延はほぼない事が確認できました。

試しに、海外YahooサイトへPingを打つと・・
海外のサイトだと応答が数十msと遅い、若干遅延がある事が確認できます。

ただし、それがアプリケーションの使用に影響があるかどうかは別です。
どうも『インターネットが遅い』時などの、参考値として測定する事は有効のようです。
例えば、Googleへのインターネットアクセスが遅い場合、
下の図のように、近い順にpingを打っていき、応答の遅い区間を調べます。
そこから、ボトルネックを探っていきます。

目的3:適切なパケットのMTU値を探る
よく拠点間でVPN接続したりすると、「つながっているけど、遅い」という事があり、原因はいろいろありますが、MTU値が影響しているケースがあります。
pingは適切なMTU値を探る場合に有効です。
例えば、LAN内のMTU値をしらべる場合、まず、LAN(イーサネット)のMTU値を考えます。

- イーサネットフレームのMTU値は1500byte
- データ部の中に、IPヘッダ(20byte)、ICMPヘッダ(8byte)がある
- 純粋なデータサイズは、1500-20-8=1472byte
以下、ゲートウェイのルーターに実施したpingコマンドの結果から、状況を確認します。
使用コマンド
Pingで送るパケットサイズを、ギリギリの1472byteで送ります。
ping -f -l 1472 192.168.1.254
コマンド結果
100%成功かつ、応答時間も数msの為、全く問題ない事が分かります。

次に、pingで送信するパケットサイズを大きくしてみます。
使用コマンド
Pingで送るパケットサイズを、1byte増やして、1473byteで送ります。
ping -f -l 1473 192.168.1.254
コマンド結果
1byte大きくしただけで、パケットが分割できずpingが失敗します。

以上から、LANのMTUサイズは『1472byte』とわかります。
例えば、インターネットアクセス時のMTU値をしらべる場合
おそらく、LANの中でMTU値を意識することはなく、意識するのはWANにアクセスする場合です。
今度はインターネットアクセス時のMTU値を探っていきたいと思います。
インターネットアクセス(PPPoE)のMTU値は・・
- フレッツ回線での、PPPoEフレームのMTUサイズは1454byteと決まっています
- データ部の中に、IPヘッダ(20byte)、ICMPヘッダ(8byte)がある
- 純粋なデータサイズは、1454-20-8=1426byte
以上から、Pingコマンドで確認してみます。
使用コマンド
Pingで送るパケットサイズを、計算上ギリギリの1426byteで、Google DNS(8.8.8.8)に送ります。
ping -f -l 1426 8.8.8.8
コマンド結果
100%成功かつ、応答時間も早く、全く問題ない事が分かります。

次に、pingで送信するパケットサイズを大きくしてみます。
使用コマンド
Pingで送るパケットサイズを、1byte増やして、1427byteで送ります。
ping -f -l 1427 8.8.8.8
コマンド結果
1byte大きくしただけで、分割できずpingが失敗します。
断片化が必要とゲートウェイ機器が、言っていることが分かります。

覚えておくと、「通信できない」や「遅い」時に、ネットワーク機器に設定する
適正なMTU値を測る事ができます。
『Ping』コマンドの結果からわかる事
次に、Pingを実行したさいに表示される、結果について、書きたいと思います。
Pingコマンド結果
結果1.「Reply from XXX.XXX.XXX.XXX: bytes=32 time<Xms TTL=XXX」
分かる事:宛先へ疎通がある。Pingが成功している
下の例の場合、
宛先:192.168.1.151に対してPing成功
サイズ:32byteのパケット送信(デフォルト)
タイム:パケット受信まで1ms以下
TTL:ルーターを超えてないのでTTLは128のまま減っていない(デフォルト)

結果2.「Request time out.」
分かる事:宛先から応答が返ってこない(最も良くあるエラー)
考えられる原因、
- 宛先のファイアウォール設定などで、ドロップされている
- 宛先が停止している、いないなど
結果3.「Reply from XXX.XXX.XXX.XXX: Destination host unreachable.」
分かる事:ルーティング不可

考えられる原因、
- 192.168.1.254(ゲートウェイ)が転送出来ないと返している。転送先場合ルータが停止している等
- ルーティングテーブルはあるが、転送出来ない。ルーティングテーブルの記述が違っている等
結果4.「Reply from XXX.XXX.XXX.XXX: TTL expired in transit.」
分かる事:ルーティングループ
考えられる原因、
- ルーティング設定の間違いなどで、ルーティングループが発生している
以上になります。
Pingコマンドは、ネットワークトラブルシューティングでは必須です。
是非ご参考ください!
コメント