ネットワーク管理に不可欠なツールは、Linux の Ping コマンドです。 ping
を使用した可能性があります 基本的なトラブルシューティングの前に—しかし、このコマンドは何をしますか?
ping
コマンドは、インターネット制御メッセージ プロトコル (ICMP) 要求をリモート ホストまたはローカル ホストに送信し、応答を待ちます。応答がない場合、接続またはホスト自体に問題がある可能性があります。
Linux で ping コマンドを使用する実用的な方法を読んで調べてください!
前提条件
このチュートリアルは実践的なデモンストレーションです。先に進みたい場合は、インターネットに接続された Linux コンピューターがあることを確認してください。このチュートリアルでは、Ubuntu 20.04 コンピューターを使用します。
また、Linux コンピューターで既にターミナル セッションを開いていることを確認してください。
ローカル ネットワーク接続の確認
Web アプリケーションを開発していると想像してください。ホストのループバック アドレス (127.0.0.1) を介してアプリケーションにアクセスしようとすると、テストは失敗します。アプリケーションのトラブルシューティングを行う前に、ping
を使用して TCP/IP プロトコルが内部で動作することを確認してください。 コマンド。
IPv4 と IPv6 のデフォルトのループバック アドレスは、それぞれ 127.0.0.1 と 0:0:0:0:0:0:0:1 (または ::1) です。
ループバック アドレスの接続を確認するには、次の ping
を実行します。 コマンドの後に端末のループバック アドレスを指定します。このコマンドは、ping
の最も基本的な使い方を示しています。 Linux のコマンド
ping 127.0.0.1
ループバックが正常に機能する場合は、以下のスクリーンショットと同様の出力が表示されるはずです。

または、localhost
に ping を送信します。 hostname はデフォルトでループバック アドレスに解決されるため、同じ結果になるはずです。

ping
を終了するには コマンド、CTRL+C
を押します 端末で。そうしないと、ping コマンドが継続的に実行されます。
注:ping コマンドを停止するために CTRL+Z を押さないでください。これを行うとコマンドは停止しますが、プロセスはバックグラウンドで実行されたままになります。

Ping コマンドの Linux 出力について
先に進む前に、出力を単に「機能する」と解釈するのではなく、明示的に理解することをお勧めします。下の画像とそれに続く値の内訳を参照してください。

- あ (
bytes
) – ICMP エコー要求 (パケット) のサイズをバイト単位で表示します。 - B (
from
) – ターゲット ホストの IP アドレスfrom
を表示しますping
コマンドは応答を受け取ります。 - C (
icmp_seq
) – パケット送信の順序を示します。ご覧のとおり、ping は ICMP 要求を順番に送信します。値はicmp_seq=N
を示します 、ここでN
は注文番号です。 - D (
TTL
) – ICMP 要求の Time-To-Live (TTL) 値を表示します。デフォルト値は 64 です。これは、リクエストが最大 64 ホップまでしか存続できず、その後期限切れになることを意味します。可能な最大値は 255 です。 - E (
time
) – リクエストが送信先に到達して送信元に戻るまでの合計時間 (ミリ秒)。この値は、Round Trip Time (RTT) とも呼ばれます。time
この例では、ターゲットが同じマシンであるため、値は 0.1 ミリ秒未満です。time
ping
宛先がリモートであるか、インターネット アドレスを持っている - F (
statistics
) –ping
の概要と統計を表示します コマンド結果。概要には、送受信されたパケット数、パケット損失率、および合計時間が表示されます。一番下の行には、合計 RTT の最小、平均 (平均値)、最大、および標準偏差が表示されます。
インターネット プロトコル バージョンの強制
ping コマンドはデフォルトで IPv4 を使用します。しかし、アプリケーションの IPv6 との互換性をテストしている場合はどうでしょうか? ping コマンドで強制的に IPv6 を使用するには、Linux で ping コマンドに -6 オプションを指定する必要があります。以下のコードで確認できます。
ping -6 localhost
以下に示すように、from 応答は、応答が IPv6 ループバック アドレス (::1) からのものであることを示しています。

-6 オプションの代わりに -4 オプションを使用すると、ping で IPv4 を使用するように強制されます。ただし、ping のデフォルトは IPv4 であるため、通常は -4 オプションを指定する必要はありません。
返信数の制限
前の例では、CTRL+C を押して ping コマンドを終了する必要がありました。そうしないと、継続的に実行されてしまうからです。
-c オプションを使用すると、ping コマンドが停止するまでに受信する応答の数を指定できます。このオプションを使用する理由場合によっては、10 個、100 個、1000 個の ICMP パケットなどにシステムがどのように応答するかをテストしたい場合があります。
次のコマンドを実行して、5 つの ICMP パケットをターゲット ホストに送信します。 5 を、停止する前に受信する ICMP 応答の数に置き換えます。
ping -c 5 localhost
以下に示すように、ping コマンドは 5 回目の要求 (icmd_seq=5) の後に停止し、CTRL+C を押して終了する必要はありませんでした。

リクエスト間隔の調整
2 つのデバイス間のネットワーク接続をテストする必要があり、そのうちの 1 つが低帯域幅であるとします。この場合、2 番目のデバイスが現在の ICMP パケットを処理するのに十分な時間を確保できるように、各要求の間隔を長くすることができます。
ping
コマンドは、デフォルトで前の ICMP 要求を完了してから 1 秒後に、後続の ICMP 要求を送信します。遅延を調整するには、-i
を指定する必要があります オプションの後に秒単位の遅延値を指定します。
たとえば、以下の ping
を実行します。 リクエスト間の 2 秒間隔で 5 つの ICMP リクエストを送信するコマンド。
ping -c 5 -i 2 localhost
別の例として、以下の ping
を実行します
ping -c 5 -i 0.5 localhost
間隔が異なる両方のコマンドの結果を比較すると、合計 time
の違いが示されます

フラッド攻撃のシミュレーション
ping フラッドは、攻撃者がターゲット デバイスを ICMP パケットで圧倒しようとする一種のサービス拒否 (DoS) 攻撃です。攻撃の目的は、標的のマシンを圧倒して、過負荷になり、正当なユーザーが使用できなくなるほど多くの要求に応答することです。
フラッド攻撃をシミュレートして、システムが攻撃にどのように応答するかをテストできます。しかし、心配しないでください。 ping フラッド シミュレーションは制御されており、CTRL+C を押すことでいつでも停止できます。
ローカル マシンで次のコマンドを実行して、デバイスが 1 秒あたりに処理できるリクエスト数を確認します。 -f
オプションは、複数の ping パケットを迅速に無制限に送信することを意味します。
localhost を、テストするアプリの IP アドレスまたはホスト名に置き換えます。この例では、ローカル ホストのみで ping フラッドをシミュレートします。 ping コマンドを約 5 秒間実行してから、CTRL+C
を押します。 終了します。
ping -f コマンドを使用するには、root ユーザーであるか、sudo 権限が必要です。
ping -f localhost
以下に示すように、ping コマンドは 124,685
を送受信できました。 4276
内の ICMP パケット 0%
のミリ秒 パケットロス。かなりいいですね。ただし、実際の使用例では、パケット損失が発生します。ネットワークは完全ではないため、パケット損失は避けられません。

インターネット接続を確認しています
誰もがなんらかの方法でインターネットを使用していますよね?ブラウザーを使用して Web サイトを読み込もうとしたが、ページの読み込み時間が遅く感じたとします。この症状は、DNS 解決が機能していることを示していますが、ネットワーク速度に何らかの影響があります。
サードパーティ ツールを使用せずに問題を診断すると、ping
が含まれます。 指図。コマンドの使用法は、ローカル ネットワーク接続をテストする場合と同じです。ただし、ループバック アドレスをターゲットにする代わりに、パブリック IP または Web アドレスを指定します。
以下のコマンドを実行して、外部の公開 Web サイトに ping を送信します。 adamtheautomator.com を置き換えます 必要に応じて別の Web アドレスを使用してください。
ping -c 5 adamtheautomator.com
すぐに、ローカルホストに ping を実行したときよりも時間の値が比較的高いことに気付くでしょう。この消費時間の増加は、ターゲット アドレス adamtheautomator.com によるものです。 は同じホスト内になく、同じネットワーク上にもありません。
前の手順では、ping コマンドは成功しましたが、実際の使用では、考えられるさまざまな理由で ping コマンドが失敗する場合があります。
以下は、いくつかの一般的なエラーとそのトラブルシューティング方法です。
- 宛先ホストに到達できません – このエラーは、宛先ホストへのルートがないことを意味します。このエラーは、ホストまたはドメインがダウンしている場合に発生する可能性があります。
- リクエストがタイムアウトしました – このエラーは、宛先ホストへの要求に時間がかかりすぎて (4 秒または 4000 ミリ秒以上かかりました)、接続がタイムアウトしたことを意味します。このエラーは、宛先ホストがビジー状態で応答できない場合、ファイアウォールが接続をブロックしている場合、またはネットワーク ハードウェア (ケーブル、ルーターなど) に欠陥がある場合に発生する可能性があります。
- 不明なホスト – このエラーは、DNS がホスト名を IP アドレスに解決できないことを意味します。正しいホスト名を入力したことを確認してください。ルーターが正常に動作していない疑いがある場合は、ルーターを再起動してみてください。
- 転送中に TTL が切れました – このエラーは、ICMP 要求が宛先に到達する前に期限切れになったことを意味します。 ping パケットは、宛先ホストに到達する前にゼロ (0) に減少します。ほとんどの場合、ルーティング テーブルの構成ミスが原因でこのエラーが発生する可能性があります。ルート テーブルを調べて、問題がないかどうかを確認してください。
ご存じない場合:プレーヤーは、ping をゲーム コミュニティ内のゲーム サーバーへの接続と呼んでいます。 ping が低いということは、特にペースの速いゲームで、より応答性の高い接続を意味します。 ping が高い場合は、接続の応答が遅く、ゲームが遅く感じられる可能性があることを示します。
一部のインターネット サービス プロバイダ (ISP) は、存在しない Web サイトに接続しようとすると、エラー メッセージではなく検索ページを返します。エラーではなく応答を得ているため、偽陽性の結果が得られる場合があります。
ファイルへの Ping 出力の保存
すべてではないにしても、ほとんどのコマンドは画面に結果を返すだけで、 ping
Linux のコマンドも例外ではありません。 Linux ターミナルには、出力をファイルにリダイレクトできる組み込みの出力リダイレクト演算子があります。
これらのリダイレクト演算子は次のとおりです:
(>
) 文字、ファイルの内容を上書きします;
(>>
) 文字。出力を既存のコンテンツに追加します。
しかし、なぜ ping の結果をファイルに保存する必要があるのでしょうか?主に、テキスト エディターまたはログ パーサーを使用した記録保持および後で分析するため。
スプレッドシート プログラムを使用して、時間の経過に伴う ping 時間の変化を示すグラフを作成することもできます。
次のコマンドを実行して、ping 出力をファイルに保存します。このコマンドは、ping
からのすべての標準出力を書き込みます。 log.txt という名前のファイルへのコマンド ディスク上。
ping -c 10 localhost > log.txt
ping
コマンドが実行されている場合、画面に出力がないことに気付くでしょう。
次に、log.txt を開きます nano
などのテキスト エディターでファイル .または cat
を実行してファイルの内容を表示します コマンド。
# Open in a text editor
nano log.txt
# OR
# Display the contents on the screen
cat log.txt


結論
このチュートリアルでは、Linux で ping コマンドを使用する方法を、さまざまな実用的な例とともに学習しました。また、後で分析できるように、ping 出力をディスク上のファイルに保存する方法も学びました。
この時点で、ping コマンドがどのように機能し、どのように役立つかを十分に理解している必要があります。ただし、外に出て目に見えるすべてのものに ping を開始する前に、ICMP トラフィックを許可するためにセキュリティ グループで有効にする必要があるルールがいくつかあります。
読んでくれてありがとう。楽しく学べます!