ネットワークエンジニアを本格的に目指すわけではないけれども、簡単なネットワークの構築やトラブル対応は自分でもできるようになりたい。
そんな新人ITエンジニアのための記事です。
疎通確認を行うpingコマンド
pingコマンドとは
「ping」コマンドを使って、あなたのコンピュータのネットワークカードと、通信相手のネットワーク機器との間の経路に異常がないかどうかを確認することができます。
この確認を「疎通確認」といいます。
ちなみに「ping」は「ピン」または「ピング」と読みます。
一説にはピンポン(卓球)の「ping pong」から来ているという話があります。
その名の通りパケットが行き来して通信相手との疎通確認を行うのです。
例えば、次の様なトラブル時に「ping」コマンドが活躍します。
- パソコンから社内のファイルサーバーにアクセスできない
- パソコンからインターネットにつながらない
そんな時に
- 自分自身のパソコンにpingを打つ
- 同一LAN内の隣のパソコンにpingを打つ
- 中継しているルーターにpingを打つ
- 社内と社外を隔てているファイアウォールにpingを打つ
- 社外のWebサーバーにpingを打つ
このように自分の近くの機器から遠くの機器に順番にpingを打つことによって疎通確認を行い、問題個所を特定していきます。
コマンド書式
>ping “IPアドレスまたはドメイン名”
コマンドプロンプト上で、上記のコマンドを入力して[Enter]キーを押します。
IPアドレスまたはドメイン名”には、疎通確認したい機器のものを入力します。
まず、最初に自分のパソコンのネットワークカードのTCP/IPが正常かどうかを確認するにはループバックアドレスにpingを打ちます。
ループバックアドレスとは、そのコンピュータ自身を示すIPアドレスです。
ループバックアドレスを指定するには、一般的には「127.0.0.1」(IPアドレス)または「localhost」(ドメイン名)と入力します。
なお、「127.0.0.1」と「localhost」はこのあとWebアプリケーションを学ぶ際にも出てくるのでこの機会に覚えてしまいましょう。
「ping」を実行すると、コマンドプロンプトに実行結果が以下のように表示されます。
疎通が確認できた例
下図3.1は疎通が確認できた例です。
pingコマンドは通常、疎通確認のパケットを4回送信します。
通信が良好であれば、上の例の様に受信と送信は同じ4回になります。
「バイト数」「時間」「TTL」の値が表示されます。この「時間」からはネットワークの遅延状況なども確認できます。
最後に統計データも表示されます。
なお、最後のTTLとは、Time To Liveの略です。
TTLは、ルーティングするごとに減算され、0になったパケットはそれ以上ルーティングされずに破棄されます。
これにより、行き先がわからなくなったパケットが永久にネットワーク上をさまよう無限ループを防ぐ仕組みです。
送信に対して受信が少なくなることがあります。
それは以下のような場合です。
- 疎通確認したい通信相手がセキュリティーの観点からICMP(Internet Control Message Protocol)を無効化している
- 通信経路の途中に通信状態が悪い場所がある
とくに1番目の「ICMPを無効化」というのは多い原因です。
悪意を持った通信相手のping送信にも応答しないように設定することで、通信可能な端末の存在を教えないマシンは多数存在しています。
インターネット技術の標準的な仕様まとめたRFC 1122 では、どのホストもICMPを有効にする必要があると規定しているのですが、これが実際です。
疎通が確認できなかった例
下図3.2は存在しないIPアドレスに対してpingコマンドを打ったときの表示例です。
「ping」で指定した通信機器と通信できなかった場合、上記の様に「要求がタイムアウトしました。」と表示されます。
疎通できるまでpingを打ち続けるという「t」オプションがあります。
コマンド書式
>ping -t “IPアドレスまたはドメイン名”
コマンドプロンプト上で、上記のコマンドを入力して[Enter]キーを押します。
延々とパケットを送り続けることができます。
※ただし、pingを打ち続けることは通信相手の負荷になり、場合によっては攻撃とみなされることがあります。
乱用は慎みましょう。
pingコマンドのオプション
Windowsのping
コマンドには例えば以下のようなオプションがあります
-t
: Pingはユーザーが中断するまで続けられます。-a
: 対象のIPアドレスに対応するホスト名が表示されます。-n count
: Pingが送信するエコーリクエストの数を指定できます。デフォルトは4回です。-l size
: Pingが送信するエコーリクエストメッセージのデータ部分のサイズ(バイト単位)を指定できます。デフォルトは32バイトです。-f
: 「Don't Fragment」フラグを設定し、パケットがフラグメント化されるのを防ぐことができます。-i TTL
: エコーリクエストメッセージの「Time to Live」を指定できます。
これらのオプションは、コマンドラインの後にスペースを空けて記述します。たとえば、「10回だけパケットを送信する」場合は以下のようになります。
ping -n 10 saycon.co.jp
「ping」のまとめ
pingコマンドを使って疎通確認をすることができます。
通信がうまくいかないときは近くのマシンから遠くのマシンに順番にPingを打ち続けることにより、問題個所を特定することができます。
メッセージに日本語で"転送中にTTLが期限切れになりました"、もしくは、英語で"TTL expired in transit"と出ることがあります。
先に見たTTLが0になってしまった場合です。
素直に考えるとその原因は経由するルーターなどのネットワーク機器数がTTLを超えているということですが、パケットがネットワークの中をぐるぐると回っている可能性が高いです。
これをルーティングループと言います。
そのようなときに役に立つのが次にご紹介する「ネットワーク経路をリスト表示するtracertコマンド」です。
ネットワーク 目次 に戻る
IT企業向け新人研修おすすめ資料 無料公開中 (saycon.co.jp)