ping とは

DevOps

皆さんはネットワークの調子が悪いときに、何が原因かを知りたいと思うことがあるでしょう。

そんなときに便利なのが ping というコマンドです。

pingを使うと、相手先との通信状態や応答速度を確認できます。

例えば「サイトが繋がらない」「DNSの設定は正しいのか」という不安を解消しやすくなるでしょう。

プログラミング初心者やIT業界への転職を考える人にとって、最初に覚えると役立つコマンドの一つでもあります。

なぜならば、ネットワークの基本を手軽に把握できるからですね。

ここでは、pingの仕組みから実践的な使い方までを平易な言葉で解説していきます。

pingの基本原理を簡単に理解する

pingはICMPというプロトコルを使って、相手のホストに問い合わせを行います。

問い合わせを送信し、その応答が返ってくるまでの時間を計測することで、通信にどのくらいの遅延があるかを把握できます。

また、応答が返ってこない場合は、ネットワーク障害の可能性があると判断できるでしょう。

開発やインフラ運用の現場では、pingでチェックするシーンが多いです。

例えば「特定のサーバーとの通信が不安定になった」とか「ネットワーク経路の一部が不通になっている可能性がある」といったケースです。

pingのコマンド結果を見ながら、障害がどこで発生しているのかを絞り込むこともよくあります。

皆さんがプログラミングを始めたばかりの頃であっても、ネットワークの基本動作を理解するためにpingは把握しておくと便利ではないでしょうか。

単に「相手に到達するかどうか」を見るだけでなく、応答速度も測定できるので、チューニングや負荷調査のヒントにもなるかもしれません。

pingのよくある使用例

pingを実行するときは、引数に宛先ホスト名やIPアドレスを指定します。

以下の例では、google.comに対してpingを送っています。

ping google.com

実行すると、宛先に対して何バイトのデータを送信し、どのくらいの応答時間がかかったかが表示されます。

Windowsでは回数を指定しない限り4回送信するのが基本です。

LinuxやmacOSでは回数指定をしないかぎり止まらないことが多いです。

これらの動作はシステムによって少しずつ異なるので、使っているOSのpingの仕様を理解しておくと良いですね。

また、IPv6のみで通信したい場合は ping -6 のようなオプションを使うケースもあります。

管理するサーバーがIPv6に対応しているかどうかを確認するときに使われます。

現場では「このサーバーにはIPv4で繋がらないけど、IPv6なら行けるのかもしれない」という状況があり得るからです。

pingを使うときは、宛先が名前解決できているのかも自然とチェックできます。

例えば名前解決が失敗すると「unknown host」のようなエラーが出る場合があります。

このエラーからDNSの設定が間違っていると推測できるわけです。

応答時間やパケットロスを見極める

pingの結果には、送信回数や受信回数、応答時間の平均値などがまとめられて出力されます。

ここで注目したいのが「time=〇〇 ms」という応答時間と「Packet loss」関連の表示です。

timeが大きいほど、ネットワーク経路や相手側の処理に時間がかかっていることを意味します。

一方、パケットロスが発生している場合は何らかのネットワークトラブルが起きていると判断できます。

特に大規模なシステムでは、pingを継続的に行い、グラフ化して監視することもあるでしょう。

これは一時的に遅延やロスが発生していないかを監視し、問題があればすぐに対処するためです。

初心者の皆さんには、まずはpingの結果を丁寧に読む習慣を身につけるのがおすすめですね。

例えば「応答時間が平均して100msを超えると、ユーザーが体感で遅いと感じるかもしれない」と考えることができます。

もちろんサービスの種類にもよりますが、目安としては応答時間の大小を気にしながら、原因を推測することが実務で大いに活きてくるでしょう。

さまざまなオプションの活用

pingには多くのオプションがあり、より詳細な調査が可能です。

例えばWindowsで「-t」を指定すると、ユーザーが止めるまでpingを打ち続けます。

LinuxやmacOSの場合は回数無制限が基本なので、逆に回数を指定するときは「-c 数字」のオプションを使います。

# LinuxやmacOSの場合
ping -c 5 google.com

これは5回だけ送信するという意味です。

他にも「-i」で送信間隔を指定したり、「-s」でパケットサイズを設定して回線の許容量をテストすることもあります。

実務では「帯域がどのくらいあるのか」を簡易的に測ったり、大きめのパケットを送ってルータが正しく処理できるかを確認したりするわけですね。

また、ログを残したいときはpingの結果をファイルにリダイレクトすることがあります。

例えばLinuxであれば次のようにします。

ping google.com > ping_log.txt

後で読み返すために役立つでしょう。

業務現場では、このログをもとにネットワークチームと情報を共有することも珍しくありません。

実務での具体的な活用シーン

開発やインフラ管理の場面では、pingがきっかけで問題を発見することがよくあります。

例えばアプリケーションサーバーとデータベースサーバーが別のネットワークセグメントにある場合、pingで疎通を確認するだけでも、互いが通信可能かを素早くチェックできます。

もしpingが通らないのであれば、ファイアウォールの設定やルーティングテーブルの問題を疑うことになるでしょう。

加えて、クラウド上に立てた新しい仮想マシンにpingを打ってみたら応答がない場合もあります。

これはクラウドのセキュリティグループがICMPをブロックしているかもしれません。

pingのおかげで、こうした設定ミスを早い段階で発見しやすくなります。

また、VPN経由で遠隔地のネットワークにアクセスしているときもpingが便利です。

「経路上のどこかでパケットがドロップしていないか」を調べる簡単な手段として利用されるのです。

トラブルシューティングでよくある例外パターン

pingが通らないときは必ずしも「サーバーが落ちている」というわけではありません。

セキュリティ対策でICMPを遮断しているケースも多いです。

そのため、pingが通らなくてもサービス自体は正常に動いていることもあるでしょう。

また、特定のネットワーク機器がICMPを返してくれない場合もあります。

このような挙動に遭遇したら、ICMP以外の方法でポートを確認する必要が出てくるかもしれません。

pingの結果だけを頼りに判断すると、誤解を招くことがあるかもしれません。

よくある場面としては、ファイアウォールでICMPをブロックしているけれど、実際に80番ポート(HTTP)の通信は通るといったパターンです。

この場合、pingでは通信不可のように見えますが、実際にはWebサイトにアクセスできることがあります。

WindowsとLinux、macOSでの違い

Windowsでpingを実行すると、既定では4回だけパケットを送信します。

加えて、TTL(Time to Live)や応答速度を表示してくれます。

LinuxやmacOSではデフォルトで無制限にpingを実行するので、自分でCtrl+Cを押して終了させるか、もしくは「-c」で回数を指定するのが一般的です。

# Windows
ping -t 192.168.0.1

# Linux/macOS
ping 192.168.0.1

両者の違いはありますが、基本的な概念は同じなので、どのOSを使っていてもpingのやり方を一度理解すれば迷うことは減るでしょう。

現場ではWindowsユーザーでも、サーバーはLinuxという構成が珍しくありません。

その場合はリモートでLinuxに入ってpingを実行することになります。

異なるOS間でのコマンド挙動を把握しておくと、障害調査がスムーズに進むはずです。

ping以外のネットワーク調査コマンド

pingだけでネットワークのすべてを把握するのは難しいことがあります。

そこで、ほかのコマンドも併用して障害個所を絞り込みます。

例えば traceroute(Windowsでは tracert)を使うと、どのルーターを通過しているかが確認できます。

経路上のどこにボトルネックがあるかを推測しやすくなるでしょう。

pingとtracerouteを組み合わせると、より詳しいネットワーク診断が可能になります。

さらにDNS関連の問題を疑うときは、 nslookupdig を使って名前解決の結果を確認することも多いです。

こうして複数のコマンドを使い分けることで、問題が起きている箇所を突き止めるわけですね。

pingコマンドを扱うときの心構え

pingはとてもシンプルに見えますが、ICMPプロトコルを理解すると一気にネットワークの世界が広がります。

とはいえ、初心者の段階ではあまり細かいところまでは気にしなくても大丈夫ですね。

まずは「到達性」「応答速度」「パケットロス」を簡単に把握できるコマンドとして触ってみるのが良いでしょう。

一方で、セキュリティ上の理由でICMPが切られているケースや、クラウド環境でpingが通らない設定になっているケースもあることを覚えておくと役立ちます。

万が一pingが通らないときは、「本当にネットワーク障害が発生しているのか」「単にICMPをブロックしているだけなのか」を判断する材料にするイメージです。

pingが通らなくても全てがダメとは限らないことを意識しておくと、状況判断がしやすくなります。

ネットワークの学習を始めたばかりならば、pingの結果を読み取るだけでもトラブルシューティングの基本感覚が養われるかもしれません。

まとめ

ここまで、 ping とは 何かという基本から応用的な使い方まで紹介してきました。

pingはネットワークの到達性や応答速度を手軽に確認できるコマンドです。

プログラミング初心者でも簡単に使えるので、知っておくとトラブルシューティングの最初の一歩として重宝するでしょう。

応答時間やパケットロスを観察すれば、ネットワーク経路やサーバー設定に問題があるかどうかをある程度予想できます。

ただし、ICMPをブロックする環境もあり得るので、pingが通らなくても一概に障害とは断定できない点も覚えておきたいですね。

それでもpingを理解し、状況に合わせてさまざまなオプションを使いこなせるようになると、よりスムーズに現場で問題点を特定できるようになるでしょう。

皆さんもこれを機に、pingコマンドを使った基本的なネットワーク診断に親しんでみてはいかがでしょうか。

Shell Scriptをマスターしよう

この記事で学んだShell Scriptの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。