Show 2021.05.30 2018.06.25 UNIXコマンド「ping」とそのオプションの使い方についてまとめました。 【はじめに】pingコマンドとはpingコマンドは、ネットワーク上にあるパソコンやルーターに対して信号(パケット)を送り、正しく届いて返答が行われるかを確認するための機能です。 これを使うことで、ネットワークトラブル時に物理的に原因があるのかどうかがわかります。 【pingコマンド】オプションpingコマンドは通常「ping + 宛先IPアドレス」で実行しますが、この後にオプションの値を変えてやることで、ping試験の設定を変更できます。 ping[ -t][ -a][ -n 試行回数][ -l パケットサイズ][ -f][ -i TTL][ -v TOS][ -r ルータ個数][ -s ルータ個数][[ -j ゲートウェイリスト]|[ -k ゲートウェイリスト]][ -w タイムアウト時間] 確認したい対象のIPアドレス、もしくはホスト名
【利用例】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
ping試験の結果、パケットを4回送信、4回受信し、失敗は0%でm通信が成功ネしており、google.co.jpまでのネットワークが物理的に正常動作していることになり、「自身のホスト、対象ホスト、及びその間になるネットワーク機器の設定、稼働状態」に問題ないことが判断できます。 【ping疎通試験】ネットワーク障害・エラーの原因を調べる ping疎通試験でネットワーク障害・エラーの原因を調べるする方法についてまとめました。 【Linuxコマンド入門】主なコマンドとサンプル集 Linuxコマンドの主な使い方とサンプル集について入門者向けにまとめました。 Section: Maintenance Commands (8)Index JM Home Page roff page BSD mandoc Linux NetKit (0.17) 名前ping - ICMP ECHO_REQUEST パケットをネットワーク上のホストに送る書式ping [-LRdfnqrv ] [-c count ] [-i wait ] [-l preload ] [-p pattern ] [-s packetsize ] [-t ttl ] [-w waittime ] [-I interface address ]説明ping は ICMP の ECHO_REQUEST データグラムを用いて、指定したホストやゲートウェイからの ICMP ECHO_RESPONSE を引き出す。 ECHO_REQUEST データグラム (``pings'') は IP と ICMP ヘッダを持ち、それに ``struct timeval'' が続き、そして、パケットの残りを埋めるために任意個の ``pad'' バイトがある。 オプションは以下の通り: その他のオプションは:-c count count 個のパケットを送った (そしてその応答を受け取った) 後、停止する。 パケットが送られた後、 ping は応答を受け取るまで 10 秒間待ち、終了する。 -d 使用するソケットに SO_DEBUG オプションを設定する。 -f flood ping (ping の洪水)。パケットが戻ってくるとすぐ、 もしくは、1 秒間に 100 回の、いずれか多い回数だけパケットを送る。 ECHO_REQUEST が送られるたびにピリオド ``.'' が表示され、 ECHO_REPLY を受け取るごとに、バックスペースが表示される (訳注: すなわち ``.'' が消去される)。 これにより、どのくらいのパケットが取りこぼされるかを、 すばやく表示することができる。スーパーユーザーだけがこのオプションを使える。 Bf -emphasis これは、ネットワークに非常に負荷をかけるので、注意して使うべきである。 Ef -i wait 個々のパケットの間に wait 秒待つ。 デフォルトでは、個々のパケットの間に 1 秒待つ。このオプションは -f オプションとは同時に指定できない。 -l preload 指定した preload の値だけ ECHO_REQUEST パケットを出来るだけ速く送信し、通常の動作に戻る。 スーパーユーザーだけがこのオプションを使用できる。 -n 数値出力のみ。 ホストのアドレスから、ホスト名の検索を試みない。 -p pattern 送出するパケットを埋めるための 16 個までの ``pad'' バイトを指定できる。 これはネットワークでの、データに依存した問題の診断に有用である。 たとえば ``-p ff '' は全て 1 で埋められたパケットを送る。 -q 静かな出力。 開始と終了時の要約以外は、何も表示しない。 -R 経路を記録。 ECHO_REQUEST パケットに RECORD_ROUTE オプションを設定し、返ってきたパケットの経路バッファ (route buffer) を表示する。 IP ヘッダは 9 つの経路分の大きさしかないことに注意せよ。 また、多くのホストはこのオプションを無視するか、破棄してしまう。 -r 通常のルーティングを無視し、接続されたネットワークのホストに直接送る。 もし、ホストが直に接続されたネットワークになければ、エラーが返る。 経路情報を持たないインタフェースを通して、 ローカルなホストへと ping するのに使われる。(例えば、インタフェースが routed(8) に落された場合)。 -s packetsize 何バイトのデータが送られるかを指定する。デフォルトは 56 で、 ICMP ヘッダの 8 バイトを加えて、 64 バイトの ICMP データになる。 スーパーユーザーだけがこのオプションを使用できる。 -v 詳細な出力。 受け取った ECHO_RESPONSE 以外の ICMP パケットを表示する。 -w waittime どのような場合でも関係なく、 ping を waittime 秒後に終了させる。以下のオプションに関する記述は、 のソース、ならびに FreeBSD の man ページを参考に 日本語訳に際して追加された。 -I interface 与えられたインタフェースから、マルチキャストパケットを送る。 -L マルチキャストパケットのループバックを抑制する。 -t ttl マルチキャストパケットの IP 寿命時間 (Time To Live) を設定する。問題の切り分けのために ping を用いる場合、そのネットワークインタフェースが up かつ running である ことを確認するために、まずローカルホスト上で実行するべきである。 その後により遠くのホストやゲートウェイに ``ping'' する。 往復時間 (round-trip time) と消失パケットの統計が計算される。 重複した応答メッセージを受け取った場合、 それらはパケットの損失の計算には使われないが、 それにもかかわらずそうしたパケットの往復時間は、 その最小値・平均値・最大値の計算に用いられる。 指定した数のパケットが送られた (そしてその応答を受け取った) か、プログラムが SIGINT で終了させられた場合は、簡単な要約が表示される。 もし ping が全く応答パケットを受け取らなかった場合には、終了コード 1 で終了する。 エラーがあればコード 2 で終了する。それ以外の場合はコード 0 で終了する。 これにより、終了コードで、あるホストが動いているかどうかを判断すること ができる。 このプログラムはネットワークのテスト・計測・管理についての使用を意図している。 このプログラムがネットワークに強いる負荷を考えれば、 ping をトラブルのないときや自動スクリプトから実行することは奨められない。 ICMP パケットの詳細オプションなしの IP ヘッダは 20 バイトである。 ICMP ECHO_REQUEST パケットは、さらなる 8 バイトの ICMP ヘッダとそれに続く任意の量のデータからなる。 packetsize が与えられた時には、それは付加的なデータ部分のサイズ (デフォルトは 56) を示す。 よって ICMP ECHO_REPLY パケットの IP パケット内で受け取るデータの量は、 要求されたデータ領域より 8 バイト ( ICMP ヘッダの分) 多い。もしデータ領域が 8 バイトよりも大きければ、 ping はその領域の先頭 8 バイトを、往復時間を計算するのに使うタイムスタンプを 含めるために使用する。 もし 8 バイトよりも少なければ、往復時間は得られない。 重複パケットと障害パケットping は、重複パケットと障害パケットについて報告する。 重複パケットは (ユニキャストアドレスに対しては) 起きるはずはないが、 不適切なリンク層での再送によって引き起こされるように思われる。 重複は様々な状況で起こる可能性がある。低いレベルの重複の存在は 必ずしも警告にはならないかもしれないが、よい兆候ではない。障害を受けたパケットは、明らかに深刻な警告であり、多くの場合 ping パケットの経路上 (ネットワーク内、もしくはそのホスト内) のどこかに 壊れたハードウェアがあることを示す。 異なるデータパターンの試行(インター) ネットワーク層は、決してデータ部分に含まれるデータによって パケットの扱いを変えたりしない。 不幸にも、データに依存した問題がネットワークへと侵入し、 長い時間発見されないままとなってしまう可能性が知られている。 問題のあるパケットの特定のパターンは多くの場合、 全てが 0 または全てが 1 のようなもの、 あるいは右端以外が殆んど 0 のような、 十分な ``遷移 (transitions)'' を持たないものである。 コマンドラインで (例えば) 全て 0 というデータパターンを指定することは、 必ずしも十分ではない。 なぜならば、その関心のあるのはデータリンク層におけるパターンであり、 あなたが入力したものと、コントローラーが送信するものとの関係は 複雑だからである。これは、もしあなたがデータ依存性の問題を抱えているなら、 それを発見するためには 何回ものテストをしなければならないかもしれないことを意味する。 もし運が良ければ、ネットワークを通して送ることのできないファイルか、 同じような長さのファイルより、転送にずっと時間のかかるファイルを 発見することができるかもしれない。 そうしたら、そのファイルを調べ繰り返し現われるパターンを ping の -p オプションを使ってテストできる。 TTL の詳細IP パケットの TTL という値は、パケットが破棄される前に通過することができる IP ルータの最大値を示す。 現在の慣例から、インターネットの各ルータは TTL フィールドを正確に 1 減らすことを期待できる。TCP/IP 規格は、 TCP パケットの TTL フィールドは 60 に設定されるべきであるとしているが、多くのシステムは もっと小さな値を使用している (4.3 BSD は 30、4.2 は 15)。 このフィールドの設定可能な最大値は 255 で、殆んどの Unix システムは ICMP ECHO_REQUEST の TTL フィールドを 255 に設定している。 これは、あるホストでは ``ping'' が通るのに、 telnet(1) や ftp(1) ではそのホストに届かない理由 (の一つ) である。 ping の通常の操作では、受け取ったパケットの ttl の値が表示される。 リモートのシステムが ping パケットを受け取った時、その応答における TTL フィールドには以下の 3 つのうちの 1 つを取ることができる。
バグ多くのホストとゲートウェイは RECORD_ROUTE オプションを無視する。RECORD_ROUTE を完全に有効にするには、IP ヘッダの最大長は短過ぎる。 しかし、これについてできることは多くない。 flood ping は一般的には推奨されないし、ブロードキャストアドレスへの flood ping は、きちんと条件を整えた場合においてのみ使用されるべきである。 日本語訳に際し、いくつかのオプションに関する記述を加えたが、正しいかど うか分からない。 関連項目netstat(1), ifconfig(8)履歴コマンドは BSD 4.3 から登場した。Index名前書式説明ICMP パケットの詳細重複パケットと障害パケット異なるデータパターンの試行TTL の詳細バグ関連項目履歴This document was created by man2html, using the manual pages. Time: 03:33:39 GMT, November 24, 2022 Shellのpingオプションは?オプション一覧. Pingの止め方は?この ping 実行を停止したい場合「Ctrl + C」を押せばOK。
Pingのデフォルトパケットサイズは?デフォルトのPingは32バイトのパケットサイズを送信しますが-l オプションで任意のサイズを指定できます。
Linux pingコマンドの戻り値は?戻り値 ping ユーティリティは、指定したhost から少なくとも 1 回の応答を受信した場合、終了値 0 を返します; 送出は成功したものの応答を受信できない場合は 2 を返します; エラーが発生した場合は、他の値<(> が返されます。
|