<%text>

- NAME
- VERSION
- AUTHOR
- SUPPORT
- REQUIREMENTS

- OS

- INSTALL

- 1. Download and Un-archive Netdisco

- Non-Standard install Directory

- 2. Create a Unix User/Group for Netdisco
- 3. Add Unix Administrators to Netdisco Group
- 4. PostgreSQL

- 4.1. Install Postgres
- 4.2. Configure Postgres

- 5. SNMP

- 5.1. Net-SNMP
- 5.2. SNMP::Info
- 5.3. MIBs

- 6. GraphViz (Optional)
- 7. Setup Apache

- 7.1. MAC OS X
- 7.2. Mandrake 9.1
- 7.3. Apache From Scratch
- 7.4. Apache Configuration Files
- 7.5. Mason Data Directory

- 8. Perl Modules and Mason

- 8.1. Install required Perl modules from CPAN
- 8.2. Non-Standard Perl Location

- 9. Netdisco Configuration
- 10. OUI Database

- [10.1] Updating oui.txt (Optional)

- 11. Start Apache
- 12. Discover a Device in Netdisco
- 13. Create Network Topology
- 14. Test Web Side
- 15. Add Cron Jobs
- 16. Start Admin Daemon

- 16.1 Make the Admin Daemon start at every boot

- SUCCESS

- Credits and Donations

# NAME

Netdisco INSTALL -- Instructions for setting up Netdisco application.

# VERSION

Netdisco 0.94

PLEASE check the latest version of this document at http://netdisco.org/install.html in case of bugs.

# AUTHOR

Created by Max Baker.

See list at the end of README of all the contributors.

Netdisco was created at the University of California, Santa Cruz (UCSC), Networking and Technology Services (NTS) department. UCSC continues to support the development of Netdisco by providing development servers and financial support.

# SUPPORT

Netdisco is an Open Source project hosted by Source Forge.

Please use the `netdisco-users` mailing list for all help, problems and comments. Developers, patches, and ideas are always welcome.

http://lists.sourceforge.net/lists/listinfo/netdisco-users

Please use the Bug interface from Source Forge page at :

http://sourceforge.net/projects/netdisco

# REQUIREMENTS

Netdisco is built using lots of fine Open-Source tools:

- Perl
  5.6.1 and newer advised.

  5.8.1 on Mandrake 9.x may be a problem (if you get an `out of memory` error, you may need to change to 5.6.1 or 5.8.3+).

- Perl Modules
  Listed below

- Net-SNMP
  5.1.x and newer advised. Reported working on 5.0.x.

- PostgreSQL
  Version 7.4 strongly recommended.

  Reported working for versions 7.2, 7.3, 7.4

- Mason
  1.16 or newer required. 1.26 or newer advised.

- Apache
  1.3.x advised, Version 2.x not yet supported by mod_perl

- mod_perl
  Version to match Apache - 1.29 or higher recommended.

  Do not install version 1.99.

- GraphViz (Optional)
  Version 0.16 or higher recommended.

See INSTALL below for details on how to retrieve and install each one.

## OS

Netdisco was developed on a FreeBSD system but should work on any system that Postgres, Perl, Apache, and Net-SNMP run on.

Linux is a sure bet. Netdisco has been tested with Mandake 9.1 and includes specific notes to install with it. Successful installs have been reported under Redhat, Mandrake, Gentoo and Debian.

One user has reported getting Netdisco running on OS X.

Windows will take a lot of massaging but should be possible under Cygwin.

# INSTALL

This is not a terribly easy install. If you aren't comfortable installing programs from source and using a text editor, get some help. Hopefully this will all be rolled up into an install script by the time Netdisco hits version 1.0.

## 1. Download and Un-archive Netdisco

Get the newest version from http://www.netdisco.org.

        tar xvfz netdisco-x.xx.tar.gz

Create a directory for Netdisco

        mkdir /usr/local/netdisco

Move files to that dir

        mv netdisco-x.xx/* /usr/local/netdisco

### Non-Standard install Directory

If you plan to install to a directory other than `/usr/local/netdisco` then you must change a couple files. Otherwise Skip down to Number 2.

SQL Shell Scripts
  Modify the following shell scripts :

          sql/pg_run
          sql/pg_init
          sql/pg_back
          bin/netdisco_daemon

netdisco.conf
  Set the `home` option in netdisco.conf.

netdisco_apache.conf
  Change all the appearances of `/usr/local/netdisco` in netdisco_apache.conf to match your new directory.

netdisco_apache_dir.conf
  Change all the appearances of `/usr/local/netdisco` in netdisco_apache_dir.conf to match your new directory.

## 2. Create a Unix User/Group for Netdisco

Create a user and group named `netdisco`

Linux

          useradd -d /usr/local/netdisco netdisco

BSD

          adduser netdisco

Give this user permission to the files:

        chown -R netdisco.netdisco /usr/local/netdisco

## 3. Add Unix Administrators to Netdisco Group

Once Netdisco is up and running most administration can be done from the Web interface. Whoever will be doing the back-end administration will need to have write access and will need write access on Netdisco's files.

Add the unix account names of administrators that will modify the source code or use the command line interface interface to the `netdisco` group in /etc/groups.

Don't forget to logout and login after adding yourself to a group.

## 4. PostgreSQL

Netdisco runs Postgres as its database back-end. A mySQL and Oracle port are in development.

### 4.1. Install Postgres

[4.1.1] BSD
  First install Postgres from ports:

          cd /usr/ports/database/postgresql7
          make install

  Next initialize the database :

          more /usr/local/pgsql/post-install-notes
          su -l pgsql -c initdb

[4.1.2] Mandrake Linux
  Installing PostgreSQL the easy way:

          urpmi postgresql postgresql-devel postgresql-server postgresql-docs

  The files you will need to edit below are in /var/lib/pgsql/data.

  If you lost / don't have install CDs :

  The following line uses an FTP site that has the 9.0 RPMs because I lost the CDs. Check the current mirror list at http://www.mandrakelinux.com/en/ftp.php3 and choose a mirror close to you.

          urpmi.addmedia ftpsite ftp://mirror.mcs.anl.gov/pub/Mandrake-old/9.0/i586/Mandrake/RPMS \
              with ../base/hdlist.cz

  Now you have to add `--media ftpsite` in each `urpmi` command like so :

          urpmi --media ftpsite postgresql postgresql-devel

  Remember this for the Apache setup too.

[4.1.3] MAC OS X
  See http://developer.apple.com/internet/macosx/postgres.html for detailed instructions on installing PostgreSQL with OS X.

[4.1.4] By Source (All Others)
  There is probably a binary package all ready for you. See your distribution's instructions for more help. Otherwise download and compile the source code from http://www.postgresql.org.

  If you are installing Postgres from source you may have to run these two commands in order to install the DBD::Pg Perl module later on :

          export POSTGRES_INCLUDE=/usr/local/postgres/include
          export POSTGRES_LIB=/usr/local/postgres/lib

  You may also have to modify your /etc/ld.so.conf to include your new POSTGRES_LIB directory. Don't forget to run `ldconf` afterwards.

### 4.2. Configure Postgres

Netdisco's settings in PostgreSQL are

     Database User     : netdisco
     Database Name     : netdisco
     Database Password : you choose it

Follow these steps to setup Netdisco in PostgreSQL.

[4.2.1] Permissions
  If you have just setup Postgres for the first time you may have to change the default permissions in $PG_DATA/pg_hba.conf. $PG_DATA might be in /usr/local/pgsql or in /var/db, depends on your OS. Check the postgres users' homedir files for the location of $PG_DATA.

  For installation you must give the database user access to the `template1` database. The following line will give all users who have logon permissions in Unix access to the `template1` database.

          local template1 all ident

  Next you must give the `netdisco` database user access to the `netdisco` database. The following line will give all database users access to a database that is the same name as them. This line must be put above all the rest of the uncommented lines in the pg_hba.conf file to take precedence.

          local sameuser all md5

  You may have to swap `md5` for `crypt`, for old versions of Postgres. Upgrade.

  Finally if you would like to have root be able to access all databases, try this one :

          local all root trust

[4.2.2] Restart Postgres
  You must now restart Postgres

  Linux : one of these three

          /etc/rc.d/init.d/postgresql restart
          service postgresql restart
          /etc/rc.d/postgresql restart

  FreeBSD :

          /usr/local/etc/rc.d/*pgsql* restart

  If there are problems with this step you will receive an error that mentions something about pg_hba.conf.

[4.2.3] Create Database.
  Make sure your copy of the database is running.

  Next, find out the name of your database user. The default name for some Linux RPM versions is `postgres` and for some BSD installations `pgsql`.

  Edit the files `pg_init` and `pg_run` to match your database user name in /usr/local/netdisco/sql/pg_init

          vi /usr/local/netdisco/sql/pg_init
          vi /usr/local/netdisco/sql/pg_run

  As root run `sql/pg_init` to create the database and user for Netdisco.

  The password you will be asked for twice is the new password for the database user you are creating. This is the same password you will be putting in netdisco_apache.conf and in netdisco.conf.

          cd /usr/local/netdisco/sql
          ./pg_init

[4.2.4] Check Settings
  Now as a non-privileged user make sure you can get into the database by running `sql/pg_run`. Enter the database user password given above.

          cd /usr/local/netdisco/sql
          ./pg_run

[4.2.5] Create Tables
  Once you are sure the database is setup correctly, create the database tables with `sql/pg_all`. Type in the database user password once when prompted.

          cd /usr/local/netdisco/sql
          ./pg_all

[4.2.6] Optimizations
  If you have freshly installed Postgresql then the default memory usage NEEDS to be increased for efficiency. See the PostgreSQL documentation for postgresql.conf.

  Specifically you really need to up the maximum connections and shared memory settings. After you have Netdisco running on a large installation it would be of great benefit to get a Postgres guru in there to tune things for you. See README for more info about how to speed things up now and again.

[4.2.7] Postgres Startup
  Make sure that Postgres is set to start automatically.
  Linux

            chkconfig postgresql on

  BSD
    Make sure that the file in `/usr/local/etc/rc.d` is alright.

[4.2.8] Postgres Maintenance
  Read the section in README about Database Maintenance... every once in a while you may have to run a `VACUUM` and `REINDEX` by hand if things get too slow.

[4.2.9] Remote Database (Optional)
  If you have postgres installed in a remote location then all you have to do is add that host information to the `db_Pg` line in netdisco.conf.

          db_Pg = dbi:Pg:dbname=netdisco;host=HOSTNAME;port=PORT;

  On the Postgresql machine, allow your remote front end to contact the backend database. Here is a sample line in pg_hba.conf.

       #TYPE  DATABASE          USER            IP-ADDRESS              IP-MASK           METHOD
       host   netdisco        netdisco         101.102.103.104         255.255.255.0       md5

  Don't forget to restart Postgres after changing the pg_hba.conf file.

## 5. SNMP

There are three components to setup for SNMP

### 5.1. Net-SNMP

Net-SNMP 5 lives at http://net-snmp.sourceforge.net.

See OS-specific notes below.

[5.1.1] Download Net-SNMP from http://net-snmp.sourceforge.net
  This used to be called ucd-snmp.

[5.1.2] Install Net-SNMP to include Perl module that comes inside the distribution.
  When you run `./configure`, make sure you add the switch `--with-perl-modules`

          ./configure --with-perl-modules --enable-shared
          make
          make install

  If you already have net-snmp installed, then go to the source directory and in the `perl` subdirectory and run `perl Makefile.PL`

          cd /path/to/net-snmp-5.1.x/perl
          perl Makefile.PL
          make
          make install

       ********************************************************************

  DO NOT INSTALL the SNMP:: modules off of CPAN or the NET::SNMP module off of CPAN.

       ********************************************************************

  Reread the above line.

[5.1.3] (Optional) Configure Net-SNMP for a non-standard setup
  You probably will not have to do this step unless you have installed net-snmp somewhere other than /usr/local/ or have some specific SNMP defaults to change for these tools.

          snmpconf

  Make sure to set the MIB dir if non-standard or you are not using the MIBS that come with Netdisco.

       (Textual mib Parsing -> Specifies directories to be searched for mibs)

  Make sure this newly created snmp.conf lives in /usr/local/share/snmp or wherever you put a custom install.

OS Specific Notes :

BSD
  For BSD install Net SNMP with ports :

          cd /usr/ports/net/net-snmp && make install

  For a recent version of BSD you should get the Perl modules installed automatically.

  For a really old version of BSD, or for weird and multiple Perl installs do it by hand!

          cd /usr/ports/net/net-snmp
          make
          cd work/net-snmp-5
          ./configure --with-perl-modules
          make
          make install

Linux
  If you have installed the Net-SNMP RPM from Redhat or Mandrake it does not include the Perl modules. Uninstall it and install a newer version by hand as below.

          rpm -e net-snmp

  Same goes for Debian. DO NOT use the apt-get version of Net-SNMP, install by hand (it's easy!).

### 5.2. SNMP::Info

This Perl module is an integral part of Netdisco. It is available from http://snmp-info.sourceforge.net. It requires that you have net-snmp installed first.

SNMP::Info holds all the device-specific code to retrieve data from network devices via SNMP. A wide variety of devices are supported. You may need to add support for other devices if they do not follow a standard interface. This is not too complex. See SNMP::Info for more details.

You have four different options in installing SNMP::Info

[5.2.1] CPAN

          perl -MCPAN -e shell
              o conf prerequisites_policy ask
              install SNMP::Info

[5.2.2] From Source
  Download newest version from http://snmp-info.sourceforge.net

          tar xvfz SNMP-Info-0.x.tar.gz
          cd SNMP-Info-0.x
          perl Makefile.PL
          make install

[5.2.3] From CVS
  If you plan to add or change device support in SNMP::Info to customize Netdisco to your devices, you should install SNMP::Info this way.

          make snmp

  This will create the SNMP/ directory where SNMP::Info will live. Periodically you should re-run

          make snmp

  To update to the most current CVS version. For BSD or Solaris systems, use `gmake` instead of `make`

[5.2.4] From ports (BSD)

          cd /usr/ports/net-mgmt/p5-SNMP-Info
          make install

### 5.3. MIBs

MIBs that are required for SNMP::Info are included with Netdisco in the mibs/ directory.

They are also available as a separate download on source forge.

## 6. GraphViz (Optional)

GraphViz is used to create the Network Map.

It lives at http://www.research.att.com/sw/tools/graphviz/.

[6.1] Download
  BSD
    For BSD use ports:

            cd /usr/ports/graphics/graphviz && make install

  Linux
    For Redhat and Mandrake systems you will make sure that a lol of `-devel` packages are installed. If you see errors about not having a PNG or JPEG library then install the `-devel` packages as needed.

            urpmi libjpeg62-devel libpng3-devel

    If you get some weird error in build about not having `intl.la` then make sure you have the gettext packages installed :

            urpmi gettext-devel

  Unix
    Get the newest version from http://www.graphviz.org/pub/graphviz. Unarchive and install.

  Solaris
    Follow the UNIX Instructions but ...

    Make the JPEG and EXPAT libraries first and when making the JPEG library make sure you have

            ./configure --enabled-shared --enabled-static

  Mac OS X
    It is reported to be in `DarwinPorts` or you can check out http://www.phil.uu.nl/~js/graphviz/.

[6.2] True Type Font
  Copy a True Type Font file (.ttf) into the Netdisco directory and change `node_font` in netdisco.conf to match.

          cp /path/to/windows/fonts/lucon.ttf /usr/local/netdisco

  You can grab arial.ttf or lucon.ttf out of the c:\windows\fonts directory of any Windows machine.

[6.3] Graph Settings
  Review other graph settings in netdisco.conf

[6.4] Check Path
  Make sure that neato/twopi is in your path, and/or in the crontab path that creates the graphs.

          which twopi
          which neato

After the Perl Modules step below, make sure the Graphviz Perl module got installed

        perldoc GraphViz

NOTE: You can safely ignore all warnings about `size too small for label`.

## 7. Setup Apache

Apache2 --

Until mod_perl 2.0 is released as stable, Mason will not run under Apache2. Netdisco will not run under Apache2 until that point.

### 7.1. MAC OS X

See the following three links in addition to this document :

http://www.oreillynet.com/pub/a/mac/2002/11/05/apache_osx.html http://www.oreillynet.com/pub/a/mac/2002/12/18/apache_modssl.html http://www.oreillynet.com/pub/a/mac/2003/02/07/libapreq_update.html

### 7.2. Mandrake 9.1

Mandrake 9.1 comes with Apache2. It also has the option of installing a version of Apache1/mod_perl on a different port and then reverse-proxying it.

mod_ssl with Mandrake to come...

[7.2.1] Install Apache1
  Install Apache1 and Mod_Perl 1 and their development packages :

          urpmi apache-devel-1 mod_perl-devel-1 apache-mod_perl-1 mod_perl-common-1

  Mandrake 9.1 - Do this for the DB_File Perl module

          ln -s /usr/include/db1/* /usr/include
          ln -s /usr/lib/libdb1.so.2 /usr/lib/libdb.so

[7.2.2] Configure Both Apaches
  Mandrake and some Redhats come with two copies of Apache installed. The mod_perl server sits on a weird port and is reversed proxied by a normal Apache server.

  Mandrake 9.0 uses two Apache1 servers, while Mandrake 9.1 uses an Apache2 server that sits in front of the apache1/mod_perl server.

  Configuration files for Mandrake live in /etc/httpd/conf

  In the file httpd-perl.conf add the two `Include` lines:

          Include /usr/local/netdisco/netdisco_apache.conf
          Include /usr/local/netdisco/netdisco_apache_dir.conf

  In the file httpd.conf (httpd2.conf for 9.1) add the final `RewriteRule` line:

          <IfModule mod_rewrite.c>
          RewriteEngine on
          RewriteRule ^proxy:.*  -  [F]
          RewriteRule ^(.*\/perl\/.*)$  http://%{HTTP_HOST}:8200$1 [P]
          RewriteRule ^(.*\/cgi-perl\/.*)$  http://%{HTTP_HOST}:8200$1 [P]
          RewriteRule ^(.*\/netdisco\/.*)$  http://%{HTTP_HOST}:8200$1 [P]
          </IfModule>

  In the file commonhttpd.conf add the Alias line :

          Alias /netdisco /netdisco/

[7.2.3] Restart Apache

          /etc/rc.d/init.d/httpd restart

### 7.3. Apache From Scratch

Install Apache 1.3.x and mod_perl 1.x and mod_ssl

Netdisco is designed to work in a secure (https) or non-secure environment. Due to the security and privacy concerned associated with this data, using a secure server is recommended.

Below is my method if you haven't installed apache and mod_perl before. I statically compile mod_perl, and mod_ssl then leave the rest of the modules as dynamically loadable objects (DSO).

[7.3.1] Download and Unarchive
  Get Apache from http://httpd.apache.org

  Get mod_perl from http://perl.apache.org

  Get mod_ssl from http://www.modssl.org

  Unarchive all three to the same directory, maybe /usr/local/src

[7.3.2] Inital Apache Setup
  This step makes the framework that mod_ssl and mod_perl need.

       cd apache_1.3*
       ./configure

  No need to make it yet.

[7.3.3] mod_ssl
  Mod_SSL gives us a secure server (https) for Netdisco to run under.

  The OpenSSL library is a prerequirement for mod_ssl and may or may not already be on your system. If not :

  a. BSD
    Installing OpenSSL :

            cd /usr/ports/devel/mm && make install
            cd /usr/ports/security/openssl && make install

    Setup mod_ssl :

            cd /path/to/mod_ssl_1.x.x
            SSL_BASE=SYSTEM \
                ./configure \
                    --with-apache=../apache_1.3.x \
                    --disable_rule=SSL_COMPAT

  b. RedHat / Mandrake
    OpenSSL is installed by default.

    You will have to tell the OS to look for the Kerberos libraries used in this version of OpenSSL:

            ./configure \
                --with-apache=../apache_1.3.x \
                --disable_rule=SSL_COMPAT
            make C_INCLUDE_PATH=/usr/kerberos/include

    Thanks to David Martin for this info.

  c. By Hand (other OSs)
    Follow the instructions in the INSTALL that comes with `mod_ssl`

         SSL_BASE=/path/to/openssl-0.9.x \
         ./configure \
            --with-apache=../apache_1.3.x \
            --disable_rule=SSL_COMPAT

[7.3.4] mod_perl
  This step sets up mod_perl for this copy of apache :

       cd ../mod_perl-1.x
       /usr/local/bin/perl Makefile.PL \
              APACHE_SRC=../apache_1.3.x/src \
              EVERYTHING=1 \
              DO_HTTPD=1 \
              USE_APACI=1 \
              PREP_HTTPD=1

       make

[7.3.5] Apache Again
  Now we're ready to make the main apache and install all of the above (mod_ssl, mod_perl, and Apache).

       cd ../apache_1.3*
       ./configure \
              --prefix=/usr/local/apache \
              --enable-module=most \
              --enable-shared=max \
              --activate-module=src/modules/perl/libperl.a \
              --with-perl=/usr/local/bin/perl \
              --enable-module=ssl
       make
       make certificate
       make install

[7.3.6] Install mod_perl

       cd ../mod_perl*
       make install

### 7.4. Apache Configuration Files

Add the following lines in your `httpd.conf`.

Your `httpd.conf` will live in `/usr/local/apache/conf` if you installed using my method.

[7.4.1] In the Global Section
  Add this line once in the end of `httpd.conf` not in a VirtualHost section.

          Include /usr/local/netdisco/netdisco_apache.conf

[7.4.2] No virtualhosts
  If you do not have virtual hosts setup and/or you have a main server, add this line right after the first include :

          Include /usr/local/netdisco/netdisco_apache_dir.conf

[7.4.3] In each VirtualHost
  If you have Virtual Hosts or are setting up a secure server, put the following line in each of them that you want Netdisco turned on for:

  If you are not using Virtual Hosts, then add this line under the netdisco_apache.conf line.

          Include /usr/local/netdisco/netdisco_apache_dir.conf

  Make sure you have this include line for the secure server virtual host *:443 at the bottom of http.conf.

### 7.5. Mason Data Directory

Set the mason data directory writable to the apache user that does the requests.

Assuming `nobody` is the user that apache requests run this as `root` :

        chown nobody.netdisco /usr/local/netdisco/mason

The name of the user is listed in `httpd.conf` under the `User` directive.

Note: Some Linux distributions such as Redhat 6.x install mod_perl as a Dynamic Shared Object (DSO). This is known to be unstable, especially with Mason. Compile mod_perl statically using the method listed above. If you suspect yours is not compiled in, run `httpd -l` and see if `mod_perl.c` is listed (it should be).

## 8. Perl Modules and Mason

Below is a list of required modules for Netdisco, freely available from CPAN http://www.cpan.org. Many of these modules have prerequisite modules.

### 8.1. Install required Perl modules from CPAN

Use the CPAN module that comes with Perl to install the modules and their prerequisites automatically:

        perl -MCPAN -e shell

            o conf prerequisites_policy ask
            install Digest::MD5
            install Bundle::DBI
            install Apache::DBI
            install DBD::Pg
            install DB_File      (for Apache::Session)
            install Apache::Session
            install Apache::Test (for Apache::Request, you may need to do a 'force install')
            install Apache::Request
            install HTML::Entities
            install HTML::Mason
            install MasonX::Request::WithApacheSession
            install Graph
            install GraphViz     (you may need to do a 'force install')
            install Compress::Zlib (probably already have this one)

Some of these you will probably already have installed. Others you may need to force with `force install ModuleName`. Do Not include the comments in (parens)!

### 8.2. Non-Standard Perl Location

If you don't have Perl installed in `/usr/bin`, you will need to modify the first lines of netdisco and bin/doc_munge.

## 9. Netdisco Configuration

[9.1] netdisco.conf
  Modify netdisco.conf to match your site.

  See README for detailed configuration descriptions.

[9.2] netdisco_apache.conf
  Change settings on lines:

          session_user_name
          session_password
          session_cookie_domain

[9.3] netdisco.crontab
  This is where you control the frequency of data collection done by Netdisco. See section 15 of this document for details.

  Change `center_network_device` to a network device that is well connected to the main segment by CDP/FDP/SONMP.

[9.4] Add a user in Netdisco
  This is a user inside the Netdisco database that will be your Web Admin User

          /usr/local/netdisco/netdisco -u joebob

  Add more users from the web `Admin Panel` once Netdisco is up and running.

[9.5] Make Documentation (CVS Versions Only)
  This step is only necessary if you have installed from CVS.
  i. Perl Location
    Make sure that the `POD2TEXT` lines in Makefile point to where your Perl binaries are installed.

  ii. Create Docs
    You can do this step if you would like the SNMP documentation available from the web as well.

         cd /usr/local/netdisco && gmake doc

[9.6] Change Permissions on Config files
  Since the config files contain SNMP community strings and database passwords, you must make them only available to the administrators for security.

       chgrp netdisco /usr/local/netdisco/*.conf
       chmod 660 /usr/local/netdisco/*.conf

## 10. OUI Database

The Organizationally Unique Identifier (OUI) database allows Netdisco to identify the manufacture of a network card using the first 24 bits of a MAC address.

Run the following command to import the contents of oui.txt into your database.

        cd /usr/local/netdisco
        netdisco -O

### [10.1] Updating oui.txt (Optional)

The database of OUIs is needed by Netdisco and is available from the IEEE.

If you have lynx installed you can install the OUI database by:

        cd /usr/local/netdisco
        gmake oui

(gmake for BSD/Solaris)

Or do this by hand:

       1. Download oui.txt from http://standards.ieee.org/regauth/oui/
       2. Run netdisco -O

## 11. Start Apache

Now that you have everything setup, (re)start the web-server.

Check Apache's error_log for possible errors.

[11.1] HomeGrown Copies of Apache

          /usr/local/apache/bin/apachectl start

[11.2] Used the Apache installed by Mandrake

          /etc/rc.d/init.d/httpd restart

Also, double-check that Apache starts on its own at reboot.

## 12. Discover a Device in Netdisco

Pick a device that you can access with the command `snmpwalk`. Tell Netdisco to discover that device:

        cd /usr/local/netdisco
        ./netdisco -d devicename

Make sure that this step actually works. This is a good metric that you have now installed Netdisco correctly. Add the -D flag to get copious debugging info.

## 13. Create Network Topology

See README for a description of Topology Information.

If your network is CDP/FDP/SONMP aware, pick a device that you consider close to the center of the network and start an auto-discovery from there:

        cd /usr/local/netdisco
        ./netdisco -r myrouter

If your network is not CDP friendly, then see README for how to use the manual topology file netdisco-topology.txt.

You MUST supply Netdisco with a working topology or MAC addresses will show up on uplink ports instead of end ports.

## 14. Test Web Side

First restart Apache so that netdisco will see the changes that you have made in netdisco.conf. Note that a graceful restart will not re-read the configuration file. A full restart is required.

        /usr/local/apache/bin/apachectl restart

Point a browser to /netdisco on the server you have Netdisco installed on. If everything is working you should be able to login with the user name and password you added in Step 10. You should also be able to access the Admin Panel.

        http://localhost/netdisco

If you have problems, check the error_log of apache for messages.

        tail /usr/local/apache/logs/error_log

## 15. Add Cron Jobs

Once you're sure Netdisco is setup correctly, modify netdisco.crontab.

     vi netdisco.crontab

Network Discovery
  Change `center_network_device` to one of your core routers or switches.

Data Collection
  You may want to fine-tune these jobs to your network. If jobs run too frequent and overlap, nothing bad will happen, it's just higher load on your network devices and Netdisco server.

  Once Netdisco has been running for a day, look at the `BackEnd Log` in the web browser and see how long each of the jobs is taking to finish. If there is overlap, for example if your arpnip is taking over 60 minutes or your macsuck is taking over 120 minutes, then consider decreasing the frequency of these jobs as to not cause extra load on your network devices.

Now set the crontab to the `netdisco` user (as root).

        crontab -u netdisco /usr/local/netdisco/netdisco.crontab

## 16. Start Admin Daemon

The admin deaemon performs administration jobs that are requested from the web front-end. See README for a description of the admin daemon.

        /usr/local/netdisco/bin/netdisco_daemon start

The daemon will be respawned daily in the Cron job listed above. This isn't 100% necessary, I just did in case the net-snmp libraries had any memory leaks.

### 16.1 Make the Admin Daemon start at every boot

If you would like the daemon to be started upon bootup, then do the following:

Linux
  This is for Redhat/Mandrake/Fedora. Debian and Gentoo might be a little different.

          ln -s /usr/local/netdisco/bin/netdisco_daemon /etc/rc.d/init.d
          chkconfig --add netdisco_daemon
          chkconfig netdisco_daemon on

  Now you should be able to use this command:

          service netdisco_daemon {stop,start,restart,status}

FreeBSD

          ln -s /usr/local/netdisco/bin/netdisco_daemon /usr/local/etc/rc.d

Other
  Add the following line to your /etc/rc.d/rc.local file :

          /usr/local/netdisco/bin/netdisco_daemon start

# SUCCESS

Now that you have spent ten hours of your life installing this go drink a Beer, you deserve it.

Once you have or have not succeeded, come join the Netdisco User's mailing list at http://netdisco.org and pass on any hints you may have in the INSTALL process.

It's a good place to keep up on new features and releases, and it's the place to ask any questions.

## Credits and Donations

If you find Netdisco useful please consider donating to its developer. Check out http://netdisco.org for a Source Forge donation page and Amazon wish list.