ネットワークが繋がっているかどうかをすぐ確かめたいときは、ping コマンドが最初の選択肢です。基本の使い方はこれだけです。
ping 192.168.1.1
実行すると、指定したIPアドレスへICMPパケットを送り続け、応答が返るたびに1行ずつ結果が表示されます。Linux の ping はデフォルトで無限に送り続けるため、終了するには Ctrl+C を押します。止め方の詳細は後述しますが、まず仕組みと出力を理解しておきましょう。
pingの仕組み:ICMPパケットで往復を確認する
ping は ICMP(Internet Control Message Protocol)を使い、「Echo Request」パケットを相手ホストへ送ります。相手がパケットを受け取ると「Echo Reply」を返すので、この往復が確認できればネットワーク経路に問題がないと判断できます。
各行に含まれる time= の値が、パケットの往復所要時間(RTT: Round Trip Time)です。同一セグメント内であれば 1ms 以下が普通で、数十 ms を超えるようなら経路上の輻輳や機器の問題が疑われます。
Ctrl+C と Ctrl+Z の違い:止め方を正しく使い分ける
Linux で ping を止める方法は2通りあり、混同しがちです。
Ctrl+C はプロセスにSIGINTシグナルを送り、統計サマリーを表示してコマンドを完全に終了します。通常はこちらを使います。
Ctrl+Z はプロセスを「一時停止」してバックグラウンドへ送るだけで、プロセス自体は生き続けます。うっかり Ctrl+Z で止めてしまった場合は、jobs コマンドで確認し、kill %1 で明示的に終了させてください。
$ 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.44 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=2.11 ms
^Z
[1]+ Stopped ping 192.168.1.1
$ jobs
[1]+ Stopped ping 192.168.1.1
$ kill %1 # ジョブ番号1を終了
[1]+ Terminated ping 192.168.1.1
回数指定で自動終了させる:スクリプト利用の定石
スクリプトや監視作業では、-c オプションで送信回数を指定して自動終了させるのが実務の定石です。-c を付けないと永久に実行され続け、スクリプトが止まらなくなります。
# 4回送信して自動終了
ping -c 4 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
--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 2.033/3.020/4.753/1.063 ms
応答を待つ最大秒数は -W で指定できます。タイムアウト値を短くしておくと、ホストが落ちているときにスクリプトの待機時間を削減できます。
# 3回送信・応答タイムアウト2秒(スクリプトに組み込む場合の推奨形)
ping -c 3 -W 2 192.168.1.1
統計サマリーの読み方
Ctrl+C 終了後、または -c で自動終了後に表示される統計行の意味を整理します。
n packets transmitted:送信したICMPパケットの総数。n received:相手から返ってきたパケット数。n% packet loss:失われたパケットの割合。0% が正常。1% でも継続する場合は経路を調査します。time nms:コマンド全体の実行時間(ミリ秒)。rtt min/avg/max/mdev:往復時間の最小値・平均値・最大値・標準偏差(ミリ秒)。
ある運用現場では、packet loss が 0% でも mdev(標準偏差)が極端に大きく、遅延のばらつきが激しいケースがありました。平均値が正常に見えても、mdev が大きい場合はスイッチの輻輳やケーブルの劣化が疑われます。rtt の4つの値はセットで確認する習慣が問題の早期発見につながります。
ファイアウォール環境での注意点と代替手段
応答がなくても「ホストが落ちている」とは限りません。ファイアウォールやクラウドのセキュリティグループで ICMP がブロックされていると、ホストが稼働していても ping は通りません。
# ICMPがブロックされている場合の出力例
PING 203.0.113.10 (203.0.113.10) 56(84) bytes of data.
--- 203.0.113.10 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2001ms
このような場合は、実際のサービスポートへの疎通を curl や nc(netcat)で直接確認します。
# HTTPポートへの疎通確認
curl -sv --connect-timeout 3 http://203.0.113.10/ 2>&1 | head -5
# nc でポート疎通確認(nc-traditional または ncat どちらも可)
nc -zv -w 3 203.0.113.10 80
逆に、自サーバーが意図的に ICMP を DROP している場合もあります。firewalld や nftables のルールを確認してから判断してください。firewalld 環境では以下で現在のICMPブロック設定を確認できます。
# firewalld でのICMP設定確認
firewall-cmd --list-icmp-blocks
# nftables でのICMP関連ルール確認
nft list ruleset | grep icmp
ホスト名指定とIPv6環境での疎通確認
IPアドレスだけでなくホスト名も指定できます。ホスト名を指定すると DNS 解決も同時に確認できるため、「名前は引けているが実体に届かない」といった問題の切り分けに役立ちます。
# ホスト名で指定(DNS解決の確認を兼ねる)
ping -c 3 example.com
IPv6 環境では -6 オプションで IPv6 アドレスへの疎通を確認できます。現代のディストリビューション(Ubuntu 22.04+、RHEL 9 系など)では ping コマンドが IPv4/IPv6 を自動選択しますが、明示的に切り替えたい場合は -4 または -6 を使います。
# IPv4 を明示指定
ping -4 -c 3 example.com
# IPv6 を明示指定
ping -6 -c 3 example.com
# リンクローカルアドレスへの疎通確認(インターフェース名の指定が必須)
ping -6 -c 3 fe80::1%eth0
リンクローカルアドレス(fe80:: から始まるアドレス)へ疎通確認する際、%eth0 のようにインターフェース名を末尾に付けないと「Invalid argument」エラーになります。これはIPv6 を扱い始めた運用者が最初にはまりやすいポイントです。インターフェース名は ip link show で確認してください。
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
