こうしたトラブルの初動で最初に使うのが、pingコマンドです。
この記事では、pingコマンドの基本的な使い方からオプション指定、結果の読み方、そして「pingが通らない」ときのトラブル対処まで、実務で必要な知識をまとめて解説します。
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
pingコマンドとは?ネットワーク疎通確認の基本
pingは、指定したホストにICMP(Internet Control Message Protocol)パケットを送信し、相手から応答が返ってくるかどうかを確認するコマンドです。ネットワークの疎通確認、つまり「自分のマシンから相手のマシンまでパケットが届くか」を調べる最も基本的な手段です。
Windowsのpingはデフォルトで4回パケットを送って終了しますが、Linuxのpingはユーザーが停止するまで送り続けます。停止するには Ctrl + C を押してください。
pingコマンドの基本的な使い方
1. IPアドレスを指定して疎通確認する
最もシンプルな使い方です。相手のIPアドレスを指定して実行します。$ ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.523 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.341 ms 64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.298 ms ^C --- 192.168.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 0.298/0.387/0.523/0.097 ms
2. ホスト名を指定して疎通確認する
IPアドレスの代わりにホスト名やドメイン名でも指定できます。この場合、DNS名前解決が正しく動作しているかも同時に確認できます。$ ping webserver01 PING webserver01 (192.168.1.10) 56(84) bytes of data. 64 bytes from webserver01 (192.168.1.10): icmp_seq=1 ttl=64 time=0.185 ms
3. 回数を指定して実行する(-cオプション)
-c オプションで送信するパケット数を指定できます。スクリプトで使う場合や、決まった回数だけ確認したい場合に便利です。$ ping -c 5 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.384 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.275 ms 64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.312 ms 64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.290 ms 64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=0.268 ms --- 192.168.1.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 0.268/0.305/0.384/0.046 ms
ping -c 3 程度を使うのが定番です。
4. 送信間隔を指定する(-iオプション)
デフォルトでは1秒間隔でパケットを送信しますが、-i オプションで間隔を変更できます。# 0.2秒間隔で送信する(root権限が必要) $ sudo ping -i 0.2 -c 10 192.168.1.1 # 5秒間隔で送信する(長時間の死活監視に使える) $ ping -i 5 192.168.1.1
5. パケットサイズを指定する(-sオプション)
-s オプションでICMPパケットのデータサイズを指定できます。デフォルトは56バイト(ICMPヘッダ8バイトを加えて64バイト)です。# 1000バイトのパケットを送信する $ ping -s 1000 -c 3 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 1000(1028) bytes of data. 1008 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.512 ms
ping結果の読み方
6. 応答行の見方
pingの応答行には重要な情報が含まれています。64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.523 ms
・icmp_seq=1:パケットの連番(抜けている番号があればパケットロスが発生している)
・ttl=64:Time To Live(パケットが通過できるルーター数の上限、経由するたびに1ずつ減る)
・time=0.523 ms:往復にかかった時間(RTT: Round Trip Time)
7. 統計情報の見方
Ctrl + C で停止した後(または -c で指定した回数が終了した後)に統計情報が表示されます。--- 192.168.1.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 0.268/0.305/0.384/0.046 ms
・5 received:受信したパケット数
・0% packet loss:パケットロス率(0%が正常、数%でも出ていたらネットワークに問題あり)
・rtt min/avg/max/mdev:応答時間の最小値/平均値/最大値/標準偏差
標準偏差(mdev)は「ばらつき」を表します。この値が大きい場合、ネットワークが不安定な可能性があります。
実務で使えるping活用テクニック
8. タイムアウト時間を指定する(-Wオプション)
-W オプションで応答待ちのタイムアウト秒数を指定できます。スクリプトで素早く判定したいときに使います。# 1秒以内に応答がなければタイムアウト $ ping -c 1 -W 1 192.168.1.100
# 疎通確認のシェルスクリプト例 if ping -c 1 -W 2 192.168.1.1 > /dev/null 2>&1; then echo "サーバーは稼働中" else echo "サーバーに到達できません" fi
9. ping結果をログに残す
長時間の監視でログを残したい場合は、リダイレクトとタイムスタンプを組み合わせます。# タイムスタンプ付きでログに保存する $ ping 192.168.1.1 | while read line; do echo "$(date '+%Y-%m-%d %H:%M:%S') $line"; done > ping_log.txt
10. IPv6で疎通確認する
IPv6アドレスに対してpingを実行するには、ping -6 または ping6 コマンドを使います。# IPv6で疎通確認 $ ping -6 -c 3 ::1 PING ::1(::1) 56 data bytes 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.025 ms # ping6コマンドでも同じ $ ping6 -c 3 fe80::1%eth0
pingが通らない時のトラブルシュート
「Destination Host Unreachable」の対処法
このメッセージは、指定したホストに到達するための経路が見つからない場合に表示されます。・同じネットワーク内のホスト宛 → 相手がダウンしているか、IPアドレスが間違っている
・異なるネットワーク宛 → デフォルトゲートウェイの設定を確認する
# デフォルトゲートウェイを確認する $ ip route show default default via 192.168.1.1 dev eth0 # ネットワークインターフェースの状態を確認する $ ip addr show
「Request timed out」(応答なし)の対処法
パケットを送信したが応答が返ってこない状態です。・相手のホストがダウンしている
・途中のネットワーク機器(ルーター・スイッチ)に障害がある
・ファイアウォールでICMPがブロックされている
まず自分自身(localhost)へのpingを試して、自マシンのネットワークスタックが正常か確認しましょう。
# 自分自身への疎通確認 $ ping -c 3 127.0.0.1 # デフォルトゲートウェイへの疎通確認 $ ping -c 3 192.168.1.1
pingは通るのにSSH/HTTPがつながらない場合
pingが通るということは、ネットワーク層(L3)までは正常です。SSH(ポート22)やHTTP(ポート80)がつながらない場合は、アプリケーション層の問題です。・対象のサービス(sshd、httpd)が起動しているか確認する
・ファイアウォールで対象ポートが許可されているか確認する
# ポートの到達性を確認する(pingの代わりに) $ ss -tlnp | grep :22 $ curl -I http://192.168.1.10
【重要】pingに応答しないホストがある(ICMP制限)
近年では、セキュリティやネットワーク負荷の観点から、ICMPパケットへの応答を無効にしているホストやネットワーク機器が増えています。pingが通らないからといって、必ずしもホストがダウンしているわけではありません。
AWS EC2やクラウド環境では、セキュリティグループでICMPを明示的に許可しないとpingが通らないのが一般的です。事前に対象ホストがICMP応答を許可しているか確認してください。
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| IPアドレスに疎通確認する | ping 192.168.1.1 |
| 回数を指定して実行する | ping -c 5 192.168.1.1 |
| 送信間隔を変更する | ping -i 0.2 192.168.1.1 |
| パケットサイズを指定する | ping -s 1000 192.168.1.1 |
| タイムアウトを指定する | ping -c 1 -W 1 192.168.1.1 |
| IPv6で疎通確認する | ping -6 -c 3 ::1 |
| デフォルトゲートウェイを確認する | ip route show default |
関連記事
この記事と関連性の高い記事をまとめました。あわせて読むことで理解が深まります。・tracerouteコマンドでネットワーク経路を調査する方法|出力の見方とトラブル対処
・LinuxのDNS設定方法|resolv.confが元に戻る原因とnmcliの手順
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:lynxコマンドでCUIからWebページを閲覧する方法|HTTPステータス確認やスクリプト連携も
- 前のページへ:ifconfigコマンドでネットワークインターフェースを確認・設定する方法|ipコマンドとの違いも
- この記事の属するカテゴリ:Linuxコマンドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます