只是一个技术问题 - 可以在同一端口(在同一台机器上)运行两个或多个SNMP代理吗?
我的第一直觉是自从host:port识别应用程序的实例,但我不确定。
谢谢!
答案 0 :(得分:2)
从技术上讲,如果操作系统支持,可以在套接字上设置SO_REUSEADDR SO_REUSEPORT选项,以允许其他进程绑定到同一地址/端口,从而允许多个进程在同一地址/端口上接收消息。但是这两个进程都必须设置选项,我怀疑任何代理实现都是这样做的,因为这样做没有意义 - 这只会导致让两个代理都可能响应单个请求的麻烦。管理人员无法处理它。
但是,您可以在主要地址/端口中运行SNMP代理,配置为根据查询,安全性或(使用SNMPv3)上下文/引擎ID参数将请求转发给多个代理之一,并转发响应。
此外,使用AgentX,您在主要地址/端口上运行SNMP主代理,并且一个或多个SNMP子代理连接到主代理。主代理根据需要将请求分派给子代理,将结果合并为单个响应,以便外部世界显示为单个代理。每个子代理通常处理OID空间的不同分支(一个实现某些模块的子代理,另一个实现其他模块的子代理)。
但是,如果有两个代理商专门拥有地址/端口,并强制他们通过REUSE选项共享,那么这可能是不可能的。
答案 1 :(得分:2)
如果它们具有不同的IP地址(可以使用netsh脚本),则可以在同一主机上运行多个代理并使用相同的端口。
Personnaly我使用nsoftware ddl:SecureSNMP V8 edition .NET来执行此操作。 你可以看一下这篇文章:Multiple SNMP Agents with nsoftware dll
答案 2 :(得分:1)
不,由于你假设的原因,两个代理不能同时在同一个端口上运行(除了一个脆弱的数据包嗅探黑客,我们不会进入)。
但是,如果存在一些处理实际端口并基于MIB分发请求的机制,则可以通过同一端口访问2个代理。例如,Windows SNMP服务执行此操作,允许通过注册表(HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ SNMP \ Parameters \ ExtensionAgents)将任意数量的SNMP代理添加为“扩展”,方法是将它们写为DLL并使用snmp。平台SDK中的h标头。
答案 3 :(得分:0)
你是对的:无法共享端口。
答案 4 :(得分:0)
如果两个代理都是由您设计的,那么答案可能会有所不同。
考虑HTTP和FTP的情况,我们可以使用主机名来区分同一端口上的多个站点,那为什么我们不能为SNMP做这个呢?
我们可以创建一个调度程序来监视端口161的传入流量。然后使用多个真实代理来处理后面的流量。我们可以随意设计如何区分它们。我个人更喜欢FTP虚拟主机名方式并使用|区分代理商。
也许我将来可以为#SNMP Suite创建一个演示。
但是如果您需要在同一台服务器上使用现有代理,那么这种灵活性就会丢失。