|  | |  | Netmagis 2.2.x installation | 
     
    
    
         Note: this installation documentation is for Netmagis version 2.2.x
    (x >= 3) If you are installing from a previous version
    of Netmagis, you should rather read upgrade instructions.           Program and file installation     Determining which packages are needed    The netmagis is divided into packages in order to install only what
    you need:      | Package | Description |  | common | This package is mandatory for all
		installations. It includes common library file and
		configuration file example. |  | database | Database server (maintenance and
		installation scripts, as well as scripts to upgrade
		database from previous versions). |  | www | Web application (CGI scripts, HTML
		templates, Apache configuration files, etc.). |  | servers | Scripts running on various servers (DNS,
		DHCP, mail router). |  | utils | Scripts to ease batch modifications of
		hosts in the database. |  | detecteq | Set of files or programs to detect
		configuration modifications on network equipments.
		This package must be installed on your central syslog
		server (for Cisco and Juniper equipments) and your
		central Freeradius server (for HP equipments).
		This package is needed if you plan to run the
		topo package. |  | topo | Backend used to fetch configuration data
		from network equipments, modelize topology in a graph,
		and optionnaly inject new ports configuration to
		equipements. In order to run properly, this package needs to know
		when a modification of configuration is done on any
		network equipment. This is the role of the detecteq package.
 |  | metro | Backend used to poll equipments for
		metrology information. | 
     Packages are designed such as they may be installed on one unique
    server as well as each on its dedicated server, depending on
    your security requirements, performance considerations or site
    specificities.      
	a large site may wish to separate all components:
	    
		the www package is installed on a
		    central web hosting platform
		the database package is installed on
		    a central database cluster
		the servers package is installed on
		    the existing DNS and DHCP server, as well as on mail
		    relay cluster
		the detecteq package is installed on
		    both the central syslog server and the central
		    Radius server
		the topo package is installed on a
		    dedicated virtual server, for security reasons
		    (access to the network equipements via the
		    administration VLAN)
		the metro package is installed on a
		    dedicated physical server for performance and
		    security reasons
		on the opposite, a small site may wish to run all
	    packages on a unique virtual server.
	     The www and the topo packages must be
    installed on the same architecture (CPU and OS), even if the servers
    are physically distinct.      Installing from FreeBSD ports    At this time, the supported way to install Netmagis is via
    FreeBSD ports, which are provided in a separate archive (file netmagis-freebsd-ports-*.tar.gz associated
    with appropriate netmagis version).     Once the file is downloaded on a fairly recent FreeBSD system
    (minimum FreeBSD 8.3-RELEASE with up-to-date ports),
    use:      
	# tar xzvf netmagis-freebsd-ports-2.2.0.tgz -C /usr/ports/net-mgmt/
         In order to install a netmagis package, just enter the
    following commands (just as well as any other port):      
    	# cd /usr/ports/net-mgmt/netmagis-database # make install
     The provided ports automatically install required dependencies.      Installing from Debian/Ubuntu packages    Linux packages are provided for installing on:
     
	Ubuntu (minimum distribution is 11.10, Oneiric Ocelot)Debian (minimum distribution is wheezy - stable)     Append the following lines to your /etc/apt/sources.list:      
	deb http://netmagis.org/files/repo stable main deb-src http://netmagis.org/files/repo stable main
     If you are using an Ubuntu distribution, check that the "universe" section is enabled in /etc/apt/sources.list.     Now, update your package database:      
	# apt-get update
         The next step depends upon your architecture:      
	If your system is based on an i386 or amd64
	    architecture (i386 or x86_64 in "uname -i"
	    output), you can install from binary packages (example for
	    the database package):	     
		# apt-get install netmagis-database
	     	    Since packages are not signed, you must manually answer
	    "Yes" to the question "Install these packages without
	    verification?". 	If your system is based on another architecture, you need
	    to rebuild from source package:	     
		# apt-get install dpkg-dev # apt-get build-dep netmagis
 # apt-get source --build netmagis
 	    Once the packages are built, install them with gdebi (example for the database package and
	    the pdp11 architecture): 	     
		# apt-get install gdebi # gdebi netmagis-database_2.2-1_pdp11.deb
      Installing from Netmagis source distribution     
    Download the Netmagis distribution file and unpack the archive:	 
	    $ tar xzvf netmagis-2.2.0.tar.gz
	 	Alternatively, if you are adventurous, you may also fetch the
	current Netmagis sources directly from the gitlab repository. Provided that git is
	installed on your system, use this command: 	 
	    $ git clone git@gitlab.com:netmagis/netmagis.git
	Install required dependencies.
	Please note that Tcl is a required dependency for all packages.	 
	    Linux (Ubuntu/Debian) note:
		
		# common and database aptitude -y install make git \
 postgresql-9.1 postgresql-pltcl-9.1 libpgtcl1.5  \
 tcl8.5 tcl8.5-dev tcllib pwgen
 		# www aptitude -y install
 apache2 libaprutil1-dbd-pgsql \
 netpbm texlive-latex-base graphviz transfig
 		# topo aptitude -y install \
 gcc fping rancid default-mta
 		# metro aptitude -y install \
 libsnmp-session-perl libsnmp-perl libnet-snmp-perl librrdtool-oo-perl \
 libdbd-pg-perl rrdtool
 		# ldap authentication aptitude -y install openldap-utils slapd
Linux (CentOS) note:		If you are installing for a CentOS distribution,
		you need to install the Epel repository
		or to download each package not in CentOS
		repository (such as pwgen, tcllib, etc.) from http://dl.fedoraproject.org/pub/epel/6. 		Then, you can use yum to install dependancies:
		 
		# common and database yum install tcl tcllib pwgen tcl-devel \
 tcl-pgtcl postgresql-server gcc \
 make postgresql-pltcl
 
 		# www yum install httpd apr-util-pgsql mod_ssl
 		# topo yum install rancid fping
 		# metro yum install rrdtool-perl net-snmp-libs net-snmp-perl \
 perl-Net-SNMP net-snmp-libs perl-Digest-HMAC \
 perl-IO-Socket-INET6 perl-Crypt-DES \
 perl-Net-SNMP perl-DBD-Pg
 		Then, change the top-level Makefile to suit your environnement:
		 
		TCLSH = /usr/bin/tclsh TCLCONF = /usr/lib64/tcl8.5/tclConfig.sh
 
Choose an installation directory. You may use /local/netmagis/ for example. Netmagis's Makefile will install a
	hierarchy such as:	 | .../etc/ | various configuration files |  | .../bin/ | programs which should be called as an ordinary
		    user |  | .../sbin/ | programs which should be called as the root
		    user |  | .../lib/ | libraries, messages, and programs which are
		    not meant to be called by humans |  | .../share/ | examples, default configuration files,
		    database upgrade scripts, etc. NB: on
		    Debian/Ubuntu, examples files are in
		    /usr/share/doc/netmagis/examples/ |  | .../var/ | files generated by topo or
		    metro packages |  | .../www/ | Web application (installed by www package) | 
     Modify the top-level Makefile variables to suit your choices:
	| DESTDIR | Installation directory |  | TCLSH | Full path name of tclsh interpreter |  | TCLCONF | Tcl configuration script
		    (example: /usr/lib/tcl8.5/tclConfig.sh on Linux or /usr/local/lib/tcl8.5/tclConfig.sh on FreeBSD) | 
     Install the package:
	
	    # make install-common
	Install the desired package(s). For example, if you want to
	install the database, www and the
	utils
	packages, type:
	
	    # make install-database # make install-www
 # make install-utils
     That's it! You may now proceed to initial configuration.           Initial PostgreSQL configuration    On the host where you installed the database package,
    you should have a PostgreSQL server. The recommanded version is at
    least 9.1.     You have to check that your PostgreSQL installation allow connections
    (and authenticate users with password) from hosts which act as
    clients of the Netmagis database (all hosts where you installed
    a netmagis package). This is usually configured in file pg_hba.conf which is located in:
     | FreeBSD | ˜pgsql/data/pg_hba.conf
		(where pgsql is the name of the PostgreSQL
		administror) |  | Linux (Debian/Ubuntu) | /etc/postgresql/9.1/main/pg_hba.conf | 
     Netmagis relies on password authentication, even if the database is
    on localhost, so the "ident" method won't work. You should change
    the configuration in pg_hba.conf to look like this :
         
		host    all             all             127.0.0.1/32            md5host    all             all             ::1/128                 md5
     Netmagis uses only one PostgreSQL user, without special privilege
    (except database creation privilege).
    You must create it (as the PostgreSQL administor user: pgsql on FreeBSD, postgres on Linux) with the
    PostgreSQL createuser program:      createuser --no-superuser --no-createrole --createdb --pwprompt nm     Even if you want to use a different database for the mac package, you can use the same user.           The Netmagis configuration file    The Netmagis configuration file is located in .../etc/netmagis.conf on each host where Netmagis is installed.
    The common package does not install this file (in order
    to leave your file intact if you previousely installed Netmagis), but
    it installs a copy in .../etc/netmagis.conf.sample. Copy
    it manually to .../etc/netmagis.conf, and edit it.     The following table list only directives you would want to modify
    for a fresh installation.      
    | Directive | Description |  | dnsdb... | Information needed to connect to the
		PostgreSQL server, with an unprivileged user (see below). |  | macdb... | Information needed to connect to the
		PostgreSQL server for the mac package,
		with an unprivileged user. If you don't want to use
		a separate database, or if you don't want to use the
		mac package, use exactly the same values
		as for the the dnsdb... parameters. |  | ouiurl | URL to the IEEE OUI database (a default
		value is provided in the sample configuration file). This
		is necessary to populate the mac.oui table with Ethernet
		vendor prefixes when the mac database is created. |  | whoami | Command used to get login name of the user
		who is running the current program. It should display
		exclusively the login name. Default value is suitable
		for FreeBSD and Ubuntu. |  | rootusers | Login names of Netmagis users allowed to
		access the
		application even when it is in "maintenance mode". | 
     Use the script netmagis-config (check your PATH) to
    test that Netmagis understands your modifications. The command:
     $ netmagis-config dnsdbhostshould display a string such as: dnsdbhost="myhost.example.com"     You can now proceed to database installation.           Database installation    PostgreSQL server should be initialized as described
    above. Netmagis should then be installed by providing
    .../etc/netmagis.conf directives:      
    | Directive | Description |  | dbcopy | Name of a copy of the Netmagis database,
		generated every night (see the netmagis-dbmaint
		program in the database package). This copy
		lets you experiment and work on data without fear. If this directive is empty, the maintenance command
		will not create a copy of the database.
 |  | pwgen | Command line to generate a random password |  | crypt | Command line to encrypt a password,
		compatible with the mod_auth_pgsql Apache module | 
      
    
	If you are upgrading from a previous WebDNS or Netmagis installation,
	please see the upgrade instructions.
    
	If you are installing Netmagis for the first time, after you
	configured the netmagis.conf file, run the command
	$ .../sbin/netmagis-dbcreateThis command: 
	    Users are created in the Netmagis database, including the
	internal authentication schema.creates the Netmagis database (it fails if the database
		is already created)creates the MAC database if it is different from the
		main Netmagis database (it fails if the database
		is already created)creates the SQL schemas, tables, functions and triggersprovides default values for Netmagis directivescreates Netmagis users listed in rootusers
		directive (in .../etc/netmagis.conf file)
	    creates a Netmagis user called nobodyassigns all Netmagis users a random password, and
		displays them on standard output 
	    if you use an LDAP authentication, rootusers
		users should exist in your LDAP directory.if you plan to use the internal authentication database,
		note the generated passwords as they will be needed in the
		Web application installationUnless you are upgrading from previous versions, you should
	import your data into the database. Doing so is described in
	the section below.	Since this is a long task, if you want to test your installation,
	you may try to import example data.  You may do so by issuing
	the command to load the multi-views example (you can load the
	no-view example instead):
	 $ cd .../share/examples/netmagis/with-views $ sh ./run-all.sh
 	You can later destroy and re-create the database with your
	own data.
    Install the sample crontab (.../share/examples/netmagis/crontab.database) in your default
	cron system. This crontab can be run by any unprivileged user.	FreeBSD users: if you install this crontab in the global /etc/crontab, please provide a user name just before the
	command name. 	The .../sbin/netmagis-dbmaint command performs some
	maintenance tasks:
	 
	    make a hourly backup of database in the directory
		named in the dumpdir directive from
		.../etc/netmagis.conf
	    copy the current database in a copy named after the
		dbcopy directive
	    performs a PostgreSQL vacuum operationremove some old entries in Netmagis internal spools     Netmagis database is now installed. You may now install the
    www package.           Web application installation    To store user accounts, the Web application can use either an existing
    external LDAP directory or the internal PostgreSQL database.      
    | netmagis.conf directives |  | Directive | Description |  | passwdurl | URL which should be displayed to let users
		change their password, if you use an external LDAP
		authentication. Leave empty if you use internal
		PostgreSQL authentication. |  | hostcmd | Path to the host command |  | pwgen | Command line to generate a random password
		(not used for LDAP authentication) |  | crypt | Command line to encrypt a password
		(not used for LDAP authentication) | 
      
    A default Apache configuration file is provided in
	..../share/examples/netmagis/httpd.conf.  Adapt this
	file (notably for your authentication choice) and include it in
	your Apache configuration.
    Direct now your Web browser to the http://yourhost/netmagis/index, and connect with your login name.
	If you use the internal Netmagis PostgreSQL authentication,
	use the password generated by the netmagis-dbcreate
	command, during the database creation phase.	You should see a main menu such as this one.
    If you are using LDAP or CAS authentication, go into the
	Admin menu (on the left vertical bar), then to the Application parameters menu.	In the "LDAP authentication parameters" section,
	adapt values to your LDAP directory. Then select the LDAP item in the Authentication method menu
	(in the "General parameters" section). Then, click on
	the Submit button to register your new configuration. 	Select any item in the left menu to check that your authentication
	parameters are correctly configured.
    If you are using internal (PostgreSQL based) Netmagis
	authentication, change your password (unless you want to keep
	the generated one).	Change also your name (as well as other account informations)
	with the Admin / Internal Auth / Modify
	account menu.
         Congratulations! The Web application is now installed.           Import your existing data    Your next task is to feed your database with referential data (users, groups, networks, etc.) as well as your existing
    DNS zones if any.           Configuring Netmagis    Documentation about common tasks in Netmagis configuration is provided
    in a separate page.           Utils package installation    The utils package is optional: it contains commands
    to add, delete or modify individual hosts, as well as DNS zone
    prologues. These commands are designed to be used wth the Unix shell.     Installation is very simple: only common netmagis.conf
    directives to connect to the database are needed.     Notice, however, that this file (including password to connect to
    the database) must be readable to all users of these scripts. This
    may be a security risk if you make this file readable for all users,
    but you can also control access to the configuration file and to
    the scripts based on a group policy.     The provided commands are:
     
    dnsaddhost fqdn addr view: adds the
	specified host with the IPv4 or IPv6 address
    dnsaddalias fqdn-alias fqdn-host view:
	adds the specified alias to an existing host.
    dnsdelhost fqdn view: deletes the
	specified host
    dnsdelip addr view: deletes an IP address.
	If this is the last, deletes the host.
    dnsmodattr fqdn view key val key val ...:
	modify an existing host. Possibles keys are:
	
	    mac: value is the MAC address
	    hinfo: value is the exact name of the
		the machine type, as listed
		in the Modify machine types administrator menu.
		or in the
		dns.hinfo SQL table	    respname: name of user responsible for
		this host
	    respmail: mail address of user responsible
		for this host
	    comment: comment associated to this
		host
	    dhcpprofile: value is the exact name of
		the DHCP profile, as listed
		in the Modify DHCP profiles administrator menu.
		or in the
		dns.dhcpprofile SQL table
	    ttl: value is the specific TTL value for
		this host, in seconds, or empty string to remove the
		specific value
	    sendsmtp: value is 0 to remove the right
		to emit mail with unauthenticated SMTP, or 1 to add the
		right.
	    dnsreadprol zone view: displays on
	standard output the DNS zone prologue specified by its domain
	name.
    dnswriteprol zone view file: use the named
	file as the zone prologue. Since this operation may have a great
	impact, manual confirmation is required.
         With all these commands, you have to provide a view name. If you don't
    use multiple views, just use the name "default".     Note that users using this script must have a Netmagis account
    with the same login as the Unix one.           Servers package installation    The servers package must be installed on your main BIND
    server, on your DHCP server, and on your mail router, depending on
    the features you want.      On all servers    On all servers, you will have to configure .../etc/netmagis.conf with the following directive: 	 | netmagis.conf directives |  | Directive | Description |  | diff | Command line used to signal differences
		    between two versions of a server file (DNS zones,
		    DHCP files, etc.). | 
      BIND server    On your main BIND server, provide values for the
	following directives: 	 | netmagis.conf directives |  | Directive | Description |  | zonedir | Directory where your DNS zone files are
		    read by your DNS daemon |  | zonecmd | Command used to make your DNS daemon reload
		    the generated zone files. The default command is for
		    BIND 9.x. 		    Please note that if this command fails, zone
		    generation is aborted and old zone files are restored. 		    If you have configured a cluster of name servers,
		    you can use this directive to propagate inforamtion
		    to other nodes.
		 | 
     Once you configured .../etc/netmagis.conf file, run
    (as the user who have access to the zonedir directory
    and to the zonecmd command):
     $ .../sbin/mkzone -n -vThis command tests zone generation, without performing any file
    modification.     You can force generation of some zones by using the Admin
    / Force zone generation. This sets a flag in the dns.zone SQL table, which is read by the mkzone to
    find modified zones.     Test now a real zone generation by using:
     $ .../sbin/mkzone -v     Each zone file will be named after the "Name" column in zone edition.     If you are using multiple views on different DNS servers, you
    can use the -w view option to limit zone
    generation to a single view. By default, the mkzone
    program generates zone files for all views.     If everything is ok, you can use the sample .../share/examples/netmagis/crontab.bind to install the periodic
    zone generation for the user.     An usual convention about the SOA serial number is to use a
    number of the form "yyyymmddnn" where yyyymmdd is the current date and nn is a sequence
    number for this date. Netmagis uses this convention when possible,
    but if there is more than 100 modifications in a day, it will
    simply increment the value. Our algorithm will automagically
    synchronizes again with the convention when possible.
    This way, you can run the mkzone script every minute
    without fear.     FreeBSD users: if you install this crontab in the global /etc/crontab, please provide a user name just before the command
    name.      ISC DHCP Server    Netmagis is designed to aliment a central ISC DHCP server.  If you want to use this
    functionnality on other networks, you need to activate DHCP relay
    in your router configurations.     The Netmagis can also handle failover configuration in order
    to provide a redundant DHCP service based on 2 ISC DHCP servers.     On your DHCP server, provide values for the following
    directives: 	 | netmagis.conf directives |  | Directive | Description |  | dhcpfile | Location of generated file for ISC dhcpd
		    daemon. This file should be included by your main
		    dhcpd.conf file (see you ISC dhcpd
		    configuration), with a line such as: include "/etc/dhcp-gen.conf" 		    Note: if you don't plan to use DHCP generation,
		    don't panic! This directive (and the next ones) will
		    not be used.
		 |  | dhcpfailover | Line to add to generated pools if you use
		    ISC DHCP failover feature (DHCP redundancy over 2
		    servers). Leave empty if you don't use this feature. |  | dhcptest | Command used to check DHCP configuration
		    file before restarting ISC dhcpd daemon. This is needed
		    since Netmagis administrators may add faulty DHCP
		    profiles, and ISC dhcpd daemon is not very tolerant to
		    configuration errors. Please note that this command
		    contains the location of your main teletype dhcpd.conf
		    file. |  | dhcpcmd | Command used to make your ISC dhpcd daemon
		    reload the configuration. | 
     Once you configured .../etc/netmagis.conf file, run
    as root:
     $ .../sbin/mkdhcp -n -vThis command tests DHCP file generation, without performing any
    file modification.     Test now a real DHCP file generation by using:
     $ .../sbin/mkdhcp -v     If you are using multiple views, you need to supply a specific view
    for which you are generating a DHCP file, with the -w
    option:
     $ .../sbin/mkdhcp -v -w internalBy default, the mkdhcp program generates a DHCP file
    for all views, which is certainly not what you want if you are using
    multiple views.     If everything is ok, you can use the sample .../share/examples/netmagis/crontab.dhcp to install the periodic
    DHCP file generation. You should run the DHCP file generation
    soon after the DNS zone generation (such that new host names
    are not generated in DHCP file before they are known in the DNS).     FreeBSD users: if you install this crontab in the global /etc/crontab, please provide a user name just before the
    command name.      Mail relay cluster    Netmagis can be used to generate mail routes for you central
    mail router. Routes are generated following "mail roles", whose
    modifications are enabled individually for each allowed domain in
    the Admin / Modify users and groups menu. 	 | netmagis.conf directives |  | Directive | Description |  | mroutefile | File read by sendmail (or Postfix)
		    to get mail routing information. The default line format
		    (see "mroutefmt" directive) ressembles: specific.domain.com
		    smtp.[host.domain.com]which means that mail addressed to
		    someone@specific.domain.com is to be sent to host
		    host.domain.com. 		    Note: if you don't plan to use mail route generation,
		    don't panic! This directive (and the next ones) will
		    not be used.
		 |  | mrouteprologue | Prologue of the generated mail route file.
		    This prologue allows you to mention specific mail route
		    information which cannot be extracted from the database. |  | mroutefmt | Format of mail route entries: %1$s is the
		    mail address and %2$s is the host accepting mails for
		    this address. |  | mroutecmd | Command used to make your Sendmail daemon
		    reload the generated route file. 		    If your mail router is a cluster of hosts, this
		    command will have to propagate the file and restart
		    the daemon on other nodes.
		 | 
     Once you configured .../etc/netmagis.conf file, run
    as root:
     $ .../sbin/mkmroute -n -vThis command tests mail routes file generation, without performing
    any file modification.     Test now a real file generation by using:
     $ .../sbin/mkmroute -v     If you are using multiple views, you need to supply a specific view
    for which you are generating mail routes, with the -w
    option:
     $ .../sbin/mkmroute -v -w internalBy default, the mkmroute program generates a routes
    for all views, which is certainly not what you want if you are
    using multiple views. For example, if you have a mail role sales.example.com (in view external) which points to a mailbox
    host named server.example.com (in view internal), chances are that
    your mail router "sees" the "internal" view (otherwise, it could
    not route mail to server.example.com). Thus, you have
    to specify: $ .../sbin/mkmroute -v -w internal     If everything is ok, you can use the sample .../share/examples/netmagis/crontab.mroute to install the
    periodic file generation.     FreeBSD users: if you install this crontab in the global /etc/crontab, please provide a user name just before the
    command name.      Authenticated SMTP filtering    If you use authenticated SMTP, you know than some hosts (copiers,
    embedded measurement machines, etc.) may not be able to use
    authenticated SMTP. Some exceptions must be done.     Netmagis helps you handle these exceptions, by providing a special
    flag to each host.  Right to activate this flag is enabled for each
    group in the Admin / Modify users and groups menu.     To activate this functionnality, some prerequisites are needed
    on your mail infrastructure:
     
	Authenticated SMTP message submission is enabled on
	    TCP port 587
	Unauthenticated SMTP access is enabled on TCP port
	    25
	All your routers restrict use of port 25, such as
	    internal hosts can only open connections to mail
	    submission hosts
	Your mail submissions hosts accept connections on
	    port 25 only from authorized hosts. A configuration file for a *BSD PF (packet filter)
	    is provided as an example in
	    .../share/examples/netmagis/pf.conf.sample.
	    You will notice that the smtpf table is read
	    from a file, generated by Netmagis.
     With this infrastructure, provide values for the following
    directives on your mail submission hosts:      | netmagis.conf directives |  | Directive | Description |  | pffile | File where the PF packet filter (on *BSD
		hosts) expects to find the contents of the table giving
		IP addresses of hosts allowed to use unauthenticated
		SMTP, i.e. hosts allowed to connect to TCP port 25. 		Note: if you don't plan to use Netmagis to control
		which hosts have access to unauthenticated SMTP, don't
		panic! This directive (and the next ones) will not
		be used.
	     |  | pffmt | Format of generated file (containing
		the smtpf table) included in pffile |  | pfprologue | Lines to prepend, if any, to the
		generated file. May be set to /dev/null |  | pftest | Command used to check the generated file |  | pfcmd | Command used to reload the generated pf table | 
     Once you configured .../etc/netmagis.conf file, run
    as root:
     $ .../sbin/mksmtpf -n -vThis command tests filter file generation, without performing
    any file modification.     Test now a real file generation by using:
     $ .../sbin/mksmtpf -v     As with mkmroute, you can use the -w view option to specify a particular view.     If everything is ok, you can use the sample .../share/examples/netmagis/crontab.smtpf to install the
    periodic file generation.     FreeBSD users: if you install this crontab in the global /etc/crontab, please provide a user name just before the
    command name.     Congratulations! You have installed the servers package.
    The Netmagis is ready to be used, for its core functionnality.           Detecteq package installation    The topo package needs to know when the configuration
    of a network equipment has been changed. These changes are detected
    via:
     
	syslog for Cisco and Juniper equipmentsradius accounting for HP equipements. In this
	    case, since HP equipments are unable to report configuration
	    changes via Syslog, the hack is based on Radius accounting
	    which detects user logout (which do not strictly imply a
	    configuration change).
	     Thus, the detecteq package must be installed on your
    central syslog (syslog, syslog-ng, etc.) server and/or your central
    radius server, depending on your equipments. Since modification
    events are sent to the database, the detecteq package
    does not need to be installed on the same server as the topo server.      Network equipment configuration    In order to automate configuration fetching from a central server,
    a unique user should be defined on every network equipment. Let us
    call it conf. This user should have the right to execute the
    show configuration commmand (or similar), which means
    it must have the "admin" privilege.     Moreover, at least on HP equipments, there should be another distinct
    user (let us call it modconf) which should be able to modify
    the configuration in order to change interface characteristics. This
    second user is needed for Radius to distinguish regular configuration
    fetching from configuration modification.      Syslog configuration     
	On Cisco and Juniper equipments, you need to configure a
	    syslog server if not already done. For example:	     | Equipment | Example |  | Juniper | system { syslog {
 host syslog-server.example.com {
 any notice;
 facility-override local2;
 }
 }
 }
 |  | Cisco | logging syslog-server.example.com logging facility local2
 | 
Configure .../etc/netmagis.conf for access to
	    the Netmagis database
	Update your syslog configuration file and use a line
	    such as:
	    local2.*  |exec /usr/local/sbin/detectconfmod 	    Adapt this line to your syslog facility and the detecteq installation path.  You can also use other
	    syslog daemons such as syslog-ng if they provide the "pipe
	    to program" functionnality. 	    Note: on Linux (Debian/Ubuntu), the default syslog program
	    (rsyslogd) does not support the "pipe to program"
	    functionnality. An alternative is to install the syslog-ng package and configure it with lines such as:
	     
		source remote { udp(port(514));
 }
 		filter myequip { netmask ("10.20.30.0/24");
 };
 		destination mylogs { file ("/var/log/myeq.log");
 };
 		destination detectconfmod { program ("/usr/local/sbin/detectconfmod");
 };
 		log { source(remote);
 filter(myequip);
 destination(detectconfmod);
 destination(mylogs);
 flags(final);
 }
Be sure to keep hostnames in generated logs. You should
	    get lines such as (example on a Cisco switch):
 Dec 23 11:52:26 adm-sw
		%SYS-5-CONFIG_I:
		Configured from console by joe on vty0 (192.168.1.1)      Freeradius configuration               Topo package installation    One of the most innovative parts of Netmagis is the topo
    package, which provides a complete infrastructure to fetch and analyze
    network equipments configuration files and modelize the network as
    a graph. This allows for automatic generation of network L2 and L3
    maps, equipment port configuration, as well as interactions with
    the metrology package.     At this time, Juniper, Cisco and HP equipments (switches and routers)
    are supported.      Relations between topo and www packages    You have the choice to run the topo and www
    packages on the same host or on distinct hosts.     For security reasons, one would often use a separate server to run
    the topo package. This server should be located within
    the administration VLAN of equipments, if you have one.     The interface between the topo package and the rest of
    Netmagis is:
     
	the ability to send mail from the topo
	    server	the ability for the www package to access
	    data extracted from the network graph built on the topo server: the topo server pushes (via a
	    SSH connection) the file containing the built graph, and
	    the www server runs extract commands on demand.	    This means that the topo package must also be
	    installed on the www server to provide these
	    commands. 	    This also means that the architecture of the two servers must
	    be compatible (CPU and OS) since the graph is a binary file.
	     The rest of this section describes the topo package
    installation.      On the topo server    The first part is the configuration of the topo server.      
	The first step of installation is to configure the rancid software (prerequisite of the topo
	    package) on the topo server.	    Detailed information can be found in the README coming with
	    the rancid package. However, here are the minimal steps to
	    a quick configuration: 	     	    Notice: this is not related to Netmagis installation, but you
	    should consider installing a Web interface to CVS (CVSWeb)
	    to ease tracking of your equipement configuration history.
	The topo package must know which equipments
	    are on each side of a network link. Therefore, you have to
	    add information in equipment configurations: a link name (or
	    number) prefixed with L, bracketed with "<" and ">",
	    and added to the description of the interface on each side
	    of the link:	     | Equipment | Example |  | Juniper | ge-0/1/0 { description "blah blah <L233>;
 }
 |  | Cisco | interface GigabitEthernet0/1 description blah blah <L233>
 |  | HP | interface A1 name "blah blah <L233>"
 | 
 	    You are advised to use the Web application (Topo
	    / Link number menu item) to get and register link
	    numbers. This way, you keep track of used link numbers,
	    and link numbers are ensured to be unique. 	    Ports connected to individual hosts must be marked with a
	    "<X>" to indicate a terminal node in the graph. 	    A complete description of the topo configuration
	    is available on a separate page.
	Configure .../etc/netmagis.conf on the
	    topo server:	     | netmagis.conf directives |  | Directive | Description |  | rancidcmd | Path to the rancid-run command |  | ranciddir | Rancid group directory (usually
			$BASEDIR/group-name/)
			where are located: 
			    the router.db file which
				lists all polled equipments
			    the configs/ directory
				which contains all configurations
				fetched by rancid
			     |  | sendcisco, sendhp, sendjuniper | Commands used to propagate new
			port configuration on an equipment, if you choose
			to enable the functionnality of letting users
			modify interface configuration. |  | fpingcmd | Command used to launch fping, in order to test equipment before
			sending commands to change port configuration |  | logger | Command used to send a message to
			syslog |  | eqvirtdir | Directory used for "virtual
			equipments". Each file is a specially crafted
			configuration which represent one equipment
			whose configuration cannot be fetched by rancid |  | eqgendir | Directory used to store results
			of analysis of rancid fetched configurations |  | topobindir | Directory where all topo programs are searched |  | topograph | Path name of the graph built
			during topo analysis |  | topocpgraph | Parameters (user@host:remote-path)
			used to copy the graph built during topo analysis to the www
			server. Leave empty if the topo
			and www servers are the same host. | 
 	Change the ownership to the rancid user:
	    # chown -R rancid .../var/netmagisAs the rancid user, run the following command:
	    $ .../lib/netmagis/topo/anaconf 	    You will undoubtly notice a large number of warning that
	    you will correct with time. If no fatal error has been
	    encountered, you will normally find in .../var/netmagis/network.graph the modelization of your
	    network. This is a binary file. 	    To check that things are ok, you can use the commands (which
	    all take the binary graph as standard input):
	     
		dump the graph in clear text:
		    .../lib/netmagis/topo/dumpgraph -a
			< .../var/netmagis/network.graphdisplay all interfaces characteristics of an
		    equipment:
		    .../lib/netmagis/topo/extracteq -a
			equipment
			< .../var/netmagis/network.graphBe sure that the detecteq package is properly
	    installed on your central syslog server and/or your central
	    radius server.
	Run the topographd and the toposendd daemons via the provided startup scripts:	     | FreeBSD | /usr/local/etc/rc.d/topographd /usr/local/etc/rc.d/toposendd
 |  | Linux | copy or link XXXXXXXXXXX
			.../etc/rc.d/topographd.sh and
			.../etc/rc.d/toposend.sh
		    to /etc/init.d directory | 
If you have choosen to install the topo
	    and www packages on different servers, you have
	    to configure the SSH connection from the rancid user
	    on the topo server to a user on the www server.	    This SSH connection is used to copy the network graph computed
	    by the rancid user on the topo server
	    to the www server.  The destination user on
	    the www server will own the copied graph, which
	    must be readable by the CGI scripts running under the Apache
	    user. This destination user may be, for example, the Apache
	    user (called www, www-data, nobody, etc., see the "User" directive in Apache configuration files). Let us
	    call it the w user.  Make sure this w user
	    (on the www server) has a home directory and a
	    valid shell. 	    Then, as the rancid user on the topo
	    server, create a SSH keypair (without pass-phrase):
	     ssh-keygenCopy the public key (˜rancid/.ssh/id_rsa.pub) to the ˜w/.ssh/authorized_keys on the www server. 	    Make sure that the topocpgraph configuration
	    parameter is initialized with a line such as:
	     topocpgraph w@www.example.com:.../var/netmagis/network.graphWarning: the path supplied here is the path of the graph
	    on the server, which should match the topograph directive on the www server.If you have choosen to install the topo
	    and www packages on the same server, make sure
	    that the topocpgraph directive is empty.
	      On the www server    You need now to come back to the server which hosts the Web
    application.      
	If you have choosen distinct www and topo servers, you must first install the topo
	    package (on the www server) in order to use
	    programs which extract data from the network graph. Then,
	    you have to configure the following directives in .../etc/netmagis.conf on the www server:	     | netmagis.conf directives |  | Directive | Description |  | topobindir | Directory where all topo programs are searched (on the www server) |  | topograph | Path name of the graph copied
			onto the www server. | 
 	Direct your web browser to the Netmagis application,
	    and go to the Admin / Application parameters
	    menu. In this menu:
	    
		After activation of the topo package, you will
	    see a new Topology entry in the left menu.activate the topo packagechange the "Default domain" value: the
		    domain name of your network equipmentschange the "Topo mail sender" value: you may
		    use an invalid address such as automatic mails
		    generated by the topo server don't
		    receive replies.change the "Topo mail receiver" value:
		    topo mails will be sent to this address rather
		    than to the genuine rancid-groupname alias you've previousely defined.
		Make sure that all your network equipments (and the
	    default domain) exist as hosts (and domain) in the Netmagis
	    database.
	Input your network equipments (as fully qualified domain
	    names) and your VLANs via the Admin / Modify
	    equipments and Modify Vlans menus.
	You can monitor the topographd and toposendd daemons with the Admin / Topod
	    status menu.
	If you want users to be able to modify interface
	    configuration within the Web application, enter the Admin / Modify users and groups menu, and input
	    regular expressions in the Permissions on network
	    equipments section.
	      Configuring Topo    The Topo configuration documentation
    has all information to complete the Topo configuration.     Congratulations! You've configured the topo package.
    You can now consult your equipments, your network maps, and even
    modify interfaces of your equipments if you enabled this feature!           Metro package installation    The Metro package provides metrology data collection on equipments.
    Data collected include:
     
	trafficip<->mac associations (ARP tables)port<->mac associations (Forwarding tables)     At this time, all kinds of equipments are supported for traffic and
    ip/mac collection, provided they run a standard SNMP MIB-2 agent.
    For port/mac collection, Cisco, Juniper and HP equipements are
    supported.     The metro application is made up of two main programs:
     
	metrocreatedb which creates metrology sensors
	    based on the metrology collection points defined in the
	    Netmagis database, resulting from equipement configuration
	    fetching by the topo package.
	metropoller which performs data collection
	    for each sensor
	     The first part of this section describes the configuration of the
    metro package.      
	Configure .../etc/netmagis.conf on the
	    metro server:	     | netmagis.conf directives |  | Directive | Description |  | metrodatadir | Main data directory, where
			reporting, logs and rrdtool databases
			are stored (in sub-directories) |  | rrdtool | Pathname to the rrdtool command |  | rrddb | Directory where rrdtool databases
			are stored. Reserve enough disk space for this
			directory.  It is usually a sub-directory of
			metrodatadir but it can be a separate
			directory if you need more disk space. 			FIXME: remove and keep only metrodatadir
		     |  | sensorsurvival | Grace period (in days) before
			sensor removal.  This is needed when a sensor
			is no longer updated by topo (this
			can be caused by a volontary removal or a bad
			configuration of the equipment). So for safety
			reasons, the polling is really stopped on this
			sensor only after this grace period. |  | pollergroups | FIXME: provide description of directive first,
			and explanation after. 			Sensors sharing the same characteristics can be
			put in the same group:
			 
			    We recommand to start with the grouping provided
			in the default configuration and refine the
			configuration afterwards.the running time is short, so
				running them in the same group allows
				a high level of parallelization ; for
				example, the traffic collection sensors
				are usually put in the same group
			    the sensors are specialized and
				the SNMP collection takes more time
			     			You must declare all your groups with the
			directive "pollergroups".  Names of the different
			groups are separated by a ",". 			FIXME: groups should be separated by a space
			instead of a comma
		     |  | gpopt_<pollergroupname> | The gpopt_* directives define
			which sensor types are associated with each
			group defined with the directive "pollergroups". 
			    If no sensor type is specified,
				all sensor types will be executed by
				the poller group.
			    If you want that a poller
				group collects only some of sensor types,
				write the list of type names separated
				by a "," to the "gpopt_GROUP" directive.
				Example: gpopt_GP2 ipmac,portmac.cisco
If you want that a poller group
				collects all sensor types except "ipmac"
				and "portmac.cisco", write a "!" before
				each type name of sensor separated by a
				"," to the "gpopt_GROUP" directive.
				Example: gpopt_GP1 !ipmac,!portmac.cisco
 |  | gpnbproc_<pollergroupname> | Set the number of processes
			launched simultaneously for each poller group. The
			data collection task is shared between the
			different processes which run in parallel.
			You can raise the number of processes to reduce
			the total execution time for all sensors. |  | ifspeed_<ifaceprefixname> | Set the speed (in Mbit/s)
			associated to the prefix name of an interface
			type. This configuration is useful to tune the
			maximum values of rrd databases when the SNMP
			ifspeed values collected on the interfaces are
			not reliable. For example: ifspeed_Dot11Radio 300
 will limit the maximum speed for all interfaces
			called "Dot11Radio..."	(cisco Aironet radio
			interface) to 300 Mb/s.
 |  | pollerlogfacility | Set the syslog facility for
			data collectors. Modify your syslog configuration accordingly. Example for syslog-ng: filter f_local0 { facility(local0); };
 destination d_pollerlog { file(".../metro/log/poller.log"); };
 log { source(s_src); filter(f_local0); destination(d_pollerlog); };
 
 |  | majdblogfacility | Set the syslog facility for
			sensor creation. Modify your syslog configuration accordingly. Example for syslog-ng: filter f_local1 { facility(local1); };
 destination d_majdblog { file(".../metro/log/majdb.log"); };
 log { source(s_src); filter(f_local1); destination(d_majdblog); };
 
 |  | pollerlogpt | Set the default syslog
			level. (FIXME: change directive to
			pollerloglevel) |  | metrohost | Set to the server name hosting the metro package ; if 
				metro is installed on the same server as the www package
				set it to "localhost". | 
Activate the creation of new sensors and collection of
	    data. For this, you must create a user that will run all the
	    metro programs and make this user the owner of
	    all the metrodatadir and rrddir directory trees. Let us call
	    this user m.	    Install the sample crontab (.../share/examples/netmagis/crontab.metro) in your default
	    cron system. This crontab should be run by the user m. 	    After the fisrt execution of .../bin/metrocreatedb, polling can start.
	Allow access from the www server to the metro webservice:
		NB: the www host must be trusted by the metro server.
		The access to the webservice is not authentified.Copy the file .../share/examples/apache-metro.conf to your
		apache configuration directory and adapt it to your environment.
		The line starting with Allow from must have the IP address
		of the server running the www package. If www and metro both run on the
		same host, just put localhost.
     The metro package is now ready to work. You can create
    sensors in the equipment configurations:      
	To activate a traffic sensor on an equipment interface,
	    the only thing to do is to add information in the interface
	    description on the equipment, as you have done with topo package.	    This information is the string M concatened with
	    the name of the sensor. You can use any unique name for a
	    sensor. For example, Netmagis authors use the link number
	    (used with the topo package) associated with the
	    name of the equipement (since a link number is present on
	    each end of the link), but you can use your own convention. 	    For example:
	     | Equipment | Example |  | Juniper | ge-0/1/0 { description "core link <L233 M233.eqname>";
 }
 ge-0/1/1 {
 description "edge port <X Meqname.desc>";
 }
 |  | Cisco | interface GigabitEthernet0/1 description core link <L233 M233.eqname>
 interface GigabitEthernet0/2
 description edge port <X Meqname.desc>
 |  | HP | interface A1 name "core link <L233 M233.eqname>"
 interface A2
 name "edge port <X Meqname.desc>"
 | 
 	To collect ip-mac and port-mac session, you need to enable
		the mac package in the application configuration in the Admin web interface.To activate an ipmac sensor in your equipement
	    configuration, you have to add information in the SNMP
	    sysLocation description.
 	   This information is just the letter I, bracketed with
	   "<" and ">" added to syslocation string.            Important: The sensor works only if routing is enabled. 	     | Equipment | Example |  | Juniper | snmp { location "hi, I'm here <I>";
 }
 |  | Cisco | snmp-server location hi, I'm here <I> 
 |  | HP | snmp-server location "I'm here <I>" 
 | 
 	To activate a portmac sensor in your equipement
	    configuration, it is the same process is an ipmac sensor;
	    just use <P> (instead of <I>).	    Important note: if you want activate both ipmac and portmac
	    sensors on the same equipment, insert the string "<I P>
	    in the sysLocation description.
	     Metro data descriptions
    
    
 The Metro package generates saveral datas into the following files or
    directories :
      
    ../var/netmagis/metro/poller/ This Directory contains the following files :
 
            metro.sensor : list of parameters of all sensors for 
            data collection. This file is generated automatically by 
            metrocreadb.metro.quarantine : lists all the sensors which are no longer 
            updated by topo. The sensors are definitively removed after a grace
            period.metro.plugins : this file is reserved to be manually updated 
	    in order to execute plugins or sensors which are not automaticaly
            activated.../var/netmagis/metro/rrddb/ The rrdtool databases are stored in this directory.
../var/netmagis/metro/log/poller.log You can find in this log file all the messages generated by sensors
            collection and plugins execution.
../var/netmagis/metro/log/syncmetro.log All the informations about the creation, deletion of sensors are
            in this log file.
../var/netmagis/metro/report/ This directory contains the results of the ipmac and portmac 
            collection before storing them in the mac database.
../var/netmagis/metro/cache/ This directory contains the caches files created by the sensors 
            collection. By example, the (ip,interface name,SNMP interface index)
            relation.
../var/netmagis/metro/lock This Directory contains the locks files created by some scripts 
            (metrocreatedb, plugin-ipmac or plugin-portmac) in order to avoid 
            multiple executions of the same script in the same time.
	    Important : If a crash of a script occurs, the lock file
            must be removed.
 |