こうしたトラブルの初動で最初に使うのが、pingコマンドです。
ただし、pingが通らないからといって「サーバーが落ちている」と即断するのは危険です。近年はセキュリティの観点からICMPパケットへの応答を意図的にブロックしている環境が多く、pingが通らなくてもサービスは正常に動いていることがよくあります。
この記事では、pingコマンドの基本的な使い方からオプション指定、結果の読み方(TTL・パケットロス率の解釈)、「pingが通らない」ときの原因切り分けと実務的な代替確認手段まで、現場で必要な知識をまとめて解説します。
この記事のポイント
・LinuxのpingはWindowsと違い、-cで回数を指定しないと止まらない
・パケットロスは統計行の「X% packet loss」とicmp_seqの欠番で確認する
・応答なし ≠ サーバー障害。ICMPブロック・ファイアウォール・ルーティングの順で切り分ける
・ICMPブロック環境では curl・nc・telnet でTCPレベルの疎通確認ができる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
pingコマンドとは?ネットワーク疎通確認の基本
pingは、指定したホストにICMP(Internet Control Message Protocol)のEchoリクエストを送信し、相手からEcho Replyが返ってくるかどうかを確認するコマンドです。ネットワークの疎通確認、つまり「自分のPCから相手のマシンまでパケットが届くか」を調べる最も基本的な手段として、現場でも日常的に使われます。
Windowsのpingはデフォルトで4回パケットを送って終了しますが、Linuxのpingはユーザーが停止するまで送り続けます。停止するには Ctrl + C を押してください。スクリプトで使う場合は必ず
-c オプションで回数を指定しましょう。【注意】pingが通らない ≠ サーバーダウンという点を必ず押さえておいてください。AWS EC2をはじめとするクラウド環境や、セキュリティポリシーが厳しいネットワークでは、ICMPパケットへの応答をブロックしているケースが一般的です。pingが通らなくても、SSHやHTTPは正常に応答していることがあります。
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
ループバックアドレス(127.0.0.1)へのpingが通るかを先に確認すると、TCP/IPスタック自体が正常かどうかをチェックできます。ネットワーク障害の切り分けでは「まず自分自身にping」が鉄則です。
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 # Ethernet MTU確認:フラグメント禁止フラグ付き(-M do) # IPヘッダー20 + ICMPヘッダー8 = 28バイトを引いた1472が最大ペイロード $ ping -s 1472 -M do -c 3 192.168.1.1
-M do はフラグメントを禁止するフラグで、「Frag needed and DF set」エラーが返ってきた場合は、MTUサイズの不一致(パスMTU問題)が疑われます。
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:応答時間の最小値/平均値/最大値/標準偏差
パケットロス率の目安は次のとおりです。
・0%:正常
・1~5%:注意レベル。断続的なネットワーク不安定の可能性あり
・10%以上:問題あり。ルーター・スイッチ・回線のどこかに障害
・100%:完全に疎通不可(またはICMPブロックの可能性)
標準偏差(mdev)は「ばらつき(ジッター)」を表します。この値が大きい場合、ネットワークが不安定な可能性があります。VoIPやリアルタイム通信の品質に影響が出ることもあります。
実務で使える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
11. 複数ホストをまとめて確認する
サブネット内の複数ホストをまとめて確認したいときは、forループが便利です。# サブネット内の主要ホストをまとめて確認する例 for host in 192.168.1.1 192.168.1.10 192.168.1.100; do if ping -c 1 -W 1 "${host}" > /dev/null 2>&1; then echo "${host}: 応答あり" else echo "${host}: 応答なし" fi done
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)が起動しているか確認する
・ファイアウォールで対象ポートが許可されているか確認する
# ポートの到達性を確認する $ ss -tlnp | grep :22 $ curl -I http://192.168.1.10
【重要】pingに応答しないホストがある(ICMP制限)
近年では、セキュリティやネットワーク負荷の観点から、ICMPパケットへの応答を無効にしているホストやネットワーク機器が増えています。pingが通らないからといって、必ずしもホストがダウンしているわけではありません。
AWS EC2やクラウド環境では、セキュリティグループでICMPを明示的に許可しないとpingが通らないのが一般的です。このような環境では、TCPレベルでの代替確認が有効です。
# curlでHTTPの疎通を確認する(pingが通らない環境での代替手段) $ curl -o /dev/null -s -w "%{http_code} " http://192.168.1.10/ # ncコマンドでTCPポートの疎通を確認する $ nc -zv 192.168.1.10 22 $ nc -zv 192.168.1.10 80 # telnetでTCPポートへの接続確認(古いが確実) $ telnet 192.168.1.10 22
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| IPアドレスに疎通確認する | ping 192.168.1.1 |
| 回数を指定して実行する | ping -c 5 192.168.1.1 |
| 送信間隔を変更する | ping -i 5 192.168.1.1 |
| パケットサイズを指定する | ping -s 1000 -c 3 192.168.1.1 |
| タイムアウトを指定する | ping -c 1 -W 1 192.168.1.1 |
| MTU確認(フラグメント禁止) | ping -s 1472 -M do -c 3 192.168.1.1 |
| IPv6で疎通確認する | ping -6 -c 3 ::1 |
| ループバックでTCP/IPスタック確認 | ping -c 3 127.0.0.1 |
| デフォルトゲートウェイを確認する | ip route show default |
| TCPポートの疎通確認(ping代替) | nc -zv 192.168.1.10 22 |
Linux無料マニュアルを受け取る >>
関連記事
この記事と関連性の高い記事をまとめました。あわせて読むことで理解が深まります。・tracerouteコマンドでネットワーク経路を調査する方法|出力の見方とトラブル対処
・LinuxのDNS設定方法|resolv.confが元に戻る原因とnmcliの手順
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:killコマンドでプロセスを強制終了する方法|kill -9やkillall・pkillの使い分けも
- 前のページへ:diffコマンドでファイルを比較する方法|unified形式やディレクトリ比較も
- この記事の属するカテゴリ:Linuxtipsへ戻る

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