ICMPエコリクエストサービスありますか?

ICMPエコリクエストサービスありますか?

通常、私が開発しているアプリケーションには、ネットワーク内のさまざまなデバイスのネットワークステータスインジケータが含まれているのが好きです。これらのデバイスを監視する最も簡単な方法はpingを実行することです。ただし、rawソケットのセキュリティ要件またはping

私が監視するほとんどのデバイスは、最小限のネットワーク機能を備えた組み込みデバイスなので(常にICMPエコーを含む)するこの契約は必ず遵守する必要があります。エコプロトコル(マークが以下のコメントで指摘してくれましたね。ありがとうございます!) 普段は使えません。

ルート以外のアプリケーションにオーバーヘッドの低いICMP pingサービスを提供できる既存のサービスはありますか?

私はrootとして実行され、root以外のアプリケーションがそれに接続し、監視するデバイスを追加し、ping時間とネットワーク状態を照会できるようにするサービスを作成しようとしています。しかし、これを作り直したくありません。ホイール、それがすでに存在しているかどうかを知りたいです。

ベストアンサー1

あなたの質問に対する答えはおそらく「いいえ、ありません」です。

その理由は、ICMPが低レベルのプロトコルであり、ICMPトラフィックを生成するためにアプリケーションがネットワークインターフェイスへの特権アクセスを必要とするためです。 ICMPを生成するバイナリはset-uidルートであるため、ほとんどのシステムでこれを確認できます。粘着性のある部分に注意してください。

$ ls -l /sbin/ping /usr/sbin/traceroute
-r-sr-xr-x  1 root  wheel  28088 Aug 12 12:19 /sbin/ping
-r-sr-xr-x  1 root  wheel  28608 Aug 12 12:20 /usr/sbin/traceroute

(これはFreeBSDで行われました。結果は他のオペレーティングシステムによって異なります。)

アプリケーションがネイティブネットワークトラフィックを生成するには、rootとして実行する必要があります。/sbin/pingすでにrootとして実行されているので、最善の選択肢はこれを使用してpingを作成することです。

多数のホストでこれを行う場合は、次の点を検討することをお勧めします。平らな。別のオプションはTCPing、TCPパケットを生成して、ICMP pingと同様の結果を提供できます。要件は、パケットを受信するためにターゲットシステムに開いているポートが必要であることです。この方法を使用しても、ソースに応じてコピーしてもかまいません。どちらもすでにオペレーティングシステム用のパッケージとして提供できます。

大規模なモニタリングソリューションでは、ナギオスそしてザビクス人気の無料オプションですが、他のオプションもたくさんあります。

おすすめ記事