現場で使える技

ping/tracert での『要求がタイムアウトしました』と『宛先ホストに到達できません』の違いや『一般エラー』

Pingが成功した場合

Pingがうまくいった場合は以下のように表示されます。

c:\>ping 192.168.179.1
192.168.179.1 に ping を送信しています 32 バイトのデータ:
192.168.179.1 からの応答: バイト数 =32 時間 =9ms TTL=64
192.168.179.1 からの応答: バイト数 =32 時間 =3ms TTL=64
192.168.179.1 からの応答: バイト数 =32 時間 =7ms TTL=64
192.168.179.1 からの応答: バイト数 =32 時間 =4ms TTL=64
192.168.179.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 3ms、最大 = 9ms、平均 = 5ms

Ping は、宛先IPに対して『ICMP Echo Request』を送信し、相手から『ICMP Echo Reply』が返ってきたら成功とみなし、上記のような表示を返します。

『損失 = 0』というのは、『複数回 (上記の例ではデフォルトの 4 回) 送信した ICMP Echo Request に対し、毎回何かしらの ICMP パケットを受信した』(つまりパケットロスが無かった) という意味です。

後述しますが、宛先 IP からの ICMP Echo Reply でなくても (Destination Unreachable でも)、何かしらの ICMP パケットを受信していれば、損失にはカウントされません

『ラウンドトリップの概算時間』というのは Ping を送信してから戻ってくるまでの時間です。上記の例では 4 回の Ping のうち、最小が 3 ミリ秒、最大が 9 ミリ秒、平均が 5 ミリ秒です。

Pingがうまくいかない場合

表示される結果によって原因が異なります。下記で理解できない場合、ICMP についての以下 2 つを学んで下さい。

【図解】ICMPとは 〜Pingの仕組みやエラー通知によるIP通信の補助〜
ICMPとは ICMP (読み方:あいしーえむぴー) とは Internet C...
【一覧】ICMP ポート番号, Type/Code ~種類とメッセージの意味について~
ICMPのポート番号 TCP/UDP とは異なり、ICMP にはポート番号という...

要求がタイムアウトしました (Request timed out)

この表示がある場合は基本的に、宛先 IP に対して ICMP Echo Request を送信したにも関わらず、タイムアウトの時間 (デフォルト) が経過しても ICMP Echo Reply が返って来なかった場合に表示されます。

この状態は、ICMP Echo Request が経路途中でパケットロスしているか、ICMP Echo Reply が経路途中でパケットロスしているかは判別できません。

NW 機器のファイアウォール等で通信が通らない箇所があるか、対向ホスト側での Windows ファイアウォール、firewalld、セキュリティソフトでICMP を止めていることが原因です。

なお、例外的に、同一セグメント内での Ping の場合、宛先ホストから ARP 応答が無くてもこの表示になります。

宛先ホストに到達できません (Destination Host Unreachable)

この表示がある場合は基本的に、宛先 IP に対して ICMP Echo Request を送信したが、(宛先 IP から ICMP Echo Reply パケットが返ってくるのではなく)、経路途中の NW 機器から ICMP Destination Unreachable の Host Unreachable パケットが返ってきている状態です。

c:\>ping 10.1.1.1
10.1.1.1 に ping を送信しています 32 バイトのデータ:
192.168.179.1 からの応答: 宛先ホストに到達できません。
192.168.179.1 からの応答: 宛先ホストに到達できません。
192.168.179.1 からの応答: 宛先ホストに到達できません。
192.168.179.1 からの応答: 宛先ホストに到達できません。
10.1.1.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)

『要求がタイムアウトしました』と違い、Host Unreachable が返ってくるトリガーとなるのは、対象ホストが ARP に応答しない場合です。(上図だとホスト B が、ルータ B からの ARP 要求に応答しない)

『損失 = 0』 となっている点に着目して下さい。これは Windows の表現の問題で、前述の通り、ICMP が返ってきていれば受信にカウントされ、損失にはカウントされないようです。

なお、同一セグメント内での Ping で、上記表示の『~からの応答』が自身の IP である場合は例外で、Ping のタイムアウトより前に、ARP Request のタイムアウト (1秒) が先の場合は内部的にICMP Destination Unreachable を自分自身宛に生成し、上記表示がされるようです。

ping に -w 1001 (Ping のタイムアウト 1001 ミリ秒) のオプションを付けると、『要求がタイムアウトしました』と『宛先ホストに到達できません』が交互に見られます

c:\>ping 192.168.179.15 -w 1001
192.168.179.15 に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
192.168.179.4 からの応答: 宛先ホストに到達できません。
要求がタイムアウトしました。
192.168.179.4 からの応答: 宛先ホストに到達できません。
192.168.179.15 の ping 統計:
パケット数: 送信 = 4、受信 = 2、損失 = 2 (50% の損失)

転送に失敗しました。一般エラーです。(transmit failed. General Failure.)

これは Windows が ICMP Echo Request を送信できなかったが、できなかった原因が不明の場合に表示されます。単にタイミングの問題か、端末のネットワークの問題か、原因は多岐に渡ります。

例として、ping -t で Ping を打ち続けた状態で、インタフェースの IP を適当に変更したり、デフォルトゲートウェイが設定されていない状態で異なるセグメントへ Ping しようとすると、表示されます。

転送中にTTLが期限切れになりました (TTL expired in transit)

ルーティングをする際にはIPヘッダのTTLフィールドの値を1つ減らします。ルータにTTL=1のパケットが入ってきたとき、さらにルーティングが必要になる場合 (宛先 IP アドレスがその NW 機器に Connected の NW アドレスではない場合)、 TTL=0となり、その NW 機器でパケットが破棄されます。破棄されるタイミングで NW 機器からICMP の Time Exceeded が 送信元 IP アドレス宛に通知されます。

この場合の原因はたいてい、どこかでルーティングループが起こっています。『経由する NW 機器が多過ぎる』という可能性もありますが、現在では、あり得ないと考えても良いレベルです。

ルーティングループの発生箇所を確認したい場合は、traceroute (tracert) を使って調査します。traceroute (tracert) の仕組みと使い方については下記を参照下さい。

図解 tracert の見方 ~WindowsとLinuxの違い(icmp/udp),経路途中のIPが表示されない理由~
traceroute (tracert)とは tracert (Linux 系の...

Ping の応答時間が遅い場合

タイムアウトの 3 秒までは掛からないけど、『1 秒を超えて ICMP Echo Reply が戻ってくる』場合は何かしら異常です。経路上のどの IP が応答が遅いのかをチェックするのがよいでしょう。

pathping であれば Windows に標準搭載されていますので扱いやすいです。

c:\>pathping 8.8.8.8google-public-dns-a.google.com [8.8.8.8] へのルートをトレースしています
経由するホップ数は最大 30 です:
0 Host-A [192.168.179.4]
1 192.168.179.1
2 * * *
統計を 25 秒間計算しています...
ソースからここまで このノード/リンク
ホップ RTT 損失/送信 = Pct 損失/送信 = Pct アドレス
0 Host-A [192.168.179.4]
0/ 100 = 0% |
1 8ms 0/ 100 = 0% 0/ 100 = 0% 192.168.179.1トレースを完了しました。

コメント

タイトルとURLをコピーしました