我试图了解 SNMP 陷阱的格式。我正在将一段代码从 Windows 移植到发送 SNMP 陷阱的 linux。windows 代码使用内置库(一些函数包括 SnmpStartup、SnmpSetRetransmitMode。可能称为 WinSNMP ),因此在移植到 Linux 时无法保留该代码。
我找到了一个名为 SNMP++ 的不错的库,它能够轻松发送 SNMP 陷阱。
据我了解,SNMP 陷阱的前两个变量绑定 (vb) 字段必须满足特定格式。第一个 vb 是 sysuptime(基本上是陷阱的时间戳),它有众所周知的 OID1.3.6.1.2.1.1.3.0
。
第二个 vb 是陷阱的 ID。我在任何地方都找不到任何文档,但 SNMP++ 为陷阱的 ID 提供了 OID1.3.6.1.6.3.1.1.4.1.0
(它的值是我们发送的陷阱的 OID)。它使用 pdu.set_notify_id 函数设置。
这是发送陷阱时必须存在的另一个众所周知的 OID 吗?windows 库根本不使用这个 OID。它将 ID 字段的 OID 设置为我们发送的 OID,因此 OID 及其值设置为相同的值。看起来它是手动完成的,所以原始编码器可能没有很好地理解这种格式。
那么,这些中哪一个是正确的?
windows:
1.3.6.1.4.1.XXXX.2.1.51 -> 1.3.6.1.4.1.XXXX.2.1.51
SNMP++:
1.3.6.1.6.3.1.1.4.1.0 -> 1.3.6.1.4.1.XXXX.2.1.51
为什么我找不到有关此1.3.6.1.6.3.1.1.4.1.0
值的任何文档?它似乎不在我读过的任何 RFC 中。谷歌搜索 OID 给出了结果,但他们没有解释它的用途。