Hi Imene,
> On 07 Jan 2015, at 16:04, Boussour, Imene (6076618) <[email protected]>
> wrote:
>
> Hi Frank,
>
> Thank you for your prompt response.
> So, The local engine ID created by the following call should be enough:
> USM usm = new USM(SecurityProtocols.getInstance().addDefaultProtocols(), new
> OctetString(MPv3.createLocalEngineID()), 0);
>
Yes, although you should create your own local engine ID using your IANA
enterprise ID.#
> The ContextName on the Trap receiver is Optional (it's a SCOM server).
> So if we specify this property, we need to set the context name of the
> ScopedPDU object by: pdu.setContextName(new OctetString("contextName"));
Correct.
> Otherwise, we don't need to add the last statement, is there a default value
> for the context Name on the ScopedPDU?
>
The default context is the empty context “”.
> How about the ConextEngineID, if we don't set it's value
> (pdu.setContextEngineID(...)) it will take the localEngineID value created by
> the previous MPv3.createLocalEngineID() call, is that correct?
Yes, if there is no context engine ID provided, the security engine ID is used
instead.
Best regards,
Frank
>
> Thanks,
> Imene.
>
>
> -----Original Message-----
> From: Frank Fock [mailto:[email protected]]
> Sent: Tuesday, January 06, 2015 6:31 PM
> To: Boussour, Imene (6076618)
> Cc: [email protected]
> Subject: Re: [SNMP4J] SNMP4J V3 Traps with specified Engine ID
>
> Hi Imene,
>
> Your understanding of SNMPv3 trap sending is not correct.
> SNMPv3 notifications (traps) are sent from a command responder entity and are
> therefore authoritative. That means, the sender (which is the command
> responder entity) uses its own security engine ID within the notification
> PDU.
>
> The receiver (= command generator) then uses the security engine ID provided
> in the notification PDU to authentication/decrypt the notification.
>
> Therefore your setup should work already, except that you have not set the
> context name of the ScopedPDU object yet.
>
> Best regards
> Frank
>
>> On 06 Jan 2015, at 21:26, Boussour, Imene (6076618) <[email protected]>
>> wrote:
>>
>> Hello List,
>>
>> I am trying to send SNMP V3 Traps to a remote server (using a Trap monitor
>> software on windows) from my Java application, I use SNMP4j stack API.
>> My questions is around the engine ID, on the Trap receiver application we
>> need to create an SNMP V3 account with, username, auth protocol... but also
>> a Context Name.
>> On the SNMP4j side, there is multiple areas where we can define of set the
>> engineID:
>> 1 - USM usm = new
>> USM(SecurityProtocols.getInstance().addDefaultProtocols(), new
>> OctetString(MPv3.createLocalEngineID()), 0);
>> 2- snmp.getUSM().addUser(mSecurityName,
>> OctetString.fromHexString("80:00:13:70:c0:a8:01:0d"), new
>> UsmUser(mSecurityName, mAuthProtocol, , mPrivProtocol,
>> mPrivPassphrase));
>> 3- UsmUser(mSecurityName, mAuthProtocol, , mPrivProtocol,
>> mPrivPassphrase),
>> OctetString.fromHexString("80:00:13:70:c0:a8:01:0d"));
>> 4-
>> pdu.setContextEngineID(OctetString.fromHexString("80:00:13:70:c0:a8:01
>> :0d"));
>>
>> For context Name , I only found this:
>> pdu.setContextName(new OctetString("contextName"));
>>
>>
>> The SNMP4J createlocalEngineId method creates a random number, Can this work?
>> My understanding of SNMP trap V3, is that the Engine ID should match on the
>> sender and receiver. So, when we specify a custom engine ID on SNMP4J, which
>> one should we use?
>>
>> And here is the Code I am using to send Traps:
>>
>> // ltargetAddress represents the host and port we plan to
>> communicate with
>> // in the format: host/port
>> Address ltargetAddress = GenericAddress.parse
>> (mTransportType + ":" + mRemoteAddress + "/" + mRemotePort);
>>
>> TransportMapping<?> transport;
>> if (ltargetAddress instanceof UdpAddress) {
>> transport = new DefaultUdpTransportMapping();
>> } else {
>> transport = new DefaultTcpTransportMapping();
>> }
>>
>> //Create SNMP Session
>> Snmp snmp = new Snmp(transport);
>>
>> USM usm = new USM(SecurityProtocols.getInstance()
>> .addDefaultProtocols(), new OctetString(
>> MPv3.createLocalEngineID()), 0);
>>
>>
>> SecurityProtocols.getInstance().addPrivacyProtocol(new PrivAES192());
>>
>>
>> SecurityModels.getInstance().addSecurityModel(usm);
>>
>> //transport.listen();
>>
>> //Setting the security protocols
>> snmp.getUSM().addUser(
>> mSecurityName,
>> new UsmUser(mSecurityName, mAuthProtocol,
>> mAuthPassphrase, mPrivProtocol,
>> mPrivPassphrase));
>>
>>
>> // Create Target
>> UserTarget target = new UserTarget();
>> target.setAddress(ltargetAddress);
>> target.setRetries(1);
>> target.setTimeout(11500);
>> target.setVersion(SnmpConstants.version3);
>> target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
>> target.setSecurityName(mSecurityName);
>>
>> // Create PDU for V3
>> ScopedPDU pdu = new ScopedPDU();
>> pdu.setType(ScopedPDU.TRAP);
>>
>> // Adding OIDs
>> pdu.add(new VariableBinding(SnmpConstants.sysUpTime,
>> new OctetString(new Date().toString())));
>>
>> pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID,
>>
>> SnmpConstants.linkDown));
>>
>> pdu.add(new VariableBinding(new OID(mOID), new
>> OctetString(pMessage)));
>>
>> pdu.add(new
>> VariableBinding(SnmpConstants.snmpTrapAddress,
>>
>> new IpAddress(mRemoteAddress)));
>>
>> //Send the PDU
>> snmp.listen();
>> snmp.send(pdu, target);
>> snmp.close();
>>
>> Thanks,
>> Imene
>> _______________________________________________
>> SNMP4J mailing list
>> [email protected]
>> https://oosnmp.net/mailman/listinfo/snmp4j
>
_______________________________________________
SNMP4J mailing list
[email protected]
https://oosnmp.net/mailman/listinfo/snmp4j