現場で使える技

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 ...
【一覧】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を適当に変更すると表示されます。

転送中に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をコピーしました