Netdisco est un outil puissant permettant de visualiser votre réseau et les données présentes sur vos routeurs et machines. Il permet notamment de pouvoir retrouver facilement une machine sur votre réseau en tapant son IP ou son adresse MAC et de connaître le port et l’équipement auquel elle est connectée.
Depuis la version 1 il permet d’obtenir les informations concernant l’état POE de vos commutateurs, faire du tri par VLAN afin de savoir où celui-ci se propage. Prerequis
Netdisco requiert les paquets suivants :
apache2
perl
postgresql
libapache2-mod-apreq2
libdbd-pg-perl
graphviz
libnet-snmp-perl
libapache2-mod-perl2
libhtml-mason-perl
libdbd-pg-perl
libgraphviz-perl
libnet-nbname-perl
libgraph-perl
snmp-mibs-downloader
Pour installer netdisco, installez les paquets suivants :
apt-get install netdisco-backend netdisco-frontend netdisco-mibs-installer
Maintenant on va installer les mibs de netdisco :
netdisco-mibs-download
netdisco-mibs-install
Allez ensuite dans le dossier /etc/netdisco et téléchargez le fichier oui.txt contenant les définitions des constructeurs réseau
cd /etc/netdisco
wget http://www.frostsapphirestudios.com/uploads/oui.txt
Construisez le fichier de données netdisco-topology.txt et le fichier de configuration netdisco.conf
touch /etc/netdisco/netdisco-topology.txt
touch /etc/netdisco/netdisco.conf
Maintenant nous allons configurer le service SNMP pour ne pas utiliser ses propres mibs. Ouvrez le fichier /etc/snmp/snmp.conf et commentez la ligne mibs.
Si ce n’est pas déjà fait, installez PostgreSQL
apt-get install postgresql
Maintenant nous allons créer la base et l’utilisateur netdisco.
Tout d’abord éditez le fichier /etc/postgresql/<votre_version>/main/pg_hba.conf et ajoutez les lignes suivantes
local netdisco netdisco trust host netdisco netdisco 127.0.0.1 255.255.255.255 trust
Maintenant nous allons oeuvrer sur la base postgresql. A contrario de MySQL, postgreSQL utilise un user Linux.
su - postgres
createuser netdisco -P
L’action suivante étant plutôt ambiguë avec les repos, nous allons prendre le paquet officiel netdisco pour la réaliser, il faut désormais remplir la base de données et malheureusement aptitude et Debian ne peuplent pas celle-ci.
wget http://downloads.sourceforge.net/project/netdisco/netdisco/1.0/netdisco-1.0_with_mibs.tar.gz?use_mirror=iweb
tar xvzf netdisco-1.0_with_mibs.tar.gz?use_mirror=iweb
cd netdisco-1.0/sql
./pg --init
Votre base PostgreSQL est prête.
Nous allons tout d’abord activer les modules nécessaires à netdisco :
a2enmod perl
a2enmod apreq
Maintenant on va appliquer le dossier netdisco à notre apache. Vous pouvez le faire sur un virtualhost en particulier, ce qui serait plus judicieux, mais nous allons l’appliquer de façon générique.
echo "Include /etc/netdisco/netdisco_apache2.conf" > /etc/apache2/conf.d/netdisco.conf
echo "Include /etc/netdisco/netdisco_apache2_dir.conf" >> /etc/apache2/conf.d/netdisco.conf
Maintenant on va configurer postgreSQL pour le module MASON de Netdisco. Ouvrez le fichier /etc/netdisco/netdisco_apache2.conf et éditez les lignes suivantes :
session_data_source => 'dbi:Pg:dbname=netdisco',
session_user_name => 'netdisco',
session_password => '<votre-passe>',
Maintenant on peut redémarrer apache2
service apache2 restart
Votre netdisco est prêt à être utilisé, il ne reste plus qu’à pouvoir interroger les différents serveurs SNMP.
Je vous propose le squelette de configuration suivante :
# ---- General Settings ----
domain = .domain.com
home = /usr/lib/netdisco
topofile = /etc/netdisco/netdisco-topology.txt
timeout = 90
macsuck_timeout = 90
macsuck_all_vlans = true
arpnip = true
# -- Database Maintenance and Data Removal --
expire_devices = 60
expire_nodes = 90
expire_nodes_archive = 60
# ---- Admin Panel Daemon Settings ----
daemon_bg = true
daemon_pid = /var/run/netdisco_daemon.pid
daemon_poll = 2
# Data Archiving and Logging
compresslogs = true
compress = /bin/gzip -f
datadir = /var/log/netdisco
logextension = txt
# ---- Web Settings ----
port_info = false
secure_server = false
webpath = /netdisco
websession = 90
# ---- Database Settings ----
db_Pg = dbi:Pg:dbname=netdisco;host=localhost
db_Pg_user = netdisco
db_Pg_pw = dbpassword
db_Pg_opts = PrintError => 1, AutoCommit => 1
# ---- SNMP Settings ----
community = public,public2
community_rw = private1
# snmptimeout in micro-seconds before retry, 1000000 micro-seconds = 1 second
snmptimeout = 1000000
snmpretries = 3
snmpver = 2
mibhome = /usr/share/netdisco/mibs
mibdirs = $mibhome/allied, $mibhome/asante, $mibhome/cisco,
$mibhome/foundry, $mibhome/hp, $mibhome/nortel,
$mibhome/extreme,
# Do not remove rfc or net-snmp.
$mibhome/rfc, $mibhome/net-snmp
bulkwalk_off = true
Configuration du graph netdisco
# ---- Graph Settings ----
edge_color = wheat
outputdir = /var/lib/netdisco/html
# If you'd rather use PNG, comment out the above and
# uncomment this.
graph_png = $outputdir/netmap.png
graph_bg = black
graph_clusters = true # try fdp layout
graph_color = white
graph_epsilon = 8
graph_layout = fdp # try twopi neato or fdp too
graph_map = $outputdir/netmap.map
graph_overlap = scale
graph_nodesep = 1.5
graph_ranksep = .3
graph_splines = false
graph_timeout = 90
graph_x = 20
graph_y = 20
node_fillcolor = dimgrey
node_font = lucon
node_fontsize = 46.0
node_fontcolor = white
node_problem = red
node_shape = box
node_style = filled
Maintenant nous allons importer la base oui à celle de Netdisco et requérir les premières données:
netdisco -O /etc/netdisco/oui.txt
netdisco -r <coeur de réseau> -C /etc/netdisco/netdisco.conf
Si jamais votre réseau est segmenté, il se peut que certains points soient isolés de votre réseau SNMP. Dans ce cas remplacez l’adresse du cœur de réseau par l’adresse du point central isolé.
Netdisco est presque prêt. On va installer le service et l’activer au démarrage et activer le raffraichissement (dans notre cas toutes les heures)
ln -s /usr/lib/netdisco/netdisco_daemon /etc/init.d
echo "service netdisco_daemon start" >> /etc/rc.local
echo "00 */1 * * * root netdisco -C /etc/netdisco/netdisco.conf -r <coeur-de-reseau>" >> /etc/crontab
C’est terminé. Netdisco est prêt. Vous pouvez le lancer.
service netdisco_daemon start