[SNMP4J] TCP Socket in SYN_RECV when sending V3 traps
Neeraj Vaidya
neeraj.vaidya at yahoo.co.in
Mon Jun 19 04:37:10 CEST 2017
Thanks Frank. So how do I get the authoritativeEngineId at runtime ?
The remote snmptrap collector has provided me with a user id of myuser and engine id of 0102030405. This is via an email correspondence which I had with the administrators of the remote system.
When I use the SnmpRequest tool bundled as part of snmp4j, which engineId parameters do I need to set when sending an INFORM ?
-l , -e , -E ?
I tried setting just the -e flag with 0102030405 on the command line of this tool and still at the receiving end i.e. in the logs of the net-snmp trap collector I see a message of "no match on engineID (80 00 88 .....)"
Basically, the snmptrapd collector is not using 0102030405 for USM engine ID matching purposes.
If I were to send just a coldStart trap with the SnmpRequest tool bundled in snmp4j distribution, what command line do I need to use ?
My engine ID which I can successfully specify as the authoritativeEngineId via -e flag is 0102030405, when using the snmptrap utility.
I was of the opinion that the same -e flag can be used in SnmpRequest utility as well.
Regards,
Neeraj
--------------------------------------------
On Mon, 19/6/17, Frank Fock <fock at agentpp.com> wrote:
Subject: Re: [SNMP4J] TCP Socket in SYN_RECV when sending V3 traps
To: "Neeraj Vaidya" <neeraj.vaidya at yahoo.co.in>
Cc: snmp4j at agentpp.org
Date: Monday, 19 June, 2017, 8:31 AM
Hi Neeraj,
Please make sure, that you have understand the
engine ID and context
engine ID terms and
usages.
It seems that you mix up things.
Your example below cannot work for
INFORM
PDUs, because
you need to specify the
authoritative engine ID as context engine ID
then. This is the
INFORM
*receivers* engine ID.
Instead, you use the
senders engine ID. The receiver should drop/ignore
such an INFORM message with
unknownPduHandles counter increased.
Best regards,
Frank
Am
16.06.2017 um 22:41 schrieb Neeraj Vaidya:
> Hi Frank,
> Coming back
to this conversation as I have been away from this task due
to other project commitments.
> In the
example below, I have also noticed that if I change the PDU
type to INFORM, the receiving snmptrap collector (which is
net-snmp snmptrapd) fails to match the engine id. It picks
up something totally different from what I am setting
below.
> Is there some other place where
I need to set the engineId ?
>
> Regards,
> Neeraj
>
> Sent from my
iPhone
>
> On 24 May
2017, at 16:44, Frank Fock <fock at agentpp.com>
wrote:
>
>>>
------------------------------------------------ Code Start
------------------------------------------------
>>>
>>>
Address address =
GenericAddress.parse("tcp:rhelhost1/1163");
>>>
>>>
try {
>>>
TransportMapping transportMapping = new
DefaultTcpTransportMapping();
>>>
transportMapping.listen();
>>>
>>> Snmp snmp = new
Snmp(transportMapping);
>>>
>>> USM usm = new
USM(SecurityProtocols.getInstance(),
>>>
new
OctetString(MPv3.createLocalEngineID()), 0);
>>>
>>>
SecurityModels.getInstance().addSecurityModel(usm);
>>>
>>>
//snmp.listen(); ----> Do I need to use this
invocation ??
>>>
>>> byte[] b = (new
BigInteger("0102030405",16)).toByteArray();
>>>
>>>
snmp.getUSM().addUser(new
OctetString("snmp4j"),
>>> new
UsmUser(new OctetString("snmp4j"), AuthMD5.ID, new
OctetString("snmp4j"), PrivDES.ID, new
OctetString("snmp4j")));
>>>
>>> UserTarget
target = new UserTarget();
>>>
>>>
target.setAddress(address);
>>>
target.setRetries(1);
>>>
target.setTimeout(5000);
>>>
target.setVersion(SnmpConstants.version3);
>>>
target.setSecurityLevel(SecurityLevel.AUTH_NOPRIV);
>>>
target.setSecurityName(new
OctetString("snmp4j"));
>>>
>>> // create the
PDU
>>> ScopedPDU
pdu = new ScopedPDU();
>>>
long sysUpTime =
Instant.now().getEpochSecond();
>>> //pdu.add(new
VariableBinding(SnmpConstants.sysUpTime),new OctetString(new
Date().toString()));
>>>
pdu.setType(ScopedPDU.TRAP);
>>> pdu.add(new
VariableBinding(SnmpConstants.sysUpTime, new
TimeTicks(sysUpTime)));
>>>
pdu.add(new
VariableBinding(SnmpConstants.snmpTrapOID,
SnmpConstants.linkUp));
>>>
pdu.setContextEngineID(new
OctetString().fromByteArray(b));
>>>
snmp.setLocalEngine(b, 0, 0);
>>>
// send the PDU
>>>
>>> ResponseEvent
response = null;
>>>
>>> response =
snmp.send(pdu, target);
>>>
>>>
Thread.sleep(10); // This Sleep somehow allows the entire
TCP 3-way handshake to occur without terminating the
program
>>>
>>> snmp.close();
>>>
>>>
} catch (IOException e) {
>>>
e.printStackTrace();
>>>
} catch (InterruptedException e) {
>>>
e.printStackTrace();
>>>
}
>>>
------------------------------------------------ Code End
-----------------------------------------------
--
---
AGENT++
Maximilian-Kolbe-Str.
10
73257 Koengen, Germany
https://agentpp.com
Phone: +49 7024 8688230
Fax:
+49 7024 8688231
More information about the SNMP4J
mailing list