Linuxコマンド辞典 ping・ping6コマンド(ネットワーク)

ネットワーク上のホストの接続を確認する「ping」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

書式

$ ping [オプション] [アドレス]

ICMPプロトコルを使用して、ネットワーク上のホストの接続を確認します。ICMP(internet Control Message Protocol)は、TCP/IPで接続された機器間において、お互いの状態を確認するためにIPのエラーメッセージや、制御メッセージを転送するプロトコルです。pingを実行すると、ICMPの中ECHO_REQUESTを目的ホストに送信し、ECHO_RESPONSEが返ってくるのを待ちます。ホストがICMPをパケットフィルタの対象にしていると、レスポンスを返さない場合があります。ホストがICMPをパケットフィルタの対象にしているとレスポンスを返さない場合があります。ホストが稼働状態でかつネットワークに正常に繋がり経路的にも問題がない場合でも「ping」コマンドで接続確認ができません。その場合は、TELNETコマンドでHTTP(80)やHTTPS(443)など稼働しているサービスポートに対してアクセスしレスポンスを確認する必要があります。また、ipv6はping6コマンドを使用します。

pingコマンドは通信状態を調査するにはかなり有効的です。例えばWebサーバーやファイルサーバーにアクセスできない場合の障害切り分けなどに重宝します。相手のホストに対してpingパケットを送ってレスポンスがある場合は、自分のホストと相手ホスト間のネットワークが正常に確立されていることになります。pingコマンドでRequest timed out.」や「Reply from XXX:Destination host unreachable.」と表示された場合は、自分の端末や相手ホスト、中継しているネットワーク機器の何かに問題があります。

pingパケット(ICMPプロトコル)はハッキングの手段としても使われることがあります。DOS攻撃など大きなパケットを大量にホストに送信させダウンさせるなど使用されることがあるので、外部公開しているネットワーク機器やサーバーなどのホストはファイアウォールで拒否していることが一般的です。そのため、pingによる疎通確認の確実性があるわけではないので、telnetコマンドなども併用してみると良いでしょう。また、セキュリティ上問題がない場合は、ローカルエリアのホストや開発環境などはICMPプロトコルを許可するようにしましょう。

オプション

-bブロードキャストアドレスへ送信する
-c 回数ECHO_REQUESTの送信回数を指定する
-Dタイムスタンプ(UNIXタイム)を表示する
-i 秒数ECHO_REQUESTの送信間隔を指定する(デフォルトは1秒間隔)
-l インターフェイス名送信するインターフェースを指定する
-nIPアドレスからホスト名の解決を行わない
-O次のパケットを送る前にICMP ECHO返答を表示する
-q開始と終了のメッセージのみを出力する
-RECHO_REQUEST経過経路を表示する
-r目的ホストにECHO_REQUESTを送るときにルーティングを無視して直接送信する
-s サイズ送信するデータサイズを指定する(デフォルトは56)
-t TTL値パケットのttl(IP寿命時間)を指定する
-w 秒数pingを指定した時間経過した後に終了させる
-W 秒数ECHO_REPLYを待つタイムアウトを指定する

pingパケットをホストに送信する

pingコマンドは、ctrl+cを押下するまで連続して実行します。

$ ping IPアドレス or ドメイン名 or ホスト

実行結果

[rin@centos ~]$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=0.357 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=0.435 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=255 time=0.334 ms
^C
--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2028ms
rtt min/avg/max/mdev = 0.334/0.375/0.435/0.046 ms
[rin@centos ~]$ 

「yahoo.co.jp」に対してpingパケットを送信しています。pingのレスポンスがある場合は、外部ホストとping実行端末間のネットワークは正常に通信できていますので、ネットワーク的には問題ない証になります。もし、インターネット接続に問題がある場合は、別の可能性を考えます。たとえばブラウザのキャッシュが悪さしているなど、もっとソフトウェアよりの原因を検討します。

[rin@centos ~]$ ping yahoo.co.jp
PING yahoo.co.jp (182.22.25.252) 56(84) bytes of data.
64 bytes from 182.22.25.252 (182.22.25.252): icmp_seq=1 ttl=58 time=12.6 ms
64 bytes from 182.22.25.252 (182.22.25.252): icmp_seq=2 ttl=58 time=13.6 ms
64 bytes from 182.22.25.252 (182.22.25.252): icmp_seq=3 ttl=58 time=11.8 ms
64 bytes from 182.22.25.252 (182.22.25.252): icmp_seq=4 ttl=58 time=13.9 ms
^C
--- yahoo.co.jp ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 11.768/12.987/13.939/0.859 ms
[rin@centos ~]$ 

ping6パケットをホストに送信する

$ ping6 IPアドレス

PINGパケットを送る回数を指定します。

$ ping -c 回数 IPアドレス or ドメイン

実行結果

[rin@centos ~]$ ping -c 3 yahoo.co.jp
PING yahoo.co.jp (182.22.16.251) 56(84) bytes of data.
64 bytes from edge1800.img.vip.otm.yimg.jp (182.22.16.251): icmp_seq=1 ttl=54 time=12.9 ms
64 bytes from edge1800.img.vip.otm.yimg.jp (182.22.16.251): icmp_seq=2 ttl=54 time=12.7 ms
64 bytes from edge1800.img.vip.otm.yimg.jp (182.22.16.251): icmp_seq=3 ttl=54 time=10.2 ms

--- yahoo.co.jp ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 10.196/11.939/12.907/1.241 ms
[rin@centos ~]$ 

開始/終了時メッセージのみを表示する

$ ping -q -c 回数 -w 秒数 IPアドレス or ドメイン; echo $?

実行結果

合わせて3回送信しタイムアウト3秒で実行後の返り値を見る

[rin@centos ~]$ ping -q -c 3 -w 3 yahoo.co.jp;echo $?
PING yahoo.co.jp (183.79.219.252) 56(84) bytes of data.

--- yahoo.co.jp ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 8.605/10.159/11.108/1.111 ms
0
[rin@centos ~]$