最近、あるトレースファイルの分析を依頼されました。そのファイルはわずか161秒間の記録で、260万フレーム強を含んでいました。 驚いたことに、そのフレームの約75%がpingリクエストかping応答だった。送信元IPアドレスを認識していなければ、ターゲットがDoS攻撃を受けていると即断していただろう。実際には、STCPのpingコマンドに「run_forever」引数を使用してターゲットの到達可能性を監視していたことが判明した。
Linux pingコマンドとは異なり、STCPのpingコマンドはping応答を受信してから次のping要求を送信する間に待機しません。デフォルトのping回数が4回のみであるため、これは重大な問題ではありません。 しかし、count引数を使用してリクエスト数を増やしたり、run_forever引数を使用したりすると、システム、イーサネットアダプタ、ネットワークに大きな負荷がかかる可能性があります。このため、STCPのpingコマンドのデフォルト動作は、ターゲットホストの長期監視には全く適していません。
ただし、デフォルトの動作が不適切だからといって、pingコマンドを長期監視に利用できないわけではありません。コツは、コマンドを一度実行して連続したpingリクエストを送信するのではなく、1回ずつpingリクエストを送信するコマンドを繰り返し実行することです。以下のマクロがその処理を行います。
& ping_forever begins here |
ご覧の通り、最初の2つの引数はpingコマンドに直接渡され、pingのホストとタイムアウト引数に対応しています。pingのデフォルトタイムアウトは15秒ですが、これは長すぎると考え、マクロではこれを1秒に変更しています。 もちろん、マクロ内で調整するか、引数として値を指定することで変更可能です。3番目の引数はping間の待機時間(秒単位)で、デフォルトは1秒です。マクロの実行やpingコマンドの読み込み・実行に時間がかかるため、実際のping間隔は若干長くなります。Packet_monitorでは1.05秒から1.1秒の間隔が確認されました。 最後のLinux 。各pingのタイムスタンプを記録し、ターゲットの応答停止時刻と再開時刻を特定できます。タイムスタンプが不要な場合は`-no_timestamp`引数で無効化可能です。
ping_forever 164.152.77.6 *** 09-08-30.11:45:38 ***Pinging host 164.152.77.6 : 164.152.77.6ICMP Echo Reply:TTL 60 time = 2 msHost 164.152.77.6 replied to the ping *** 09-08-30.11:45:40 ***Pinging host 164.152.77.6 : 164.152.77.6ICMP Echo Reply:TTL 60 time = 2 msHost 164.152.77.6 replied to the ping *** 09-08-30.11:45:41 ***Pinging host 164.152.77.6 : 164.152.77.6ping: No reply. Time Out !!Host 164.152.77.6 didn't reply to the ping *** 09-08-30.11:45:44 ***Pinging host 164.152.77.6 : 164.152.77.6ping: No reply. Time Out !!Host 164.152.77.6 didn't reply to the ping *** 09-08-30.11:45:47 ***Pinging host 164.152.77.6 : 164.152.77.6ICMP Echo Reply:TTL 60 time = 4 msHost 164.152.77.6 replied to the ping *** 09-08-30.11:45:48 ***Pinging host 164.152.77.6 : 164.152.77.6ICMP Echo Reply:TTL 60 time = 3 msHost 164.152.77.6 replied to the ping |
