pingコマンドは、ネットワークにおいて最も一般的で便利なツールの1つです。接続性をテストしたり、遅延を測定したり、あるデバイスと別のデバイス間のパケットロスを検出したりするのに使われる。その動作は、OSIモデルのネットワーク層で動作するインターネット制御メッセージプロトコル(ICMP)に基づいています。
ユーザーがコマンドを実行すると、コンピューターはICMPエコー要求パケットをターゲットホストに送信する。このパケットにはタイムスタンプとシーケンス番号が含まれている。ターゲットデバイスが到達可能であれば、ICMPエコー応答パケットで応答する。リクエストが送信された時刻と、リプライが受信された時刻を比較することで、プログラムは、レイテンシとしても知られるラウンドトリップタイムを計算します。このプロセスの間、pingはパケットのサイズ、シーケンス番号、残りのホップ数を示すtime-to-live値、測定された応答時間などの詳細情報を表示します。実行が終了すると、コマンドは、送受信されたパケット数、パケットロスの割合、平均待ち時間を報告して結果を要約します。
オペレーティングシステムのネットワークスタックはこのプロセスで重要な役割を果たす。ICMPリクエストはカーネルのIPレイヤーに渡され、そこでIPパケットにカプセル化されてネットワーク上に送信される。リプライが届くと、カーネルはそれをユーザー空間のpingプロセスに送り返す。その後、プログラムは応答を解釈し、平均ラウンドトリップタイムやパケットロスなどの統計情報を計算し、人間が読める形式で結果を表示する。
Ubuntuで pingコマンドが利用できない原因はいくつか考えられます:
pingコマンドは、Ubuntuのiputils-pingパッケージによって提供されています。インストールするには、以下の手順に従ってください。
ソフトウェアをインストールする前に、システムのパッケージリストを更新して、利用可能なパッケージの最新バージョンを入手することをお勧めします:
sudo apt update
pingコマンドを含むパッケージをインストールします:
sudo apt install iputils-ping -y
このコマンドは、依存関係とともにiputils-ping をダウンロードしてインストールします。
インストールが完了したら、pingが利用可能になったことを確認してください:
ping -V
すべてのパッケージが正常にインストールされていれば、以下のように表示されるはずです:
デフォルトの方法でうまくいかない場合は、次のような方法もあります:
一部の最小Ubuntuディストリビューションには、デフォルトでaptが含まれていません。Snapがインストールされている場合は、以下の方法でpingをインストールできます:
sudo snap install iputils
BusyBoxは、pingを含む様々なUnixユーティリティを含む軽量な代替ツールです。インストールしてください:
sudo apt install busybox
次に、以下を実行する:
busybox ping google.com
これでBusyBox経由でpingが利用できることが確認できます。
パーミッションエラーが表示される場合は、セキュリティ上の制限が原因である可能性があります。実行してみてください:
sudo chmod u+s /bin/ping
これにより、非rootユーザーがpingを使用できるように、正しいパーミッションが設定されます。
Ubuntuでiputils-pingパッケージが見つからない場合は、リポジトリのソースが更新されていることを確認してください:
sudo apt update && sudo apt upgrade
問題が解決しない場合は、/etc/apt/sources.list のソースリストを確認してください。