这只是一个技术问题--两个或多个SNMP代理可以在同一端口(在同一台机器上)运行吗?
我的第一反应是否定的,因为host:port标识了应用程序的一个实例,但我不确定。
谢谢!
发布于 2009-11-25 16:38:11
不,由于您假设的原因,两个代理不能同时作为单独的应用程序在同一端口上运行(除了脆弱的数据包嗅探黑客,我们不会深入讨论)。
但是,如果存在某种机制来处理实际端口并根据MIB分发请求,则可以通过同一端口访问两个代理。例如,Windows SNMP服务做到了这一点,通过将它们写成DLL并使用platform (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents)中的snmp.h报头,允许通过注册表SDK将任意数量的SNMP代理添加为“扩展”。
发布于 2009-11-27 20:38:22
从技术上讲,如果操作系统支持,则可以在套接字上设置SO_REUSEADDR SO_REUSEPORT选项,以允许其他进程绑定到相同的地址/端口,从而允许多个进程在相同的地址/端口上接收消息。但是这两个进程都必须设置选项,我怀疑任何代理实现都必须这样做,因为这样做是没有意义的--这只会使两个代理都可能对单个请求做出响应,这只会造成令人头疼的问题。经理们将不会有能力处理它。
但是,您可以在主地址/端口运行SNMP代理,将其配置为根据查询、安全或(使用SNMPv3)上下文/引擎ID参数将请求转发到多个代理之一,并将响应转发回来。
此外,使用AgentX时,您有一个在主地址/端口上运行的SNMP主代理,以及一个或多个连接到主代理的SNMP子代理。主代理根据需要将请求分派给子代理,将结果合并到单个响应中,以便在外界看来它是单个代理。每个子代理通常处理OID空间的不同分支(一个子代理实现某些模块,另一个子代理实现其他模块)。
但是,采用两个打算独占地址/端口的代理,并迫使它们通过重用选项共享,虽然这可能是可能的,但这并不明智。
发布于 2012-07-25 08:34:05
如果多个代理具有不同的ip地址,则可以在同一主机上使用相同的端口运行多个代理(可以使用netsh脚本)。
我个人使用nsoftware ddl : SecureSNMP V8版.NET来做这件事。你可以看看这篇文章:Multiple SNMP Agents with nsoftware dll
https://stackoverflow.com/questions/1798196
复制