しかし、ただ ping を打って「応答が返ってこない」で終わっていませんか? 応答がない原因は、相手サーバーのダウン、経路の問題、ファイアウォールによるICMPブロックなど多岐にわたります。原因を切り分けられなければ、復旧に無駄な時間を費やすことになります。
この記事では、pingコマンドの基本から、回数指定・タイムアウト・パケットサイズ変更といった実践オプション、さらに「応答がない時にどう原因を切り分けるか」というトラブルシュートの手順まで、現場目線で解説します。
・pingコマンドの基本的な使い方とWindowsとの違い
・回数指定・送信間隔・タイムアウトなど実践的なオプション
・MTUサイズ確認による経路の詳細診断方法
・応答がないときのネットワーク障害の体系的な切り分け手順
・エラーメッセージの意味とファイアウォール・ICMPブロックへの対処
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
pingコマンドとは? ネットワーク疎通確認の基本原理
pingコマンドは、ICMP(Internet Control Message Protocol)というプロトコルを使って、相手ホストとの通信が可能かどうかを確認するコマンドです。仕組みはシンプルで、自分のマシンから相手ホストに「エコー要求(Echo Request)」パケットを送信し、相手が正常に受信すると「エコー応答(Echo Reply)」を返します。この往復が成功すれば「疎通あり」、失敗すれば「疎通なし」と判断できます。
Linuxのpingは、Ctrl+Cで停止するまで永遠にパケットを送り続けます。WindowsのpingはデフォルトでICMPを4回送って自動停止しますが、Linuxは違います。初めてLinuxを触る人が「pingが止まらない!」と焦るのは、ほぼ全員が通る道です。
基本的な使い方
1. IPアドレスを指定してpingを実行する
もっとも基本的な使い方です。相手のIPアドレスを指定してpingを打ちます。# IPアドレスを指定してpingを実行する $ 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=2.29 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=2.03 ms 64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=3.00 ms ^C --- 192.168.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 2.030/2.440/3.001/0.418 ms
・64 bytes:受信したパケットのサイズ
・icmp_seq:パケットの通し番号(連番が飛んでいるとパケットロスが発生している)
・ttl(Time To Live):パケットが経由できるルーターの残り回数。初期値はOSによって異なり、Linux=64、Windows=128が一般的
・time:パケットの往復時間(RTT: Round Trip Time)。同一LAN内なら1ms以下~数ms、インターネット経由なら数十ms~数百msが目安
停止するには
Ctrl+C を押してください。停止すると、送信パケット数・受信パケット数・パケットロス率・RTTの統計情報が表示されます。2. ホスト名を指定してpingを実行する
IPアドレスの代わりに、ホスト名(ドメイン名)を指定することもできます。# ホスト名を指定してpingを実行する $ ping www.example.com PING www.example.com (93.184.216.34) 56(84) bytes of data. 64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=85.3 ms
ping: www.example.com: Name or service not known というエラーが出た場合は、ネットワークの問題ではなくDNSの設定に問題がある可能性があります。3. Ctrl+Zで停止した場合の注意点
Ctrl+C ではなく Ctrl+Z を押してしまった場合、pingは「一時停止」になるだけで、プロセスとしてはバックグラウンドに残り続けます。# Ctrl+Zで一時停止した場合 $ 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=2.68 ms ^Z [1]+ Stopped ping 192.168.1.1
fg コマンドでフォアグラウンドに戻してから Ctrl+C で停止してください。Ctrl+Z で放置したままにすると、不要なプロセスがシステムに残り続けるため注意が必要です。実務で使うpingの主要オプション
1. -c(回数指定)— スクリプトや監視で必須
-c オプションで、送信するICMPパケットの回数を指定できます。指定した回数だけパケットを送信したら自動で終了します。# ICMPパケットを5回だけ送信する $ 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=2.29 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=2.03 ms 64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=3.00 ms 64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=4.75 ms 64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=2.10 ms --- 192.168.1.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 2.030/2.834/4.750/0.989 ms
-c 5 程度で十分です。シェルスクリプトやcronで定期監視する場合は、-c を指定しないとスクリプトが永遠に終了しないため、必ず付けてください。2. -i(送信間隔の変更)
-i オプションで、パケットの送信間隔を秒単位で指定できます。デフォルトは1秒間隔です。# 0.2秒間隔でpingを送信する(root権限が必要) # ping -i 0.2 -c 10 192.168.1.1 # 5秒間隔でpingを送信する(長時間監視向け) $ ping -i 5 -c 100 192.168.1.1
3. -W(応答タイムアウト)と -w(実行時間の上限)
-W オプションは、1パケットあたりの応答待ち時間を秒単位で指定します。-w オプションは、ping全体の実行時間の上限を秒単位で指定します。# 各パケットの応答を2秒まで待つ(デフォルトは環境依存) $ ping -W 2 -c 5 192.168.1.1 # ping全体を10秒で強制終了する(-cと併用可) $ ping -w 10 192.168.1.1
-W(大文字)と -w(小文字)を混同しやすいため注意してください。監視スクリプトでは、-W と -c を組み合わせて「応答がなければ素早く次のパケットに進む」設定がよく使われます。4. -s(パケットサイズの変更)
-s オプションで、送信するICMPパケットのデータ部分のサイズをバイト単位で指定できます。デフォルトは56バイト(ICMPヘッダ8バイトを含めると64バイト)です。# パケットサイズを1000バイトに変更してpingを実行する $ 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=3.15 ms 1008 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=2.87 ms 1008 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=2.91 ms
実務Tips: MTUの確認方法(-M do -s)
MTU(Maximum Transmission Unit)とは、ネットワーク上で1回の通信で送れるパケットの最大サイズのことです。Ethernet環境では一般的に1500バイトですが、VPN環境やクラウド環境では異なる値が設定されていることがあります。MTUを超えるパケットを送信するとフラグメンテーション(パケット分割)が発生し、通信速度の低下や通信障害の原因になります。pingコマンドを使えば、経路上のMTUを簡単に調べられます。
# フラグメント禁止フラグ付きでパケットサイズを指定する $ ping -M do -s 1472 -c 3 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 1472(1500) bytes of data. 1480 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=2.50 ms # パケットサイズが大きすぎるとエラーになる $ ping -M do -s 1473 -c 3 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 1473(1501) bytes of data. ping: local error: message too long, mtu=1500
-M do は「Don't Fragment(フラグメント禁止)」フラグを設定するオプションです。このフラグを付けた状態でパケットサイズを徐々に大きくしていき、エラーが出る直前の値がそのネットワーク経路のMTUです。1472バイトで通って1473バイトでエラーが出た場合、ICMPヘッダ(8バイト)とIPヘッダ(20バイト)を足して 1472 + 28 = 1500バイト がMTUということになります。
VPN越しの通信が遅い、特定のサイトだけ表示されないといった症状は、MTU不一致が原因であることが少なくありません。
IPv6環境でのping(ping -6 / ping6)
IPv6アドレスに対してpingを実行する場合は、ping -6 または ping6 コマンドを使用します。# IPv6アドレスを指定してpingを実行する $ ping -6 -c 3 ::1 PING ::1(::1) 56 data bytes 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.025 ms 64 bytes from ::1: icmp_seq=2 ttl=64 time=0.038 ms 64 bytes from ::1: icmp_seq=3 ttl=64 time=0.035 ms # ping6コマンドでも同じ結果が得られる $ ping6 -c 3 ::1
ping コマンド自体がIPv4/IPv6の両方に対応しており、ping -6 でIPv6を明示的に指定できます。古い環境では ping6 という別コマンドを使う必要がある場合もあります。ネットワーク障害時の疎通確認手順(現場の鉄則)
「サーバーにつながらない」という障害が発生した場合、闇雲にpingを打つのではなく、近いところから順番に確認していくのが鉄則です。以下の順序で確認することで、問題がどこにあるかを効率よく絞り込めます。1. ループバックアドレスにpingを打つ(自分自身の確認)
# 自分自身(ループバック)に疎通確認 $ ping -c 3 127.0.0.1
2. デフォルトゲートウェイにpingを打つ
# デフォルトゲートウェイを確認する $ ip route show default default via 192.168.1.1 dev eth0 # ゲートウェイにpingを実行する $ ping -c 3 192.168.1.1
3. 外部のDNSサーバーにpingを打つ
# GoogleのパブリックDNSにpingを実行する $ ping -c 3 8.8.8.8
4. 目的のサーバーにIPアドレスでpingを打つ
# 目的のサーバーにIPアドレスでpingを実行する $ ping -c 3 203.0.113.10
5. 目的のサーバーにホスト名でpingを打つ
# ホスト名を指定してpingを実行する $ ping -c 3 www.example.com
トラブルシュート:「Destination Host Unreachable」と「Request timed out」の違い
pingが失敗したとき、エラーメッセージによって原因が異なります。この2つの違いを理解しておくと、トラブルシュートの精度が格段に上がります。Destination Host Unreachable
$ ping -c 3 192.168.1.200 From 192.168.1.1 icmp_seq=1 Destination Host Unreachable From 192.168.1.1 icmp_seq=2 Destination Host Unreachable From 192.168.1.1 icmp_seq=3 Destination Host Unreachable
・同一サブネットの場合: 相手ホストがARP(Address Resolution Protocol)に応答しない。ケーブル未接続、相手ホストのNICが無効、IPアドレスの設定ミスが主な原因
・異なるサブネットの場合: ルーターが宛先ネットワークへの経路を持っていない。ルーティングテーブルの設定ミスが考えられる
Request timed out(応答なし)
$ ping -c 3 -W 3 203.0.113.50 PING 203.0.113.50 (203.0.113.50) 56(84) bytes of data. --- 203.0.113.50 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 2003ms
・相手サーバーのファイアウォール(iptables/firewalld/セキュリティグループ)でICMPがブロックされている
・ネットワーク経路上でパケットがドロップされている
・相手サーバーが高負荷でICMPの応答処理が追いつかない
重要なポイント: pingに応答がないからといって、相手サーバーがダウンしているとは限りません。セキュリティ対策としてICMPを意図的にブロックしているサーバーは多数存在します。Webサーバーであれば、
curl -I でHTTP応答を確認するなど、別の手段での疎通確認も行ってください。ファイアウォールでICMPがブロックされているケースへの対処
サーバーを管理していてpingが通らない場合、ファイアウォールの設定を確認しましょう。firewalldの場合(RHEL/CentOS/AlmaLinux/Rocky Linux)
# 現在のゾーンでICMPがブロックされているか確認する # firewall-cmd --query-icmp-block=echo-request # ICMPのブロックを解除する(一時的) # firewall-cmd --remove-icmp-block=echo-request # ICMPのブロックを恒久的に解除する # firewall-cmd --permanent --remove-icmp-block=echo-request # firewall-cmd --reload
iptablesの場合
# ICMPに関するルールを確認する # iptables -L -n | grep icmp # ICMPをDROP/REJECTしているルールがあれば削除する # iptables -D INPUT -p icmp --icmp-type echo-request -j DROP
AWSなどクラウド環境のセキュリティグループ
AWSのEC2インスタンスでpingを通すには、セキュリティグループのインバウンドルールで「すべてのICMP - IPv4」を許可する必要があります。デフォルトではICMPは許可されていないため、新規構築したインスタンスでpingが通らないのは正常な動作です。本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| IPアドレスに疎通確認する | ping 192.168.1.1 |
| ホスト名に疎通確認する | ping www.example.com |
| 回数を指定してpingを実行する | ping -c 5 192.168.1.1 |
| 送信間隔を変更する | ping -i 0.2 -c 10 192.168.1.1 |
| 応答タイムアウトを設定する | ping -W 2 -c 5 192.168.1.1 |
| 実行時間の上限を設定する | ping -w 10 192.168.1.1 |
| パケットサイズを変更する | ping -s 1000 -c 3 192.168.1.1 |
| MTUを確認する | ping -M do -s 1472 -c 3 192.168.1.1 |
| IPv6で疎通確認する | ping -6 -c 3 ::1 |
| ICMPブロック状況を確認する | firewall-cmd --query-icmp-block=echo-request |
ネットワーク障害の原因切り分け、自信を持ってできますか?
pingの結果を見て「通らないから相手が悪い」で終わっていては、現場で頼られるエンジニアにはなれません。疎通確認から原因の特定、復旧までの一連の流れを体系的に身につけることが大切です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:デフォルトゲートウェイ(ルータ)を設定する
- 前のページへ:FTPコマンドでファイルの途中からダウンロードする
- この記事の属するカテゴリ:Linuxtips・ネットワークへ戻る

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