解決方法:PsPing で存在しないIPアドレスから応答が返ってくる?

見出し


【PsPingで謎の応答が発生】

ローカルネットワーク内の端末(記事中ではA.A.A.A)にアクセスできないという問い合わせを受けたため、原因調査のためにまず疎通確認を実施しました。
この時たまたま PsPingを使っていました。PsPingはオプションやポートを指定しない場合、通常のPingと同様に ICMPのリクエストを送信します。

その結果…

C:\>psping A.A.A.A

PsPing v2.10 - PsPing - ping, latency, bandwidth measurement utility
Copyright (C) 2012-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Pinging A.A.A.A with 32 bytes of data:
5 iterations (warmup 1) ping test:
Reply from A.A.A.A: 4056.86ms
Reply from A.A.A.A: 4101.19ms
Reply from A.A.A.A: 4091.79ms
Reply from A.A.A.A: 4168.01ms
Reply from A.A.A.A: 3936.02ms

Ping statistics for A.A.A.A:
Sent = 4, Received = 4, Lost =0 (0% loss),
Minimum = 3936.02ms, Maximum = 4168.01ms, Average = 4074.26ms

なんと 4000ms 超え!! 遅いなんてものじゃない。
Windows の通常のPingのデフォルトタイムアウト値くらいの応答速度です。
これは端末またはネットワークに何らかの異常があると見受けられます。
そこで取り急ぎ端末の再起動をしてみるものの、改善せず。

さらに調査を進めてみると、なんと
IPアドレス(A.A.A.A)がARPテーブルに乗っていないことが判明。
ん? なぜARPに存在しないIPアドレスから応答があるのだ…?

【答え合わせ】

謎の応答の正体を探るべく、パケットキャプチャを実施した結果、正体はすぐにわかりました。
それは「Destination unreachable」でした。

実際に通常のPingを実行した結果は以下の通りです。
C:\>ping A.A.A.A

A.A.A.A に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。
B.B.B.B からの応答: 宛先ホストに到達できません。
要求がタイムアウトしました。
B.B.B.B からの応答: 宛先ホストに到達できません。

A.A.A.A の ping 統計:
パケット数: 送信 = 4、受信 = 2、損失 = 2 (50% の損失)、

このときPsPingで出力された「Reply」は「Destination unreachable」だったのです。「Destination unreachable」だとしても妙に遅い印象はありますが、NW機器側の仕様なのでしょう。
つまり、PsPingでICMPの疎通確認はできるが、その応答が端末からの Echo reply なのか、経路途中のNW機器からの Destination unreachable なのかを判別できない、ということですね。
(じゃあ Reply from A.A.A.A って大嘘じゃないか…)

よく考えたら「ARPテーブルに乗っていない」という時点でほぼ答え合わせでしたね。

【まとめ:PsPing の ICMP ping は要注意】

PsPingは通常のPingと同様にICMPのリクエストを送信できるが、曖昧な結果しか出力できない、ということです。これでは、単純な疎通確認としての使い勝手はとても悪いですね。
PsPingの利用はTCPなどのポートの疎通確認などにとどめて、通常のPingの代わりに使うのは避けた方が良さそうです。