Frank, actually if I perform the Network Discovery Tools of iReasoning in my office where I have a standard router, the tool could find easy a couple of printers with all the informations (sysDescr, sysObject, sysUpTime, etc) but not my Agent :( Maybe I'm wrong but it seem an issue un my Agent. Or is it something should I configure on the operating system where the Agent works (it's a Linux Ubuntu)? Best Regards Denis
-----Messaggio originale----- Da: Frank Fock [mailto:[email protected]] Inviato: venerdì 18 settembre 2015 16:52 A: Denis Ioan <[email protected]> Cc: [email protected] Oggetto: Re: [SNMP4J] SNMP4J Agent cannot be discovered (Netwrok Discovery) Hi Denis, The accessibility by IP multi-cast and broadcast is a network issue. Your agent is fine if you can access it by a simple SNMP message it also can be accessed by a multi-cast or broadcast. From the agent point of view, the IP packet types cannot be distinguished and are processed in exactly the same way. Best regards, Frank > On 18 Sep 2015, at 16:47, Denis Ioan <[email protected]> wrote: > > Hi Frank, > just for my understand, the problem where my agent cannot be not accessible > by IP broadcast or multi-cast UDP packets is it a problem inside my software > (my Agent programming) or could come from the network environment? (After > this question I try to do not disturb you more). > Thank you > Best Regards > Denis > > -----Messaggio originale----- > Da: Frank Fock [mailto:[email protected]] > Inviato: venerdì 18 settembre 2015 16:38 > A: Denis Ioan <[email protected]>; [email protected] > Oggetto: Re: R: [SNMP4J] SNMP4J Agent cannot be discovered (Netwrok > Discovery) > > Hi Denis, > > What object a manager expects to find to successfully "discover" an agent > depends on the manager itself. However, there are some standard objects that > should be there in any case. > For SNMPv3 those objects are provided by the SNMP-FRAMEWORK-MIB. > SNMP4J-Agent by default provides those objects. > > You can use MIB Explorer Pro to run a discovery by yourself and log the > exchanged packets too. > But also please check for network security issues. The agent you are running > could be not accessible by IP broadcast or multi-cast UDP packets. > > Best regards, > Frank > > Am 18.09.2015 um 10:28 schrieb Denis Ioan: >> Hi Frank, >> first of all thank you for the quick reply. I try to give you some more >> details about my issue: >> As you could check in my lines of code I've implemented (or I tried to >> implement) an SNMP Agent v3. >> I registered all my private OIDs and I've also implemented all the >> mib-2/system OIDs (sysName, sysDescription, etc). >> So you can "get" any the system OIDs and get/set all my enterprise OIDs (as >> well you can SnmpWalk, GetNext, etc). This works well. >> Some software like "Whats Up Gold" in order to connect to a SNMP device uses >> such a "SNMP Network Discovery" where they poll all the subnet addresses >> looking for a SNMP Device. I've tried with a Cisco router (SNMPv3 and >> authentication) and the application discovers it immediately, but when I try >> on my device the software cannot discover it. As well if I use the "Network >> Discovery" function if the iReasoning MIB Browser (with the one I can work >> perfectly in terms of SnmpGet, SnmpSet and so on). >> At this point I ask myself if I should register some other mandatory OIDs >> (not only the system OIDs) to let my device to be automatically discovered >> or I miss to implement in my software something important. >> I hope I could give some more indications and thank once more. >> Best Regards >> Denis >> >> -----Messaggio originale----- >> Da: SNMP4J [mailto:[email protected]] Per conto di Frank >> Fock >> Inviato: giovedì 17 settembre 2015 22:05 >> A: [email protected] >> Oggetto: Re: [SNMP4J] SNMP4J Agent cannot be discovered (Netwrok >> Discovery) >> >> Hi Denis, >> >> Before I can answer your question, I need to know what you exactly mean by >> "Network Discovery"? >> >> Often IP multi-cast was used for that. Nowadays this is often no longer >> possible because switches/router/firewalls block multi-cast packets for >> security reasons. >> >> In addition, multi-cast works only with SNMPv1 and v2c (community >> based) and >> SNMPv3 with noAuthNoPriv. >> >> Best regards, >> Frank >> >> Am 17.09.2015 um 11:14 schrieb Denis Ioan: >>> Hi to everybody, >>> I'm new to the SNMP protocol but I had to implement an Agent in v3. >>> Using SNMP4J I've implemented and all works fine except the agent >>> cannot be discovered automatically from the Network Discovery functions. >>> I guess I forgot to insert something in the configuration. I post >>> here the Agent class and the way I use it in the software: >>> >>> public class SNMPAgent extends BaseAgent { >>> >>> private final String GROUP_NAME = "v3group"; >>> >>> private String address; >>> private String baseOID; >>> private String securityName; // User >>> private String SHAPassword; >>> private String AES128Passphrase; >>> private String trapIPAddress; >>> private String trapPort; >>> >>> /** >>> * >>> * @param address >>> * @throws IOException >>> */ >>> public SNMPAgent(String address, String baseOID, >>> String securityName, String SHAPassword, String >>> AES128Passphrase, String trapIPAddress, String trapPort) throws >>> IOException { >>> >>> /** >>> * Creates a base agent with boot-counter, config file, >>> and a >>> * CommandProcessor for processing SNMP requests. >>> Parameters: >>> * "bootCounterFile" - a file with serialized >>> boot-counter information >>> * (read/write). If the file does not exist it is >>> created on shutdown of >>> * the agent. "configFile" - a file with serialized >>> configuration >>> * information (read/write). If the file does not exist >>> it is created on >>> * shutdown of the agent. "commandProcessor" - the >>> CommandProcessor >>> * instance that handles the SNMP requests. >>> */ >>> super(new File("conf.agent"), new File("bootCounter.agent"), >>> new CommandProcessor( >>> new >>> OctetString(MPv3.createLocalEngineID()))); >>> >>> this.address = address; >>> this.baseOID = baseOID; >>> this.securityName = securityName; >>> this.SHAPassword = SHAPassword; >>> this.AES128Passphrase = AES128Passphrase; >>> this.trapIPAddress = trapIPAddress; >>> this.trapPort = trapPort; >>> >>> } >>> >>> /** >>> * Adds community to security name mappings needed for SNMPv1 >>> and SNMPv2c. >>> */ >>> @Override >>> protected void addCommunities(SnmpCommunityMIB communityMIB) { >>> >>> } >>> >>> /** >>> * Adds initial notification targets and filters. >>> */ >>> @Override >>> protected void addNotificationTargets(final SnmpTargetMIB targetMIB, >>> final SnmpNotificationMIB notificationMIB) { >>> } >>> >>> /** >>> * Adds all the necessary initial users to the USM. >>> */ >>> @Override >>> protected void addUsmUser(USM usm) >>> { >>> UsmUser user = new UsmUser( >>> new OctetString(securityName), >>> AuthSHA.ID, >>> new OctetString(SHAPassword), >>> PrivAES128.ID, >>> new OctetString(AES128Passphrase) >>> ); >>> >>> usm.addUser(user.getSecurityName(), null, user); >>> } >>> >>> /** >>> * Adds initial VACM configuration. >>> */ >>> @Override >>> protected void addViews(VacmMIB vacm) >>> { >>> vacm.addGroup( >>> SecurityModel.SECURITY_MODEL_USM, >>> new OctetString(securityName), >>> new OctetString(GROUP_NAME), >>> StorageType.nonVolatile >>> ); >>> >>> vacm.addAccess( >>> new OctetString(GROUP_NAME), >>> new OctetString(), >>> SecurityModel.SECURITY_MODEL_USM, >>> SecurityLevel.AUTH_PRIV, >>> MutableVACM.VACM_MATCH_EXACT, >>> new OctetString("fullReadView"), >>> new OctetString("fullWriteView"), >>> new OctetString("fullNotifyView"), >>> StorageType.nonVolatile >>> ); >>> >>> vacm.addViewTreeFamily( >>> new OctetString("fullReadView"), >>> new OID(baseOID), >>> new OctetString(), >>> VacmMIB.vacmViewIncluded, >>> StorageType.nonVolatile >>> ); >>> >>> vacm.addViewTreeFamily( >>> new OctetString("fullWriteView"), >>> new OID(baseOID), >>> new OctetString(), >>> VacmMIB.vacmViewIncluded, >>> StorageType.nonVolatile >>> ); >>> >>> vacm.addViewTreeFamily(new OctetString("fullReadView"), new >>> OID("1.3"), >>> new OctetString(), VacmMIB.vacmViewIncluded, >>> StorageType.nonVolatile); >>> } >>> >>> /** >>> * Unregister the basic MIB modules from the agent's MOServer. >>> */ >>> @Override >>> protected void unregisterManagedObjects() { >>> // TODO Auto-generated method stub >>> >>> } >>> >>> /** >>> * Register additional managed objects at the agent's server. >>> */ >>> @Override >>> protected void registerManagedObjects() { >>> // TODO Auto-generated method stub >>> >>> } >>> >>> protected void initTransportMappings() throws IOException { >>> transportMappings = new TransportMapping[1]; >>> Address addr = GenericAddress.parse(address); >>> TransportMapping tm = TransportMappings.getInstance() >>> .createTransportMapping(addr); >>> transportMappings[0] = tm; >>> } >>> >>> /** >>> * Start method invokes some initialization methods needed to >>> start the >>> * agent >>> * >>> * @throws IOException >>> */ >>> public void start() throws IOException { >>> >>> init(); >>> // This method reads some old config from a file and causes >>> // unexpected behavior. >>> // loadConfig(ImportModes.REPLACE_CREATE); >>> addShutdownHook(); >>> //getServer().addContext(new OctetString("public")); >>> finishInit(); >>> run(); >>> sendColdStartNotification(); >>> } >>> >>> /** >>> * Clients can register the MO they need >>> */ >>> public void registerManagedObject(ManagedObject mo) { >>> try { >>> server.register(mo, null); >>> } catch (DuplicateRegistrationException ex) { >>> throw new RuntimeException(ex); >>> } >>> } >>> >>> public void unregisterManagedObject(MOGroup moGroup) { >>> moGroup.unregisterMOs(server, getContext(moGroup)); >>> } >>> >>> } >>> >>> I user the Agent in this way: >>> >>> >>> agent = new SNMPAgent( >>> LOCALHOST + '/' + configuration.getAgentSnmpPort(), >>> configuration.getAgentBaseOID(), >>> configuration.getAgentSnmpUser(), >>> configuration.getAgentSHAPassword(), >>> configuration.getAgentAES128PassPhrase(), >>> configuration.getTrapDestIPAddress(), >>> configuration.getTrapPort()); >>> >>> agent.start(); >>> >>> // Since BaseAgent registers some mibs by default we need to unregister >>> // one before we register our own sysDescr. Normally you would >>> // override that method and register the mibs that you need >>> agent.unregisterManagedObject(agent.getSnmpv2MIB()); >>> >>> // Register a system description, use one from you product environment >>> // to test with >>> >>> agent.registerManagedObject(MOCreator.createReadOnly(sysDescr,SYS_DE >>> S >>> C >>> RIPTION)); >>> >>> agent.registerManagedObject(MOCreator.createReadOnly(sysObjectID, >>> new OID(configuration.getAgentBaseOID()))); >>> >>> agent.registerManagedObject(MOCreator.createReadOnly(sysContact,SYS_ >>> C >>> O >>> NTACT)); >>> >>> agent.registerManagedObject(MOCreator.createReadOnly(sysName,SYS_NAM >>> E >>> ) >>> ); >>> >>> agent.registerManagedObject(MOCreator.createReadOnly(sysLocation,SYS >>> _ >>> L >>> OCATION)); >>> >>> agent.registerManagedObject(MOCreator.createReadOnly(sysServices,SYS >>> _ >>> S >>> ERVICES)); >>> >>> MOSSysUpTime = MOCreator.createReadWrite(sysUpTime, new >>> TimeTicks((long)0)); >>> agent.registerManagedObject(MOSSysUpTime); >>> >>> >>> I thank you in advance everybody will answer me. >>> Denis >>> >>> >>> >>> _______________________________________________ >>> SNMP4J mailing list >>> [email protected] >>> https://oosnmp.net/mailman/listinfo/snmp4j >> -- >> --- >> AGENT++ >> Maximilian-Kolbe-Str. 10 >> 73257 Koengen, Germany >> https://agentpp.com >> Phone: +49 7024 8688230 >> Fax: +49 7024 8688231 >> >> _______________________________________________ >> SNMP4J mailing list >> [email protected] >> https://oosnmp.net/mailman/listinfo/snmp4j >> >> > > -- > --- > AGENT++ > Maximilian-Kolbe-Str. 10 > 73257 Koengen, Germany > https://agentpp.com > Phone: +49 7024 8688230 > Fax: +49 7024 8688231 > > > _______________________________________________ SNMP4J mailing list [email protected] https://oosnmp.net/mailman/listinfo/snmp4j
