- PR -

pingの誤検知について

1
投稿者投稿内容
raytona
会議室デビュー日: 2005/05/09
投稿数: 9
投稿日時: 2006-06-30 13:01
現在、サーバの生死監視としてpingを使用した仕組みを導入しています。

詳細は、
OSがAIX5.2のサーバからaaaというホスト名のサーバに対して、

ping -w100 aaa 24 1

を実行し、戻り値を見て0ならば正常と判断させています。

対象サーバ(この場合aaa)のLANケーブルを抜いた状態でpingを行うと、ほとんどがtime outで終了となるのですが、ごく稀に全く異なるIPアドレスから返答が来たと認識してしまいます。

正常な場合の出力

PING aaa:(xxx.xxx.xxx.xxx):24 data bytes

----xxx.xxx.xxx.xxx PING Statistics----
1 packets transmitted, 0 packets received, 100% packet loss

おかしい場合の出力

PING aaa:(xxx.xxx.xxx.xxx):24 data bytes
32 bytes from yyy.yyy.yyy.yyy: icmp_seq=0 ttl=255 time=0 ms

ホスト名に対してpingを打っていますが、名前解決は/etc/hostsのみを使用しており、問題は無いように見えます。

対策としては複数回実行する事や標準出力と対象IPアドレスのマッチングを行う等考えられますが、今回は原因そのものが知りたく、どうか御教示いただけないでしょうか。

pingは複数サーバに対して同時に行っており、関係の無いpingのreplyのidentifierフィールドが偶然同じになった場合に、このように判断してしまうのでしょうか。

よろしくお願いいたします。
非武装エリア
大ベテラン
会議室デビュー日: 2004/03/03
投稿数: 202
お住まい・勤務地: 日本・たこ部屋
投稿日時: 2006-06-30 19:43
異常になっている時、AIX上のARPテーブルの情報(arp -a かな)を確認してみてくさい。
本来のホストとは別のMACアドレスにIPアドレスが貼りつている可能性があります。
AIX上ルーティングプロトコル(RIP)とか動かしていませんか?
非武装エリア
大ベテラン
会議室デビュー日: 2004/03/03
投稿数: 202
お住まい・勤務地: 日本・たこ部屋
投稿日時: 2006-06-30 19:47
いかんいかん、調べるのはAIXだけでは無かった!
途中にルータやL3SW-HUBとか介在するならそれらのARPテーブルも調査の必要があります。
raytona
会議室デビュー日: 2005/05/09
投稿数: 9
投稿日時: 2006-07-03 11:17
非武装エリア様

回答ありがとうございます。
今回、相手のサーバも同セグメントですがL3スイッチを間にかましているので、次回発生時には(全てのN/W機器は難しいですが)「arp -a」コマンドを取得したいと思います。

また、OS開発元にも質問を投げたところ以下の回答がきました。概要のみですが、

----

複数のpingコマンドを同時に実行すると、二つ以上のpingコマンドが同じicmp_idを使用してしまうことがあり、その場合には同じicmp_idを使用しているpingコマンド同士でicmp_echo_replyを混同する。

例)"ping マシンBのIPアドレス" と "ping マシンCのIPアドレス" を同時に実行していて且つこの二つのpingコマンドが同じicmp_idを使用していると、マシンCから来たicmp_echo_replyを "ping マシンBのIPアドレス" のプロセスが表示してしまうことがある。AIXではpingプロセスIDを65536で割った余りを使用している。

----

私、このpingの仕様ははじめて知りました。これは他のOSでもそうなのでしょうか。
これを見ると、pingが同時実行されている場合は1/65536の確率で
混同してしまうんですね。さらに複数だとどんどん確率があがりますね。

今回のケースでは、ARPとicmp_idの二点に注意して今後追っていけば良いと判断しました。
1

スキルアップ/キャリアアップ(JOB@IT)