1

以 2 段网络为例:10.20.xx 和 192.168.xx (255.255.255.0)。

如何使用 C# 找到所有支持 SNMP v1、v2、v3 的设备IP 地址?

我尝试使用sharpsnmplib发现示例,但它只能找到与计算机连接的网段的设备。

在此处输入图像描述

4

3 回答 3

1

尝试查询交换机(如果可能) - 您知道网络拓扑吗?你能不能只发送一堆 ping (如果某些设备没有响应,你可以吗)?

没有广播管理路由器,广播是不可能的。IP 路由系统旨在防止广播传播到其他网络子网 - 您必须手动设置网络以广播形式相互通信(请参阅http://en.wikipedia.org/wiki/Broadcast_address

在 BACnet/IP 协议中存在并克服了这一限制的一个例子。BACnet 使用“Who-Is”广播请求来请求连接的设备传输“I-Am”响应。由于广播不能穿越子网,BACnet 使用称为 BBMD(BACnet 广播管理设备)的特殊路由器。要了解更多信息,请参阅此链接

于 2012-12-29T19:43:26.887 回答
0

除非您有转发广播的路由器,否则广播仅适用于 1 个分段。

于 2012-12-29T10:09:42.697 回答
0

有两种常用的方法:

  1. 让用户定义 IP 地址范围,然后对该范围内的每个地址执行 SNMP GET。
  2. 从本地计算机上的 arp 缓存开始,使用 SNMP 轮询在 ARP 缓存中找到的每个 IP 地址,然后查看 RFC-1213 MIB atTable (OID .1.3.6.1.2.1.3.1) 以获取尚未发现的 IP 地址。这应该发现每个积极通信的网络节点。

在具有少量主机的大网络范围的情况下,第一种方法要慢得多。第二种方法可能会错过一些不与网关通信的主机。

于 2013-01-15T07:15:23.190 回答