Невозможно получить сообщения / сообщения v3 с помощью SharpSNMP

Используя пример snmptrapd, я смог легко получать ловушки v1 и ловушки / сообщения v2. Тем не менее, с v3 я не могу получать ловушки. Я использую AES128 и SHA1 для конфиденциальности и аутентификации.

Когда я "провожу" порт 162, я вижу "encryptedPDU: privKey unknown", исходящий с устройства, с которого я пытаюсь получить прерывания. Это использует NET-SNMP, если это помогает.

Мне удалось реализовать приложения, использующие SharpSNMP для получения и установки без проблем. Что мне здесь не хватает?

Фрагмент кода ниже:

Примечание: 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
    }

0 ответов

Другие вопросы по тегам