通常、私が開発しているアプリケーションには、ネットワーク内のさまざまなデバイスのネットワークステータスインジケータが含まれているのが好きです。これらのデバイスを監視する最も簡単な方法は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と同様の結果を提供できます。要件は、パケットを受信するためにターゲットシステムに開いているポートが必要であることです。この方法を使用しても、ソースに応じてコピーしてもかまいません。どちらもすでにオペレーティングシステム用のパッケージとして提供できます。
大規模なモニタリングソリューションでは、ナギオスそしてザビクス人気の無料オプションですが、他のオプションもたくさんあります。