我正在为 snmpv3 实现 pysnmp 代码,试图将陷阱发送到我网络中的机器。我可以看到在 Wireshark 中可以看到陷阱,但它没有出现在我的任何陷阱接收器中。代码如下:
from pysnmp.hlapi import *
errorIndication, errorStatus, errorIndex, varBinds = next(
sendNotification(
SnmpEngine(OctetString(hexValue='8000000001020304')),
UsmUserData('usr', authKey='authh', privKey='privv',
authProtocol=usmHMACSHAAuthProtocol,
privProtocol=usmAesCfb128Protocol),
UdpTransportTarget('192.168.1.79',162),
ContextData(),
'trap',
NotificationType(ObjectIdentity('SNMPv2-MIB', 'authenticationFailure'))
)
)
if errorIndication:
print(errorIndication)
如果我删除 authKey、privKey、authProtocol 和 privProtocol,我可以看到陷阱接收器中收到了陷阱,但是当我将它们全部放入时,我看不到陷阱。
我的问题是:
- ubuntu 是否必须打开它的 161 和 162 端口才能让 windows 机器接收它?
- 即使使用硬编码的引擎 ID,我也可以发送没有身份验证的陷阱,但在完全身份验证的情况下是否需要正确的引擎 ID?这就是陷阱没有出现的原因吗?如果是这样,有人可以指导我找到接收系统的引擎 ID 吗?
- 我们可以肯定地说,既然 Wireshark 清楚地看到了陷阱,那么它只是陷阱接收器上的配置问题来显示陷阱吗?
请帮我解决一下这个。
谢谢你。