1

只是一个技术问题 - 可以在同一端口(在同一台机器上)上运行两个或多个 SNMP 代理吗?

我的第一直觉是不,因为 host:port 标识了一个应用程序的实例,但我不确定。

谢谢!

4

5 回答 5

2

从技术上讲,如果操作系统支持它,可以在套接字上设置 SO_REUSEADDR SO_REUSEPORT 选项,以允许其他进程绑定到同一地址/端口,从而允许多个进程在同一地址/端口上接收消息。但是两个进程都必须设置选项,我怀疑任何代理实现都会这样做,因为这样做没有意义——这只会导致两个代理都可能响应单个请求而令人头疼。经理们没有能力处理它。

但是,您可以改为在主地址/端口中运行 SNMP 代理,配置为根据查询、安全性或(使用 SNMPv3)上下文/引擎 ID 参数将请求转发到多个代理之一,并将响应转发回来。

此外,使用 AgentX,您可以在主地址/端口上运行一个 SNMP 主代理,以及一个或多个连接到主代理的 SNMP 子代理。主代理酌情将请求分派给子代理,将结果合并为单个响应,以便在外界看来它是单个代理。每个子代理通常处理 OID 空间的不同分支(一个子代理实现某些模块,另一个子代理实现其他模块)。

但是,让两个打算独占地址/端口的代理,并通过 REUSE 选项强迫他们共享,虽然这可能是可能的,但这并不明智。

于 2009-11-27T20:38:21.993 回答
2

如果它们具有不同的 ip 地址,您可以在同一主机上使用相同的端口运行多个代理(可以为此使用 netsh 脚本)。

我个人使用 nsoftware ddl : SecureSNMP V8 edition .NET 来执行此操作。你可以看看这篇文章:Multiple SNMP Agents with nsoftware dll

于 2012-07-25T08:34:05.040 回答
1

不,由于您假设的原因,两个代理不能同时作为单独的应用程序在同一端口上运行(除了脆弱的数据包嗅探黑客,我们不会讨论)。

但是,如果有某种机制可以处理实际端口并基于 MIB 分发请求,则可以通过同一端口访问 2 个代理。例如,Windows SNMP 服务执行此操作,允许通过注册表 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents) 将任意数量的 SNMP 代理添加为“扩展”,方法是将它们写入 DLL 并使用 snmp。平台 SDK 中的 h 标头。

于 2009-11-25T16:38:11.147 回答
0

你是对的:端口不能共享。

于 2009-11-25T16:37:39.167 回答
0

如果这两个代理都是您设计的,那么答案可能会有所不同。

考虑 HTTP 和 FTP 的情况,我们可以使用主机名来区分同一端口上的多个站点,那么为什么我们不能为 SNMP 做呢?

我们可以创建一个调度程序来监视端口 161 的传入流量。然后使用多个真实代理来处理后面的那些流量。我们可以随意设计如何区分它们。个人比较喜欢FTP虚拟主机名方式和使用| 来区分代理。

也许我将来可以为#SNMP Suite创建一个演示。

但是,如果您需要在同一台服务器上使用现有代理,那么这种灵活性就会丧失。

于 2009-11-26T02:56:36.377 回答