私は最近、トレースファイルの分析を依頼されましたが、それはわずか161秒の長さで、260万以上のフレームが含まれていました。私はそれらのフレームの約75%がPingリクエストかPingリプライであることを発見して驚きました。もし送信元のIPアドレスを認識していなければ、ターゲットがサービス拒否攻撃を受けているという結論に飛びついていたでしょう。その代わりに、STCP の ping コマンドの "run_forever" 引数を使ってターゲットの到達可能性を監視していることがわかりました。
ほとんどの UNIX システムや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秒の間の時間が表示されました。最後の引数は、UNIX やLinux の ping が与えてくれないものです。ターゲットがいつ応答しなくなったか、いつ再開したかを知ることができるように、各 ping のタイムスタンプを指定します。タイムスタンプが不要な場合は、 -no_timestamp 引数で無効にすることができます。
ping_forever 164.152.77.6 *** 09-08-30.11:45:38 *** Pinging host 164.152.77.6 : 164.152.77.6 ICMP Echo Reply:TTL 60 time = 2 ms Host 164.152.77.6 replied to the ping *** 09-08-30.11:45:40 *** Pinging host 164.152.77.6 : 164.152.77.6 ICMP Echo Reply:TTL 60 time = 2 ms Host 164.152.77.6 replied to the ping *** 09-08-30.11:45:41 *** Pinging host 164.152.77.6 : 164.152.77.6 ping: 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.6 ping: 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.6 ICMP Echo Reply:TTL 60 time = 4 ms Host 164.152.77.6 replied to the ping *** 09-08-30.11:45:48 *** Pinging host 164.152.77.6 : 164.152.77.6 ICMP Echo Reply:TTL 60 time = 3 ms Host 164.152.77.6 replied to the ping |