如何发现多段网络中所有设备的IP地址?

时间:2012-12-25 16:05:43

标签: c# snmp router segment subnet

使用2段网络,例如:10.20.x.x和192.168.x.x(255.255.255.0)。

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

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

enter image description here

3 个答案:

答案 0 :(得分:1)

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

没有广播管理路由器,就无法进行广播。 IP路由系统旨在防止广播传播到其他网络子网 - 您必须手动设置网络以广播形式相互通信(参见http://en.wikipedia.org/wiki/Broadcast_address

存在并克服此限制的一个示例是BACnet / IP协议。 BACnet使用“Who-Is”广播请求来请求附加设备发送“I-Am”响应。由于广播不能遍历子网,因此BACnet使用称为BBMD(BACnet广播管理设备)的特殊路由器。要阅读更多相关内容,请参阅此link

答案 1 :(得分:0)

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

答案 2 :(得分:0)

有两种常用的方法:

  1. 让用户定义IP地址范围,然后对该范围内的每个地址执行SNMP GET。
  2. 从本地计算机上的arp缓存开始,使用SNMP轮询ARP缓存中找到的每个IP地址,然后查看针对尚未发现的IP的RFC-1213 MIB atTable(OID .1.3.6.1.2.1.3.1)地址。这应该发现每个主动通信的网络节点。
  3. 在网络范围较大且主机数量较少的情况下,第一种方法要慢得多。第二种方法可能会遗漏一些不与网关通信的主机。

相关问题