我正在尝试使用 MD5Authentication 和 AES 隐私提供程序开发 snmp 陷阱版本 3。我在 Visual Studio 2019 中构建的代理,我正在尝试使用 sharpsnmp 和 snmpsharpnet 库。我正在使用 snmpB 的陷阱接收器。但是我都只收到“消息不在 TimeWindow 中!USMTimeTable:检查时间失败,不是权威(id)”错误。发送 SNMPV3 Inform、SNMPV1 和 SNMPV2 陷阱时没有问题。但是,当使用 net-snmp 命令发送时,会收到 snmpv3 陷阱。我与sharpsnmp 一起使用的源代码是snmpsendtrap 示例;snmpsendtrap 尖锐的snmp。是不是因为在snmpB中没有指定引擎ID,但是为什么net-snmp能够捕获,如果做如何配置engineID。
我用于 net-snmp 的成功陷阱:snmptrap -v 3 -e 80000000035C80B6A55D61 -u username -a MD5 -A 00806000806000806000806000806000 -x AES -X 00806000806000806000806000806000 localhost '' 1.3.6.1.2.1.1.1.0 .1.3.6.1.2.1.2.2.1.0 x 0x6669727374
我的sharpsnmp代码部分:
DiscoverAsync().Wait();
try
{
if (AESPrivacyProvider.IsSupported)
{
var trap = new TrapV2Message(
VersionCode.V3,
528732060,
1905687779,
new OctetString("username"),
new ObjectIdentifier("1.3.6"),
0,
new List<Variable>(),
new AESPrivacyProvider(
new OctetString(ByteTool.Convert("00806000806000806000806000806000")),
new MD5AuthenticationProvider(new OctetString("00806000806000806000806000806000"))),
0x10000,
new OctetString(ByteTool.Convert("80001F8880E9630000D61FF449")),
0,
0);
trap.Send(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 162));
}
else
{
Console.WriteLine("aes not supported");
}