Linux入門:コマンド操作のきほん

ping で接続確認

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

このレッスンで分かること

  • ping は ICMP Echo Request を送って RTT を測る、最も基本の接続確認コマンド
  • クラウドや Cloud Functions では権限制約で使えないことが多く、代替は curl / nc
  • 旧コマンド ifconfig / netstat は非推奨、現代は ip / ss を使う

ping で接続確認 とは

pingコマンドでネットワーク疎通を確認し、サーバーとの接続をチェックする操作を学びます。本レッスンでは、ping で接続確認 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

なぜ ping を学ぶか

ping は「相手のホストにパケットが届くか」を最も手軽に確認するコマンドで、ネットワークが怪しいときの最初の一手として今でも現役です。Web サーバーが応答しないとき、Wi-Fi が切れたとき、リモートのデータベースに接続できないとき、まず ping を打って「そもそも経路が通っているか」を見ます。

本コースの実行環境 (Cloud Functions) では ICMP プロトコルが制限されており ping を直接実行することはできませんが、概念は実務で必須なのでしっかり押さえます。手元の Linux や macOS なら ping example.com ですぐ試せます。

ping の仕組み

pingICMP Echo Request という小さなパケットを相手に送り、戻ってくる Echo Reply を待ちます。届くまでの時間を RTT (Round Trip Time) と呼び、ミリ秒単位で表示されます。

ターミナル

ping -c 3 example.com # PING example.com (93.184.216.34) 56(84) bytes of data. # 64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=15.2 ms # 64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=15.3 ms # 64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=15.1 ms # # --- example.com ping statistics --- # 3 packets transmitted, 3 received, 0% packet loss, time 2003ms # rtt min/avg/max/mdev = 15.116/15.213/15.305/0.077 ms

-c 3 は「3 回だけ送ってやめる」オプション。デフォルトでは Ctrl + C を押すまで送り続けます。

主要オプション

オプション役割
-c NN 回送って終了
-i 秒送信間隔を指定 (デフォルト 1 秒)
-W 秒1 回の応答待ちタイムアウト
-s バイトパケットサイズを変更
-4 / -6IPv4 / IPv6 を強制

図解 ping のパケットの流れ

diagram (will load when visible)

リクエストと返信のラウンドトリップで RTT が算出されます。途中の経路のどこかでパケットが落ちると、packet loss の数値が増えて表示されます。

実行できないとき

Cloud Functions やコンテナ環境では ping を実行すると次のように見えます。

ターミナル

ping example.com # ping: socket: Operation not permitted

これは ICMP ソケットを作る権限が無いためで、コマンドが壊れているわけではありません。同じ理由で AWS Lambda や Google Cloud Run でも ping は通常使えません。クラウドでは代わりに次のコマンドで疎通確認をします。

ターミナル

# HTTP/HTTPS が通るかを確認 curl -v --max-time 5 https://example.com # TCP ポートが空いているかを確認 nc -vz example.com 443

「ping が通らない = 落ちている」とは限りません。多くの本番環境ではセキュリティ上の理由で ICMP をブロックしています。HTTP は通るのに ICMP が通らない、というケースはむしろ普通です。

古いコマンドと現代版

ネットワーク状態を確認する系のコマンドは、過去数年でかなり置き換わりました。古い記事を読むときは次の対応関係を頭に入れておくと、現代の Linux でも迷いません。

古い現代版用途
ifconfigip aインターフェイス確認
routeip rルーティングテーブル
netstat -tlnpss -tlnplisten ポート確認
arp -aip neighARP テーブル
iptablesnftパケットフィルタ

ifconfignetstatnet-tools パッケージに同梱されていますが、最近の Ubuntu や Debian ではデフォルトで入っていません。

ping 以外の経路確認

traceroute (または tracepath) は、相手に届くまでに通過するルーターを 1 段ずつ表示してくれます。途中のどこで詰まっているのかを見るのに役立ちます。mtrpingtraceroute を合体させた対話的ツールで、リアルタイムに経路の品質を観察できます。

ターミナル

traceroute example.com # 1 192.168.1.1 0.5 ms 0.4 ms 0.4 ms # 2 10.0.0.1 2.1 ms 2.0 ms 2.0 ms # 3 * * *

DNS と切り分ける

ping example.com が応答しなくても、ping 93.184.216.34 で IP 直打ちなら通る、というケースがあります。この場合は DNS が壊れている可能性が高く、/etc/resolv.conf の設定を確認します。逆に IP も通らない場合は、ネットワーク経路またはサーバー本体の問題です。

トラブル発生時、ping の使い方は「ホスト名で打ってみる」「IP 直打ちで打ってみる」の 2 段階で十分に多くを語ります。両方失敗したら経路の問題、ホスト名だけ失敗したら DNS の問題、という切り分けがすぐにできます。

この章のポイント

ここまでの要点 ping は ICMP の往復で RTT を測る。クラウドでは権限で使えず、curl / nc で代替。ifconfig netstat は非推奨、ip ss に置き換え。DNS と経路の切り分けはホスト名 + IP の 2 段階で。

まとめ

  • ping は ICMP Echo Request を送って RTT を測るコマンド
  • クラウド/コンテナ環境では権限の制約で実行できないことがある
  • curl -vnc -vz で HTTP / TCP の疎通を代用できる
  • 旧コマンド ifconfig / netstat は非推奨。ip / ss を使う
  • DNS 問題か経路問題かは、ホスト名と IP の両方を試して切り分ける

次のレッスン

次は curl で HTTP リクエスト で、HTTP リクエストを curl で送りレスポンスを確認する方法を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. ping コマンド の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. ping コマンド とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

参考リンク