Networking 是否可以在同一端口(同一台机器上)上运行两个或多个SNMP代理?

Networking 是否可以在同一端口(同一台机器上)上运行两个或多个SNMP代理?,networking,snmp,Networking,Snmp,只是个技术问题- 是否可以在同一端口(同一台机器上)上运行两个或多个SNMP代理 我的第一反应是否定的,因为host:port标识应用程序的实例,但我不确定 谢谢大家! 你是正确的:端口不能共享。你是正确的:端口不能共享。不,由于你假设的原因,两个代理不能作为单独的应用程序同时在同一个端口上运行(除了脆弱的包嗅探攻击,我们将不讨论) 但是,如果有某种机制处理实际端口并基于MIB分发请求,则可以通过同一端口访问两个代理。例如,Windows SNMP服务就是这样做的,它允许通过注册表(HKEY_L

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

我的第一反应是否定的,因为host:port标识应用程序的实例,但我不确定


谢谢大家!

你是正确的:端口不能共享。

你是正确的:端口不能共享。

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


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

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


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

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

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

我们可以创建一个调度器,用于监控端口161的传入流量。然后使用多个真正的代理来处理后面的流量。我们可以自由设计如何区分它们。就个人而言,我更喜欢FTP虚拟主机名的方式,并使用|来区分代理

也许将来我可以为你制作一个演示


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

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

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

我们可以创建一个调度器,用于监控端口161的传入流量。然后使用多个真正的代理来处理后面的流量。我们可以自由设计如何区分它们。就个人而言,我更喜欢FTP虚拟主机名的方式,并使用|来区分代理

也许将来我可以为你制作一个演示


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

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

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

此外,使用AgentX,您可以在主地址/端口上运行SNMP主代理,并将一个或多个SNMP子代理连接到主代理。主代理根据需要向子代理发送请求,并将结果合并到单个响应中,以便在外部世界中它显示为单个代理。每个子代理通常处理OID空间的不同分支(一个子代理实现某些模块,另一个子代理实现其他模块)


但是,让两个代理专门拥有地址/端口,并强制他们通过重用选项共享,虽然这可能是不明智的。从技术上讲,如果操作系统支持它,SO_REUSEADDR SO_REUSEPORT选项可以在套接字上设置,以允许其他进程绑定到同一地址/端口,从而允许多个进程在同一地址/端口上接收消息。但这两个过程都必须设置选项,我怀疑任何代理实现都会这样做,因为这样做没有意义——这只会让两个代理都可能响应一个请求,这会让人头疼。经理们没有能力处理这件事

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

此外,使用AgentX,您可以在主地址/端口上运行SNMP主代理,并将一个或多个SNMP子代理连接到主代理。主代理根据需要向子代理发送请求,并将结果合并到单个响应中,以便在外部世界中它显示为单个代理。每个子代理通常处理OID空间的不同分支(一个子代理实现某些模块,另一个子代理实现其他模块)


但是,让两个代理以独占方式拥有地址/端口,并通过重用选项强制它们共享(虽然可能),这是不明智的。

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

个人我使用NSO软件ddl: