我正在为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,我可以看到在陷阱接收器中收到的陷阱,但是当我把它们全部放进去时,我看不到陷阱。
我的问题是:
请帮助我。
谢谢。
答案 0 :(得分:0)
确保您的SNMPv3密钥长度为8个或更多字符。这是SNMP标准附带的要求。
使用SNMPv3 TRAP,如果您使用任何加密功能,则需要向通知发起者(您的脚本)和通知接收者显式配置SNMP引擎ID。
您应该将任意SNMP引擎ID设置为通知发起方(它是此交换中的权威部分),然后将相同的SNMP引擎ID(以及USM用户和密钥)配置到通知接收方。无需弄清楚接收器的SNMP引擎ID。
自从纯文本TRAP通过后,它可能不是防火墙问题。
可以尝试更简单的设置,如MD5身份验证和无加密( authNoPriv )。以防您的通知接收器不支持更新的密码套件。