検索
連載

ping 〜ネットワークの疎通を確認するネットワークコマンドの使い方

pingは、ネットワーク疎通を確認したいホストに対してIPパケットを発行し、そのパケットが正しく届いて返答が行われるかを確認するためのコマンドだ。この確認にはICMP(ICMPv6)またはUDPを用い、さまざまなエラーに応じたステータスを把握することも可能

Share
Tweet
LINE
Hatena

目的と用途

 pingは、ネットワーク疎通を確認したいホストに対してIPパケットを発行し、そのパケットが正しく届いて返答が行われるかを確認するためのコマンドだ。この確認にはICMP(ICMPv6)またはUDPを用い、さまざまなエラーに応じたステータスを把握することも可能。

 pingコマンドが正常に実行できれば、通常はホスト間のネットワークは正常であると判断される。また統計値を表示することで、基本的なネットワーク性能を簡易に計測することもできる。

 エラーが発生した場合には、何らかのネットワーク障害が発生していると考えられる。ただし、pingコマンドでもICMPパケットの返答内容からある程度のエラーの原因は把握できるものの、実際には、別の方法でも詳細に確認すべきであることに注意しよう。例えば、NICのハード障害なのかルーターの障害なのかの切り分けは、それぞれの機器を実際に確認しなければ、あくまで推測の域を出ないということだ。

 また、経路や相手ホストによっては意識的にICMPを拒否や破棄(ドロップ)しているかもしれない。あくまで、ネットワーク全体ではなくコマンドを発行したホストからの観測結果であることに留意しよう。

 なお、pingは一般的には「ピン」または「ピング」と発音される。

書式

Windows(Windows 10)の場合

IPv4/v6兼用

ping [-t] [-a] [-n 要求数] [-l サイズ] [-f] [-i TTL] [-v TOS] [-r ホップ数] [-s ホップ数] [[-j ホスト一覧] | [-k ホスト一覧]] [-w タイムアウト] [-R] [-S ソースアドレス] [-c コンパートメント] [-p] [-4] [-6] 疎通確認対象先ホスト(ホスト名またはIPアドレス)

-t ユーザーからの停止が要求されない限り、パケットの送受信を無限に繰り返す。途中で統計を表示しつつ続けるにはControl+Breakを、停止するにはControl+Cを押す
-a 指定された対象先ホストがIPアドレスであった場合にはホスト名を逆引きして表示する
-n パケット送受信の回数(試行回数)を指定する
-l パケットのデータ部サイズを指定する。デフォルトは32バイト
-f IPパケットの分割(フラグメント)を禁止する。IPv4のみ
-i パケットのTTL(Time To Live)を指定された値に設定する
-v パケットのTOS(Type Of Service)を指定された値に設定する。IPv4のみ。ただしもう使用されていない
-r IPパケットのオプション部(Route Recording)に経由したルーターのアドレスを記録する(最大9個まで)。IPv4のみ
-s IPパケットのオプション部(Time Stamping)に経由したルーターのアドレスと時間を記録する(最大4個まで)。IPv4のみ
-j 経由すべきゲートウェイ(ルーター)のアドレスを最大9個まで指定できる。ただし指定されていないゲートウェイも経由できる(loose source routed)。IPv4のみ
-k 経由すべきゲートウェイ(ルーター)のアドレスを最大9個まで指定できる。ただし指定されていないゲートウェイは経由しない(strict source routed)。IPv4のみ
-w タイムアウト時間を指定する。単位はミリ秒
-R IPv6においてヘッダに記録されたルーティング情報から逆ルートもテストする。ただしセキュリティ上の問題からRFC 5095において禁止された
-S 自身ではない別のホストを送信元ホストとして指定する。ただしもちろん結果は自身へは返ってこない。あくまで試験用オプション
-c ルーティング コンパートメント(VPN時にユーザーのインタフェースごとにルーティング情報を保持し、インターネットからのトラフィックを制御する機能)識別子を指定する
-p Hyper-V ネットワーク仮想化プロバイダーを指定する
-4 IPv4の使用を強制する
-6 IPv6の使用を強制する

Mac(macOS 10.12)の場合

IPv4用

ping [-AaCDdfnoQqRrv] [-b バインドインタフェース] [-c 試行回数] [-G Sweep最大データサイズ] [-g Sweep最小データサイズ] [-h Sweep加算データサイズ] [-i 間隔時間] [-k トラフィッククラス] [-K ネットサービスタイプ] [-l preloadパケット数] [-M mask | time] [-m TTL] [-P IPsecポリシー] [-p パディング・パターン] [-S ソースアドレス] [-s パケットサイズ] [-t タイムアウト時間] [-W 待機時間] [-z TOS] [--apple-connect] [--apple-print] 疎通確認対象先ホスト(ホスト名またはIPアドレス)

-A パケットロスの場合、ベル音を鳴らす
-a パケットを正常に受け取れた場合、ベル音を鳴らす
-C 携帯ネットワークのインタフェースの利用を禁止する(Apple独自オプション)
-D パケットの分割(フラグメント)を禁止する
-d パケットのSO_DEBUGオプションを指定する
-f Flood pingモードを指定する
-n 出力をIPアドレスのみに抑制する(ホスト名の逆引きを行わない)
-o 1パケットだけ正常に確認できたら終了する
-Q ICMPエラーメッセージは表示しない
-q 出力抑制モード。途中経過を表示しない
-R RECORD_ROUTEオプションを指定して、IPバケットのオプション部(Route Recording)に経由したルーターのアドレスを記録する(最大9個まで)
-r 通常のルーティングを無視して直接確認対象先ホストへパケットを送る。これはルーティングテーブルに記載されていないインタフェースからテストしたいときなどに利用できる
-v 詳細モード。通常は無視される他のICMPパケットも表示する
-b 複数のネットワークインタフェース(NIC)がある場合どのインタフェースをバインドするか名前(例えばen0など)で指定する
-c パケット送受信の回数(試行回数)を指定する
-G Sweep Ping時の最大データサイズ。ただし実際はICMPヘッダサイズ8バイトが付加される
-g Sweep Ping時の最小データサイズ。デフォルトは0。ただし実際はICMPヘッダサイズ8バイトが付加される
-h Sweep Ping時のデータへの加算データサイズ。デフォルトは1
-i 送信パケットの間隔時間(秒)。デフォルトは1秒。スーパーユーザーなら小数でも指定可能。-fオプションと同時に指定できない
-k RFC 2474に定義されるトラフィッククラスを指定する(Apple独自オプション)
-K トラフィッククラスとしてネットワークサービスタイプを指定する(Apple独自オプション)
-I 実際の送信処理前に極力早く指定された数のパケット(preload)を送信しておく。スーパーユーザーしか指定できない
-M ICMP_ECHOメッセージの代わりにICMP_MASKREQまたはICMP_TSTAMPを送信する。'mask'を指定するとICMP_MASKREQパケットを送信して確認対象先ホストのネットマスクを表示する。'time'を指定するとICMP_TSTAMPパケットを送信して起動時・送信時・受信時のタイムスタンプを表示する
-m パケットのTTLを指定された値に設定する
-P IPsecのポリシーを指定する
-p パケットのパディング(データの埋め合わせ)データのパターンを指定する。例えばffは全てのデータを1で埋めることを示す
-S 自身ではない別のホストを送信元ホストとして指定する。ただしもちろん結果は自身へは返ってこない。あくまで試験用オプション
-s パケットのデータ部サイズを指定する。デフォルトは56バイト
-t タイムアウト時間を指定するとされているが、実際には-cオプションと同様の動作となるようだ
-W 送信してから受信までどれだけ待機するかをミリ秒で指定する
-z パケットのTOS(Type Of Service)を指定された値に設定する
--apple-connect 指定された対象先ホストへ直接接続して実行する(Apple独自オプション)
--apple-time パケットの送信時刻を結果の各行に表示する(Apple独自オプション)

IPv6用

ping6 [-CDdfHmnNoqtvwW] [-a 検索タイプ] [-b バッファサイズ] [-B バインドインタフェース] [-c 試行回数] [-G Sweep最大データサイズ[,Sweep最小データサイズ[,Sweep加算データサイズ]]] [-g ゲートウェイ] [-h 最大ホップ数] [-I インタフェース] [-i 間隔時間] [-k トラフィッククラス] [-K ネットサービスタイプ] [-l preloadパケット数] [-P IPsecポリシー] [-p パディング・パターン] [-S ソースアドレス] [-s パケットサイズ] [-z トラフィッククラス] [--apple-connect] [--apple-print] [ホップス ...] 疎通確認対象先ホスト(ホスト名またはIPアドレス)

-C 携帯ネットワークのインタフェースの利用を禁止する
-D IPv6のフラグメンテーションを禁止する
-d パケットのSO_DEBUGオプションを指定する
-f Flood pingモードを指定する
-H 結果のIPアドレスから名前を逆引きしてホスト名で表示する
-m パケットのフラグメンテーションを禁止する
-n 出力をIPアドレスのみに抑制する(ホスト名の逆引きを行わない)
-N マルチキャストアドレスグループを取得する
-o 1パケットだけ正常に確認できたら終了する
-q 出力抑制モード。途中経過を表示しない
-t Echo Requestではなく、RFC 4620に規定されているICMPv6のノード情報検索を送信する。-sオプションは同時に指定できない
-v 詳細モード。通常は無視される他のICMPパケットも表示する
-w ICMPv6のノード情報検索でDNS名検索を行う
-W -wオプションと同じだがドラフト段階での実装の後方互換のために残されている
-a Echo Requestではなく、RFC 4620に規定されているICMPv6のノード情報検索を送信する。逆引きでの名前解決やIPv6アドレスの取得などが行える
-b バッファサイズを指定する
-B 複数のネットワークインタフェース(NIC)がある場合、どのインタフェースをバインドするか名前(例えばen0など)で指定する
-c パケット送受信の回数(試行回数)を指定する
-G Sweep Ping時の最大データサイズまた最小データサイズ、加算データサイズを指定する
-g ゲートウェイのアドレスを指定する
-h 最大ホップ数を指定する
-I 指定したインタフェースのアドレスをソースアドレスとして指定する
-i 送信パケットの間隔時間(秒)。デフォルトは1秒。小数でも指定可能。-fオプションと同時に指定できない
-I 実際の送信処理前に極力早く指定された数のパケット(preload)を送信しておく。スーパーユーザーしか指定できない
-P IPsecのポリシーを指定する
-p パケットのパディング(データの埋め合わせ)データのパターンを指定する。例えばffは全てのデータを1で埋めることを示す
-S 指定されたIPアドレスから実行する(Source Addressを指定する)
-s パケットのデータ部サイズを指定する。デフォルトは56バイト
-z IPv6のトラフィッククラスを指定する
--apple-connect 指定された対象先ホストへ直接接続して実行する(Apple独自オプション)
--apple-time パケットの送信時刻を結果の各行に表示する(Apple独自オプション)
ホップス IPv6のルーティングヘッダを指定する

Linux(Ubuntu 16.04 LTS)の場合

IPv4およびv6兼用

[ping|ping6] [-aAbBdDfhLnOqrRUvV] [-c 試行回数] [-F フローラベル] [-i 間隔時間] [-I インタフェース・アドレス] [-l preloadパケット数] [-m mark] [-M pmtudiscオプション] [-N ノード情報オプション] [-w 起動時間] [-W タイムアウト] [-p パディング・パターン] [-Q TOS] [-s パケットサイズ] [-S 送信バッファサイズ] [-t TTL] [-T タイムスタンプオプション] [ホップス ...] 疎通確認対象先ホスト(ホスト名またはIPアドレス)

-a パケットを正常に受け取れた場合、ベル音を鳴らす
-A パケットロスの場合、ベル音を鳴らす
-b ブロードキャストアドレスへの送信を行うことを指定する
-B ソースアドレスが変更されることを禁止する
-d パケットのSO_DEBUGオプションを指定する
-D 各出力行へタイムスタンプを付加する
-f Flood pingモードを指定する
-h ヘルプを表示する
-L マルチキャストのループの制限を行う
-n 出力をIPアドレスのみに抑制する(ホスト名の逆引きを行わない)
-O 不明なICMP_ECHOメッセージを次のパケットを送る前に出力する(調査のために、-Dオプションなどと一緒に利用すると便利)
-q 出力抑制モード。途中経過を表示しない
-r ルーティングテーブルを無視して直接パケットを指定したホストに転送するように指示する。すなわち、同一の物理ネットワーク上に目的のホストがない場合はエラーになる
-R IPパケットのオプション部(Route Recording)に経由したルーターのアドレスを記録する(最大9個まで)
-U ユーザーが受け取る実際のレイテンシを表示する。例えばノーマルではDNS検索の失敗時間などは含まれていない
-v 詳細モード。通常は無視される他のICMPパケットも表示する
-V バージョン情報を表示する
-c パケット送受信の回数(試行回数)を指定する
-F IPv6のフローラベルを指定する
-i 送信パケットの間隔時間(秒)。デフォルトは1秒。-fオプションと同時に指定できない
-I 指定されたインタフェース(ネットワークカード名。バインドされたIPアドレスでも可)を用いて実行する
-I 実際の送信処理前に極力早く指定された数のパケット(preload)を送信しておく。スーパーユーザーしか指定できない
-m パケットへのタグ付けをする
-M Path MTU Discoveryの調査が行える。引数に"do"を指定するとIPのフラグメンテーションを禁止するので、-sオプションと組み合わせることで経路上の最小MTUが調査できる。"dont"ではこれを禁止しない。また"want"はローカル環境ではフラグメンテーションは行うが外部に対しては禁止する。基本的には"do"で調査可能だろう
-N Echo Requestではなく、RFC 4620に規定されているICMPv6のノード情報検索を送信する。逆引きでの名前解決やIPv6アドレスの取得などが行える
-w コマンドの起動時間を指定する。単位は秒
-W 受信パケットのタイムアウト時間
-p パケットのパディング(データの埋め合わせ)データのパターンを指定する。例えばffは全てのデータを1で埋めることを示す
-Q パケットのTOS(Type Of Service)を指定された値に設定する。IPv6の場合はトラフィックコントロール値を指定する
-s パケットのデータ部サイズを指定する。デフォルトは56バイト
-S 送信バッファサイズ
-t パケットのTTLを指定された値に設定する
-T 通常はあまり使用されないがIPヘッダでタイムスタンプ要求を行う。これにより経由するノードでのタイムスタンプ応答が表示される。"tsonly"はタイムスタンプのみを表示する。"tsandaddr"はタイムスタンプとノードのアドレスが、"tsprespec"では引数に経由するノードを指定できる
ホップス IPv6のルーティングヘッダを指定する

使用方法

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る