% Netdot exercise % Network Management Topics # Introduction The Network Documentation Tool (Netdot) is an open source software designed to help network administrators collect, organize and maintain network documentation. Netdot is actively developed at the University of Oregon. ## Goals In these exercises we will install Netdot and demonstrate some of its most important features. ## Notes * Commands preceded with "$" imply that you should execute the command as a general user - not as root. * Commands preceded with "#" imply that you should be working as root. * Commands with more specific command lines (e.g. "rtrX>" or "mysql>") imply that you are executing commands on remote equipment, or within another program. # Installation _Netdot may already be installed in your PC. Ask the instructor._ Log in to your virtual machine as the sysadm user. ## Download the Package ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ cd $ wget http://netdot.uoregon.edu/pub/dists/netdot-1.0.7.tar.gz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Unpack the tarball: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ tar xzvf netdot-1.0.7.tar.gz $ cd netdot-1.0.7 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ## Install dependencies: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ sudo apt-get install build-essential $ sudo make apt-install Which RDBMS do you plan to use as backend: [mysql|Pg]? mysql We need to add a temporary repository of Netdot dependencies until all packages are in Debian/Ubuntu official repositories. Would you like to continue? [y/n] y ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This will download a lot of packages. Be patient. (If you had not installed mysql-server, you'll be asked for a DBA password. Ask the instructor for the Mysql root password). Say yes here: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ We will install the MIB files now. Continue? [y/n] y ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you see this prompt, then answer yes: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A new /etc/snmp/snmp.conf needs to be installed to point to the newly installed MIB files. The current file will be backed up. Continue? [y/n] y ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ At the end of the installation you will see a list of Perl modules that have been installed (OK). If any did not install you will see "MISSING". ----------------------------------------------------------------------------- > **NOTE** If more than two packages show as MISSING, do not continue. Ask your > instructor for help. Probably you will need to go back and repeat the last section > (`sudo make apt-install`) and look for errors. ----------------------------------------------------------------------------- If one or two packages are missing, type: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ sudo make installdeps Which RDBMS do you plan to use as backend: [mysql|Pg]? mysql ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You will now see three questions concerning CPAN setup to download the missing PERL dependency. Answer like this: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Would you like to configure as much as possible automatically? [yes] yes What approach do you want? (Choose 'local::lib', 'sudo' or 'manual') [local::lib] Would you like me to automatically choose some CPAN mirror sites for you? (This means connecting to the Internet) [yes] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you still see missing dependencies do: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ sudo make installdeps ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Until you don't see any more missing dependencies. This will try to install the missing modules using the CPAN archive. At the end, all the modules should show "ok". ## Initialize the site configuration: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ cd ~/netdot-1.0.7/ $ cp etc/Default.conf etc/Site.conf $ editor etc/Site.conf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Find and change the following values: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NETDOTNAME => 'hostX.ws.nsrc.org', DB_DBA_PASSWORD => '(the password you used when installing mysql)', DEFAULT_SNMPCOMMUNITIES => ['NetManage', 'public'], NMS_DEVICE => 'hostX.ws.nsrc.org', DEFAULT_DNSDOMAIN => 'ws.nsrc.org', DEVICE_NAMING_METHOD_ORDER => [ 'sysname', 'snmp_target' ], ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Save and exit from the file. ## Patch installation We're going to make a couple of changes: one to speed up download of the ethernet vendor file, and another to make netdot work with apache 2.4 ## Install the application and initialize the database. It's finally time to run the installation! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ cd ~/netdot-1.0.7/ $ sudo make installdb $ sudo make install APACHEUSER=www-data APACHEGROUP=www-data $ sudo ln -s /usr/local/netdot/etc/netdot_apache24_local.conf /etc/apache2/conf-available/netdot.conf $ sudo a2enconf netdot $ sudo service apache2 graceful ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Install the cron jobs for automated tasks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ sudo cp netdot.cron /etc/cron.d/netdot ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Operation ## Log into the web interface In your browser, go to: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://hostX.ws.nsrc.org/netdot ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Log in with username: admin and password: admin ## Changing default passwords Netdot comes with three default user accounts. You should change the default passwords on those. Go to the "Contacts" tab, then search for "Admin". You should see the details for the Admin user. Click on [edit], and find the Password field. Type the password you used to log in to your PC, then click on the "Update" button. Repeat the same steps for the other default users: * operator * guest ## Discovering devices If you have not done so yet, configure SNMP on your PC and your router. ##Configure snmp on your Vm $ sudo apt-get install snmpd $ sudo editor /etc/snmp/snmpd.conf ###comment on the below active config and add the below at the beggining of the file agentAddress udp:127.0.0.1:161 ####Add the following under Agent behaviour section agentAddress udp:161,udp6:[::1]:161 view all included .1 80 rocommunity NetManage default -V all sysServices 72 syslocation "KENET Training" syscontact training@kenet.or.ke Now back to Netdot. Let's create a file with all the devices in the lab network that respond to SNMP: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ editor /home/sysadm/discoverme.txt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Copy and paste the following list: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 10.10.0.201 NetManage 10.10.0.202 NetManage 10.10.0.203 NetManage 10.10.0.204 NetManage host1.ws.nsrc.org NetManage host2.ws.nsrc.org NetManage host3.ws.nsrc.org NetManage host4.ws.nsrc.org NetManage host5.ws.nsrc.org NetManage host6.ws.nsrc.org NetManage host7.ws.nsrc.org NetManage host8.ws.nsrc.org NetManage host9.ws.nsrc.org NetManage host10.ws.nsrc.org NetManage host11.ws.nsrc.org NetManage host12.ws.nsrc.org NetManage host13.ws.nsrc.org NetManage host14.ws.nsrc.org NetManage host15.ws.nsrc.org NetManage host16.ws.nsrc.org NetManage host17.ws.nsrc.org NetManage host18.ws.nsrc.org NetManage host19.ws.nsrc.org NetManage host20.ws.nsrc.org NetManage host21.ws.nsrc.org NetManage host22.ws.nsrc.org NetManage host23.ws.nsrc.org NetManage host24.ws.nsrc.org NetManage host25.ws.nsrc.org NetManage host26.ws.nsrc.org NetManage host27.ws.nsrc.org NetManage host28.ws.nsrc.org NetManage host29.ws.nsrc.org NetManage host30.ws.nsrc.org NetManage host31.ws.nsrc.org NetManage host32.ws.nsrc.org NetManage host33.ws.nsrc.org NetManage host34.ws.nsrc.org NetManage host35.ws.nsrc.org NetManage host36.ws.nsrc.org NetManage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`~~~~~ Now, tell Netdot to discover those devices: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ cd /usr/local/netdot $ sudo bin/updatedevices.pl -E /home/sysadm/discoverme.txt -IAF ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When that is done, go to the web interface and navigate to Management -> Devices Leave the search box empty, and click on the "Find" button. You should see all the discovered devices in that list. Go to the link for your group's router (e.g. rtrX.ws.nsrc.org) * Navigate to all the tabs: Basic, Interfaces, Modules, IP Info, etc. Netdot allows you to augment the information gathered from the device with details entered manually. * In the ARP section, you should see one entry with a timestamp. Click on that entry. You should see a table associating IP addresses with MAC addresses. This is the ARP table discovered from rtr1. You should see your PC's IP address and MAC address. ## Finding a computer in your network * Obtain the MAC address from your laptop (or desktop). Copy it in the clipboard. * In the Netdot web interface, go to Management -> Devices * Paste your MAC address and hit ENTER Netdot will show you which devices were seeing that MAC address the last time that it discovered the network. ## Managing IP address space Go to Management -> Address Space You should see a list of private IP blocks (from RFC-1918). These come pre-installed in Netdot. Click on 10.0.0.0/8 You will see a list of discovered IP blocks, which are marked as "Subnets". These were found in routers. * Click on 10.10.1.0/24. * Click on [edit] * In the Description field, type "Group 1 PCs" * Click "Save" ### Create a container to include all the group subnets In the section called "Address Space Tasks" on top, click on the "[new]" button and enter the following: * IP/Prefix: 10.10.0.0/16 * Owner: click on [new]. * In the new "Entity" window, enter: * Name: NSRC Lab * Insert button, then [close] * Used by: (leave blank) * Status: Container * Description: NSRC lab student networks * Save You should now see the new Container page. It shows a graphical representation of the /16 block. All the existing subnets are shown in red. The green space represents unused or available address space. * On the top of the graph there is a section called "Zoom: set one row equal to" Select /24 from the drop-down menu. Each row now represents a /24 block * Click on [Tree View] to see a tree graph view of the IP hierarchy ## Polling devices Periodically you will want to connect again to your routers and switches to fetch their routing tables, forwarding tables etc. You can run the command which does this: ~~~ $ sudo /usr/local/netdot/bin/updatedevices.pl -DIFAT ~~~ * -D: poll all devices already in the database * -I: get device info (e.g. sysName) * -F: get switch forwarding tables * -A: get router ARP tables * -T: re-calculate the topology To avoid having to run this by hand, you can install a crontab which will do it automatically at set times of day. We installed the crontab file in /etc/cron.d previously. If you look in /etc/cron.d/netdot you will see that this command executes once each hour by default. # More information [Official Netdot Website](http://netdot.uoregon.edu)