技術的な質問ですが、2 つ以上の SNMP エージェントを同じポート (同じマシン) で実行できますか?
host:port はアプリケーションのインスタンスを識別するため、私の最初の本能は「いいえ」ですが、よくわかりません。
ありがとうございました!
技術的な質問ですが、2 つ以上の SNMP エージェントを同じポート (同じマシン) で実行できますか?
host:port はアプリケーションのインスタンスを識別するため、私の最初の本能は「いいえ」ですが、よくわかりません。
ありがとうございました!
IP アドレスが異なる場合は、同じホスト上で同じポートを使用して複数のエージェントを実行できます (そのために netsh スクリプトを使用できます)。
個人的には、nsoftware ddl : SecureSNMP V8 edition .NET を使用してこれを行います。この投稿を見ることができます:nsoftware dllを使用した複数のSNMPエージェント
技術的には、OS がサポートしている場合、SO_REUSEADDR SO_REUSEPORT オプションをソケットに設定して、他のプロセスが同じアドレス/ポートにバインドできるようにし、複数のプロセスが同じアドレス/ポートでメッセージを受信できるようにすることができます。しかし、両方のプロセスでオプションを設定する必要があり、エージェントの実装でそれを行うとは思えません。なぜなら、そうすることは理にかなっていないからです。両方のエージェントが単一の要求に応答する可能性があるため、頭痛の種になるだけです。マネージャーはそれを処理する準備ができていません。
ただし、代わりにプライマリ アドレス/ポートで SNMP プロキシを実行し、クエリ、セキュリティ、または (SNMPv3 を使用して) コンテキスト/エンジン ID パラメーターに基づいて複数のエージェントの 1 つに要求を転送し、応答を転送するように構成できます。
また、AgentX を使用すると、SNMP マスター エージェントがプライマリ アドレス/ポートで実行され、1 つ以上の SNMP サブエージェントがマスター エージェントに接続されます。マスター エージェントは、必要に応じてサブエージェントに要求をディスパッチし、結果を 1 つの応答にマージして、外部からは 1 つのエージェントのように見えます。通常、各サブエージェントは、OID 空間の異なるブランチ (特定のモジュールを実装する 1 つのサブエージェント、他のモジュールを実装する別のサブエージェント) を処理します。
しかし、アドレス/ポートを排他的に所有することを意図した 2 つのエージェントを取り上げ、それらに REUSE オプションを介して強制的に共有させることは、可能かもしれませんが、賢明ではありません。
いいえ、あなたが想定した理由により、2 つのエージェントを別々のアプリケーションとして同じポートで実行することはできません (脆弱なパケット スニッフィング ハックを除きます。これについては説明しません)。
ただし、実際のポートを処理し、MIB に基づいて要求を分散するメカニズムがあれば、同じポートを介して 2 つのエージェントにアクセスできます。たとえば、Windows SNMP サービスはこれを行い、レジストリ (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents) を介して任意の数の SNMP エージェントを "拡張機能" として追加できるようにします。プラットフォーム SDK の h ヘッダー。
両方のエージェントがあなたによって設計された場合、答えは異なる可能性があります。
HTTP と FTP のケースを考えてみましょう。ホスト名を使用して同じポート上の複数のサイトを区別できますが、なぜ SNMP ではそれができないのでしょうか?
ポート 161 で着信トラフィックを監視するディスパッチャを作成できます。次に、複数の実際のエージェントを使用して、背後のトラフィックを処理します。見分け方は自由に設計できます。個人的には、FTP 仮想ホスト名の方法と使用方法を好みます | エージェントを区別する。
将来、 #SNMP Suiteのデモを作成できるかもしれません。
しかし、同じサーバー上の既存のエージェントと連携する必要がある場合、そのような柔軟性は失われます。
その通りです。ポートは共有できません。