无法使用SNMP接收v3陷阱/通知
使用snmptrapd示例,我能够轻松地接收v1陷阱和v2陷阱/通知。但是,使用v3时,我无法接收陷阱。我使用AES128和SHA1进行隐私和身份验证 当我使用wireshark端口162时,我看到encryptedPDU:privKey unknown来自我试图从中接收陷阱的设备。如果有帮助的话,它正在使用NET-SNMP 我能够使用SharpSNMP for gets和Set实现应用程序,没有问题。我错过了什么 下面的代码片段: 注意:engine.Start在实例化类中被调用无法使用SNMP接收v3陷阱/通知,snmp,sharp-snmp,snmp-trap,Snmp,Sharp Snmp,Snmp Trap,使用snmptrapd示例,我能够轻松地接收v1陷阱和v2陷阱/通知。但是,使用v3时,我无法接收陷阱。我使用AES128和SHA1进行隐私和身份验证 当我使用wireshark端口162时,我看到encryptedPDU:privKey unknown来自我试图从中接收陷阱的设备。如果有帮助的话,它正在使用NET-SNMP 我能够使用SharpSNMP for gets和Set实现应用程序,没有问题。我错过了什么 下面的代码片段: 注意:engine.Start在实例化类中被调用
registry = new UserRegistry();
var authProvider = new SHA1AuthenticationProvider(new OctetString("authsecret"));
var privacyProvider = new AESPrivacyProvider(new OctetString("privsecret"), authProvider);
registry.Add(new OctetString("informuser"), privacyProvider);
registry.Add(new OctetString("trapuser"), privacyProvider);
TrapV1Handler = new TrapV1MessageHandler();
TrapV1Handler.MessageReceived += WatcherTrapV1Received;
v1Mapping = new HandlerMapping("v1", "TRAPV1", TrapV1Handler);
TrapV2Handler = new TrapV2MessageHandler();
TrapV2Handler.MessageReceived += WatcherTrapV2Received;
v2Mapping = new HandlerMapping("v2,v3", "TRAPV2", TrapV2Handler);
InformHandler = new InformRequestMessageHandler();
InformHandler.MessageReceived += WatcherInformRequestReceived;
informMapping = new HandlerMapping("v2,v3", "INFORM", InformHandler);
store = new ObjectStore();
var v1 = new Version1MembershipProvider(new OctetString("public"), new OctetString("public"));
var v2 = new Version2MembershipProvider(new OctetString("public"), new OctetString("public"));
var v3 = new Version3MembershipProvider();
var membership = new ComposedMembershipProvider(new IMembershipProvider[] {v1, v2, v3});
var handlerFactory = new MessageHandlerFactory(new[] {v1Mapping, v2Mapping, informMapping});
var pipelineFactory = new SnmpApplicationFactory(store, membership, handlerFactory);
engine = new SnmpEngine(pipelineFactory, new Listener { Users = registry }, new EngineGroup());
engine.Listener.AddBinding(new IPEndPoint(IPAddress.Any, 162));
engine.ExceptionRaised += this.DoSomething;
}
private void DoSomething(object sender, ExceptionRaisedEventArgs args)
{
// never gets here
}
private void WatcherInformRequestReceived(object sender, InformRequestMessageReceivedEventArgs e)
{
// or here for v3 (works fine for v2)
}
private void WatcherTrapV2Received(object sender, TrapV2MessageReceivedEventArgs e)
{
// or here for v3 (works fine for v2)
}
private void WatcherTrapV1Received(object sender, TrapV1MessageReceivedEventArgs e)
{
// works fine
}
INFORM v3完全受支持,而TRAP v3需要在身份验证提供程序中进行一些更改,谢谢Lex,这是在更新的库版本中,还是应该从Git中提取更改并重新生成?如果在SNMP v3中未使用TRAP v2,则不需要最新版本,因为INFORM v2完全受支持。snmpsendtrap中的更改旨在演示如何发送这些消息。如果您确实需要TRAP v2,可以直接修改8.5的代码库。主机当前用于vNext,尚未准备好生产。