两件事情:
1) 进行广播 SNMPv1/v2c 实际上并未定义为在协议中工作。正如您所发现的,廉价的实现将简单地响应内核接受到端口的任何数据包,而不检查地址。但是,您还会发现一些不会响应广播数据包的实现。所以这实际上并不是一个万无一失的发现机制。(更不用说,许多供应商终于变得聪明了,并且没有将 public 作为默认社区名称)
2) 另一方面,SNMPv3 更不可能工作,因为 engineID 发现是如何在 SNMPv3 协议中发生的。无论如何,SNMPv3 都不会以正常响应 PDU 进行响应,因为它应该以 REPORT PDU 响应说“这是我的引擎 ID”,并且您必须使用该引擎 ID和正确的 USM 凭据进行响应才能访问设备。
简而言之,SNMPv3 是为安全而设计的,不再有“公共”等价物。您需要知道如何访问设备,而不能只是“猜测”。