【UNIXコマンド】pingとオプションの使い方

UNIXコマンド「ping」とそのオプションの使い方についてまとめました。

【はじめに】pingコマンドとは

pingコマンドは、ネットワーク上にあるパソコンやルーターに対して信号(パケット)を送り、正しく届いて返答が行われるかを確認するための機能です。
(pingテスト、ping試験などと言われたりもします)

これを使うことで、ネットワークトラブル時に物理的に原因があるのかどうかがわかります。

【pingコマンド】オプション

pingコマンドは通常「ping + 宛先IPアドレス」で実行しますが、この後にオプションの値を変えてやることで、ping試験の設定を変更できます。
以下のようにオプションを追加することで、設定を変更してping試験することができます。

ping[ -t][ -a][ -n 試行回数][ -l パケットサイズ][ -f][ -i TTL][ -v TOS][ -r ルータ個数][ -s ルータ個数][[ -j ゲートウェイリスト]|[ -k ゲートウェイリスト]][ -w タイムアウト時間] 確認したい対象のIPアドレス、もしくはホスト名
オプション 説明
-L マルチキャストのループ制限を実行
-R tracerouteのように途中で経過するルータの情報も復路も含めて取得できます。(最大9個)
【ping -r】tracerouteのように通過ルートを確認(戻りも)
-d パケットのSO_DEBUGオプションを指定
-f Flood pingモードを指定
-n 出力はIPアドレスのみ
-q 途中経過を非表示)
-r ルーティングテーブルを無視し、指定ホストに直接パケットを転送(同一の物理ネットワーク上に目的のホストがない場合はエラーを出力)
-v 詳細モード(通常は無視される他のICMPパケットも表示)
-c パケット送受信の回数(試行回数)を指定
-i 送信パケットの間隔時間(デフォルトは1秒。-fオプションと同時に指定できない
-w コマンドの起動時間[秒]を指定
-p パケットのパディング(埋め合わせ)データのパターンを指定(例:「ff」はすべてのデータを「1」で埋める)
-s パケットのデータ部サイズの指定(初期設定では56バイト)
-t パケットのTTLを指定された値に設定(値を指定しないとユーザーが中断するまで繰り返し実行)
-I 指定されたインターフェイス(IPアドレス or ネットワークカード名)で実行

【利用例】ping試験

例えば以下のようにpingを実行すると次のようなメッセージが帰ってきます。

ping google.co.jp

google.co.jp [2404:6800:4004:81a::2003]に ping を送信しています 32 バイトのデータ:
2404:6800:4004:81a::2003 からの応答: 時間 =85ms
2404:6800:4004:81a::2003 からの応答: 時間 =80ms
2404:6800:4004:81a::2003 からの応答: 時間 =84ms
2404:6800:4004:81a::2003 からの応答: 時間 =100ms

2404:6800:4004:81a::2003 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 80ms、最大 = 100ms、平均 = 87ms
用語 解説
TTL(Time To Live) IPパケットにおける「生存時間」
時間[ms] パケットを送信してから受信するまでにかかった時間

ping試験の結果、パケットを4回送信、4回受信し、失敗は0%でm通信が成功ネしており、google.co.jpまでのネットワークが物理的に正常動作していることになり、「自身のホスト、対象ホスト、及びその間になるネットワーク機器の設定、稼働状態」に問題ないことが判断できます。
逆にいうと、pingコマンドでエラーが出れば、そのいずれかに問題があることがわかり、問題を切り分けることができます。
ネットワーク障害が発生した際に、自身のホストに近い順にネットワーク機器のIPアドレスを指定してping試験を実施していくことで、どのネットワーク機器に問題があるのか特定することができます。

関連記事
1 【ping疎通試験】ネットワーク障害・エラーの原因を調べる
2 【UNIX入門】コマンド・サンプル集
関連記事