我已经使用 SNMP v1 和 2c 通过发送带有社区“公共”的广播消息来发现打印机的网络,它工作得很好,但是当我发送带有协议版本 3 的广播消息时出现超时错误。
有人分享 SNMPv3 设备发现的例子吗?
谢谢你。
两件事情:
1) 做广播 SNMPv1/v2c 实际上并没有定义为在协议中工作。正如您所发现的,廉价的实现将简单地响应它看到内核接受端口而不检查地址的任何数据包。但是,您还会发现一些不会响应广播数据包的实现。所以这实际上并不是一个万无一失的发现机制。(更不用说,许多供应商终于变得聪明了,没有公共作为默认的社区名称)
2) 另一方面,SNMPv3 更不可能工作,因为引擎 ID 发现是如何在 SNMPv3 协议中发生的。无论如何,SNMPv3 都不会以正常的响应 PDU 进行响应,因为它应该以 REPORT PDU 响应“这是我的引擎 ID”,并且您必须使用该引擎 ID和正确的 USM 凭据进行响应才能访问设备。
简而言之,SNMPv3 是为安全而设计的,不再有“公共”等价物。您需要知道如何访问设备,而不能只是“猜测”。