ping「宛先ホストに到達できません。」の原因を探る

ネットワーク技術解説

ping を使ってネットワークの疎通を確認した際、「宛先ホストに到達できません。」というメッセージで結果が返ってくる場合があります。実際にネットワーク上でどのような確認がおこなわれてどのような原因でこのメッセージが表示されるのかを確認してみます。いざという時のため知っておくと便利です。

ping の結果でよくある他のパターンとして以下のページも参考にしてもらえればと思います。

【ping「要求がタイムアウトしました。」の原因を探る】

pingで確認できる原因はどこまでか

ping とは指定した宛先ホストまでの IP ネットワークの到達性を ICMP のプロトコルを使用して確認するコマンドツールです。

ping コマンドで確認できるのは OSI 参照モデルのレイヤー3に相当するネットワーク層までです。つまり、送信元から宛先ホストとして指定する IPアドレスまでの間のネットワークが問題なく利用できるかどうかの確認までで、それ以上の端末上で動作するサービスやアプリケーションが動いているかどうかまでは確認できません。

pingコマンドの結果

pingが成功した結果の例

Windowsで確認した例

192.168.0.1 -> 192.168.0.2

C:\Users>ping 192.168.0.2

192.168.0.2 に ping を送信しています 32 バイトのデータ:
192.168.0.2 からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.0.2 からの応答: バイト数 =32 時間 =2ms TTL=64
192.168.0.2 からの応答: バイト数 =32 時間 =2ms TTL=64
192.168.0.2 からの応答: バイト数 =32 時間 =1ms TTL=64

192.168.0.2 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 1ms、最大 = 2ms、平均 = 1ms

ping を4回試しすべて ping コマンドで指定した宛先IPアドレスからの応答があるため、宛先ホストに到達できていることがわかります。

pingの結果が「宛先ホストに到達できません。」となる例

Windowsで確認した例

192.168.0.1 -> 192.168.0.2

C:\Users>ping 192.168.0.2

192.168.0.2 に ping を送信しています 32 バイトのデータ:
192.168.0.1 からの応答: 宛先ホストに到達できません。
192.168.0.1 からの応答: 宛先ホストに到達できません。
192.168.0.1 からの応答: 宛先ホストに到達できません。
192.168.0.1 からの応答: 宛先ホストに到達できません。

192.168.0.2 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、

ping を4回試しすべて応答がありますが、ping で指定した宛先ホストからの応答ではありません。この IPアドレスは自身の IPアドレスであることがわかります。つまり宛先ホストまで到達できておらず失敗しています。

ping結果「宛先ホストに到達できません。」の原因

「宛先ホストに到達できません。」はメッセージの通り宛先のホストに到達ができない時のメッセージです。

では、ホストに到達ができないと言っている理由は何かというと以下の3パターンが考えられます。

「宛先ホストに到達できません。」の3つの原因

①同一ネットワークに宛先ホスト(端末)がいない

①同一ネットワークに宛先ホスト(端末)がいない場合

自身と同じネットワーク(LAN)に宛先ホストがいない状態です。Windows PC は、ping の宛先となる IPアドレスを持つ端末を探しているが見つからないのでそもそも ping を実行できない。

②宛先のネットワークへたどり着いたが宛先ホスト(端末)がいない

②宛先のネットワークへたどり着いたが宛先ホスト(端末)がいない場合

宛先のネットワークに宛先ホストがいない状態です。宛先ホストがいるはずのネットワークまで到達しているが、ルーターは ping の宛先となる IP アドレスを持つ端末を探しているが見つからない。

③ルーターが宛先のネットワークを知らない

③ルーターが宛先のネットワークを知らない場合

途中のルーターが宛先のネットワークを知らない状態。Ciscoルーターで確認。

ping結果「宛先ホストに到達できません。」の原因となる動作の詳しい説明

3つの原因のそれぞれについてネットワーク上でおこなわれている具体的な動作について説明します。

原因①の動作 【同一ネットワークのホスト(端末)へ宛先ホストがいない】

C:\Users> ping 192.168.0.3

原因①の動作

自身の端末と同一ネットワークへの ping を実行すると、まず宛先の IP アドレスと MAC アドレスの対応情報が PC の ARP テーブルに存在するか確認します。

ARP テーブルに該当の情報が見つからない場合は、MACアドレスを解決するために ARP 要求を実行します。

しかし、ARP 要求 に対して ARP 応答がない場合は Windows は「宛先ホストに到達できません。」というメッセージを自身で生成して表示します。

ping 結果としては、以下のように自身の IP アドレスからの応答になっています。

C:\Users> ping 192.168.0.3

192.168.0.3 に ping を送信しています 32 バイトのデータ:
192.168.0.1 からの応答: 宛先ホストに到達できません。
192.168.0.1 からの応答: 宛先ホストに到達できません。
192.168.0.1 からの応答: 宛先ホストに到達できません。
192.168.0.1 からの応答: 宛先ホストに到達できません。

192.168.0.3 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、

原因②の動作 【宛先のネットワークへたどり着いたが宛先ホスト(端末)がいない】

C:\Users> ping 192.168.1.3

原因②の動作 ICMP Echo と ARP要求

ping は実行され ICMP はルーターを経由して宛先のネットワークを持つルーターまでたどり着きます。

宛先のIPアドレスと MAC アドレスの対応情報が ルーター の ARP テーブルに存在するか確認します。

ARP テーブルに該当の IP アドレスが見つからない場合は ARP 要求を実行します。
しかし、ARP 要求に対して応答がない場合はルーターは送信元の Windows PC へ ICMP を返信して宛先ホストに到達できなかった旨を知らせます。

原因②の動作 ICMP Host unreachable

ICMP を受信した Windows PC は「宛先ホストに到達できません。」というメッセージを表示します。

ICMP とは、以下のようにネットワークの診断情報をタイプとコードで示す通知メッセージです。

ICMP message nameICMP Echo Request
Type8
Code0
ICMP Echo Request
ICMP message nameICMP Host unreachable
Type3
Code1
ICMP Host unreachable

ping 結果としては、以下のようにルーターの宛先ネットワークを持つインターフェイスからの応答になります。

C:\Users>ping 192.168.1.3

192.168.1.3 に ping を送信しています 32 バイトのデータ:
192.168.1.1 からの応答: 宛先ホストに到達できません。
192.168.1.1 からの応答: 宛先ホストに到達できません。
192.168.1.1 からの応答: 宛先ホストに到達できません。
192.168.1.1 からの応答: 宛先ホストに到達できません。

192.168.1.3 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、

原因③の動作 【ルーターが宛先のネットワークを知らない】

Ciscoのルーターなどでは、ルーターが宛先のネットワークへの情報をもっていない場合に原因②と同じ ICMP Host unreachable を返信します。

C:\Users>ping 192.168.3.1

原因③の動作 ルーターによるルーティングテーブルの確認

ping は実行され ICMP はルーターを経由して宛先のネットワークを持つルーターまでたどり着きます。

宛先のネットワークアドレスとゲートウェイの対応情報が ルーターのルーティングテーブルに存在するか確認します。

ルーティングテーブルに宛先のネットワーク情報が存在しない場合は、ルーターは送信元の Windows PC へICMPを返信して宛先ホストに到達できなかった旨を知らせます。

原因③の動作 ルーターからのICMP Host unreachable の返信

ICMP を受信した Windows PC は「宛先ホストに到達できません。」というメッセージを表示します。

以下のように宛先ネットワークが不明となったルーターからの応答になります。

C:\Users> ping 192.168.3.1

192.168.3.1 に ping を送信しています 32 バイトのデータ:
192.168.0.2 からの応答: 宛先ホストに到達できません。
192.168.0.2 からの応答: 宛先ホストに到達できません。
192.168.0.2 からの応答: 宛先ホストに到達できません。
192.168.0.2 からの応答: 宛先ホストに到達できません。

192.168.3.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、

ちなみに、宛先ネットワークに到達したにもかかわらず Cisco ルーターの ARP に応答がない場合を同じ環境で試してみると、ICMP に何も返信しないのでタイムアウトとなりました。

C:\Users> ping 192.168.1.3

192.168.1.3 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。

192.168.1.3 の ping 統計:
パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、

まとめ

今回は、「宛先ホストに到達できません。」という ping の失敗メッセージの1つだけを説明しました。Ciscoルーターの場合には少しメッセージと動きが違ったのですが、宛先にホストに到達できないとは、基本的には ARP に応答しないことが原因のためその IP アドレスをもつ端末がネットワークにいないことです。ですので、原因の調査としても以下のような基本的なところから確認していくことが大切です。

  • ping の宛先 IPアドレスが間違っていないか確認する。
  • 宛先の端末が設定している IP アドレスを確認する。
  • 宛先の端末がネットワークに接続されているか確認する。

ICMPのメッセージには他にも種類があるので普段から利用している環境で ping を試して使い慣れておくと便利です。

参考リンク

ICMPヘッダのフォーマットとサイズの基本

ping「要求がタイムアウトしました。」の原因を探る

IPアドレス(IP Address)とは – 概要と基本の形

ファイアウォールの概要と基本動作


コメント