Administration Réseau – Simplifiez la Gestion de Votre Infrastructure avec Netdisco

Introduction

La gestion des réseaux est une tâche complexe, surtout lorsque vous devez localiser rapidement un appareil sur l’ensemble de votre infrastructure à partir d’une adresse MAC ou d’une adresse IP. Dans ce contexte, Netdisco se présente comme un outil puissant, simple et efficace pour l’auto-découverte et la gestion des réseaux. Contrairement à des solutions plus robustes comme Nautobot ou Netbox, qui sont riches en fonctionnalités mais nécessitent une configuration manuelle complexe, Netdisco se concentre sur l’essentiel : la découverte automatique des appareils réseau via SNMP, SSH, et CLI, tout en restant extensible et entièrement gratuit.

Besoin Initial

Objectif : Pouvoir retrouver facilement le port sur lequel un équipement est connecté à partir de son adresse MAC ou IP, sur l’ensemble des switchs et routeurs du réseau.

Contexte :

  • Nautobot : Très complet (IPAM, gestion d’inventaire, DCIM), mais nécessite une configuration manuelle lourde et des scripts pour automatiser l’alimentation des données. De plus, la langue est uniquement anglaise.
  • Netbox : Un peu moins complexe que Nautobot, mais les modules d’auto-découverte sont payants, ce qui peut être un frein pour les petites organisations.
  • Netdisco : Se concentre sur l’essentiel avec une interface simple, une gestion des droits basique, et une découverte automatique des réseaux. L’interface est en anglais, mais elle peut être traduite.

Choix : Netdisco est choisi pour sa simplicité, son efficacité, et son coût (gratuit).

Pourquoi Netdisco ?

Netdisco est un outil orienté auto-découverte, idéal pour les administrateurs réseau qui cherchent à cartographier rapidement leurs infrastructures et à retrouver facilement la localisation des équipements. Contrairement à des solutions plus complexes qui intègrent un large éventail de fonctionnalités, Netdisco offre :

  • Auto-découverte rapide : Utilisation de SNMP, SSH, et CLI pour découvrir automatiquement les équipements réseau et leurs connexions.
  • Simplicité d’utilisation : Une interface utilisateur simple qui permet de se concentrer sur l’essentiel.
  • Extensibilité : Possibilité d’ajouter des fonctionnalités via un système de plugins.
  • Gratuité et maintenance : Netdisco est entièrement gratuit et maintenu activement par sa communauté.

Les Fonctionnalités de Netdisco

  • Découverte Automatique : Identification rapide des adresses MAC et IP, ainsi que des connexions réseau via SNMP, CLI, et SSH.
  • Gestion des Ports : Localisation des équipements connectés aux ports des switchs et routeurs, avec la possibilité de désactiver des ports ou de modifier des paramètres tels que les VLANs et le PoE (Power over Ethernet).
  • Inventaire Réseau : Suivi et gestion des équipements réseau, incluant les modèles, versions logicielles, et autres informations cruciales pour le matériel.
  • Topologie Réseau : Cartographie automatique des relations entre les appareils réseau, facilitant la visualisation de la structure du réseau.
  • Gestion des VLANs : Administration des VLANs pour une meilleure segmentation du réseau.
  • Extensibilité : Support de plugins pour ajouter des fonctionnalités spécifiques ou personnaliser le comportement de Netdisco selon les besoins.
  • Interface Web : Interface utilisateur simple et légère pour accéder à toutes les fonctionnalités, avec une gestion des droits d’accès basique.

Ces fonctionnalités font de Netdisco un outil polyvalent et efficace pour la gestion et la surveillance des réseaux, tout en restant accessible et facile à déployer.

Étapes pour la Mise en Œuvre de Netdisco

1. Préparation de l’Environnement

  • Installation de Docker et Docker Compose
  • Configuration des Répertoires : Créez les répertoires nécessaires pour les fichiers de configuration, les journaux, et autres données persistantes :
    mkdir -p ~/netdisco/{logs,config,nd-site-local}
    sudo chown -R 901:901 ~/netdisco

2. Téléchargement et Configuration de Docker Compose

  • Téléchargement du fichier Docker Compose :
    curl -Ls -o ~/netdisco/docker-compose.yml https://tinyurl.com/nd2-dockercompose
  • Modification du fichier deployment.yml : Ajoutez les informations nécessaires pour la communauté SNMP

Exemple complet de fichier deployment.yml

A mettre dans config/deployment.yml :

---
# example deployment.yml

# Configuration de la base de données
database:
  name: netdisco
  user: netdisco
  pass: somepassword
  host: db

# Configuration SNMP
community:
  - tag: default_v2
    community: public
    version: 2
  - tag: secure_v3
    version: 3
    username: myuser
    auth:
      proto: sha
      pass: myauthpass
    priv:
      proto: aes
      pass: myprivpass
    mode: authpriv

# Configuration des pollers backend
backend:
  pollers:
    - 127.0.0.1

# Configuration SSH
device_auth:
  - tag: ssh
    driver: cli
    platform: cisco
    only: [ "10.0.0.0/8", "192.168.0.0/16" ]
    username: sshuser
    password: sshpass
    enable: enablepass

# Timeout et tentatives pour SNMP
snmpretries: 2
snmptimeout: 5000  # Temps en millisecondes

# Options supplémentaires
workers: 5
logger_format: '[%P] %U %L %m'
log: warning

# Configuration des découvertes
discover_no: []
discover_only: []
discover_min_age: 86400  # 24 heures en secondes

# Options avancées
external_databases:
  - tag: externaldb
    dsn: 'dbi:Pg:dbname=myexternaldb;host=192.0.2.1'
    user: externaluser
    password: externalpass
    options:
      pg_enable_utf8: true

# Configuration des modules supplémentaires
store_wireless_clients: false
store_modules: true
Explications des principales sections :
  • SNMP v2c et v3 :
    • community : Définition des communautés SNMP pour v2c et les configurations d’authentification et de cryptage pour SNMPv3.
    • snmpretries et snmptimeout : Réglages pour les tentatives et le délai d’attente des requêtes SNMP.
  • SSH :
    • device_auth : Configuration de l’accès SSH pour les équipements, incluant les détails d’authentification et les plages d’adresses IP autorisées.
  • Pollers Backend :
    • backend : Liste des pollers backend qui exécutent les tâches de découverte et de surveillance.
  • Découverte Automatique :
    • discover_no et discover_only : Filtrage des équipements à découvrir ou à ignorer.
    • discover_min_age : Fréquence minimale à laquelle un appareil peut être redécouvert.
  • Options Avancées :
    • external_databases : Intégration avec des bases de données externes pour enrichir les capacités de Netdisco.

Cet exemple est conçu pour être un point de départ. Vous pouvez l’ajuster selon vos besoins spécifiques et la configuration de votre réseau.

3. Configuration Initiale

Avant de démarrer les services, exécutez la configuration initiale pour Netdisco afin de préparer la base de données et d’autres paramètres essentiels :

docker-compose run --entrypoint=bin/netdisco-deploy -e production netdisco-backend

4. Démarrage des Services

  • Lancement des Conteneurs :
    cd ~/netdisco
    docker-compose up -d
  • Les services PostgreSQL, Netdisco Backend, et Netdisco Web sont démarrés. Vous pouvez accéder à l’interface web via http://localhost:5000.

5. Tests et Validation

  • Test de Connectivité SNMP :
    Entrez dans le conteneur backend et testez la connectivité SNMP :
docker-compose exec -u root netdisco-backend /bin/bash
apk add net-snmp-tools traceroute  # Si nécessaire
snmpwalk -v 2c -c public <ip_du_peripherique>
  • Traceroute pour vérifier la route réseau :
    traceroute <ip_du_peripherique>

6. Gestion et Utilisation

  • Découverte des Équipements : Utilisez l’interface web pour ajouter des périphériques ou lancer des découvertes automatiques.
  • Visualisation des Résultats : Visualisez les connexions des équipements, localisez les adresses MAC et IP sur les ports des switchs et routeurs.

Divers

Upgrade du schéma BDD

Si vous voyez ce type d’erreur :

DBIx::Class::Schema::Versioned::_on_connect(): Versions out of sync. This is 88, your database contains version 87, please call upgrade on your Schema. at /home/netdisco/perl5/lib/perl5/DBICx/Sugar.pm line 121

Pour faire la MAJ du schéma, c’est côté backend :

bin/netdisco-deploy -e production schema --upgrade

Donc si vous avez déployé via docker-compose, vous pouvez utiliser cette commande :

docker-compose run --entrypoint="bin/netdisco-deploy" netdisco-backend -e production schema --upgrade

MAJ MIBs et IOUs

Les MIBs (Management Information Bases) sont des bases de données virtuelles utilisées pour gérer les entités d’un réseau en utilisant le protocole SNMP (Simple Network Management Protocol). Elles définissent les objets gérés dans un équipement réseau (comme les routeurs, switchs, etc.) et les propriétés de ces objets que SNMP peut lire ou modifier. Les MIBs sont structurées de manière hiérarchique, chaque objet ayant un identifiant unique appelé OID (Object Identifier).

Les OUIs (Organizationally Unique Identifiers) sont des identifiants uniques attribués aux fabricants de matériel réseau par l’IEEE. Chaque OUI correspond aux trois premiers octets d’une adresse MAC et permet d’identifier le fabricant d’un équipement sur un réseau. Netdisco télécharge les données OUI pour associer les adresses MAC découvertes aux fabricants respectifs.

docker compose exec netdisco-backend bin/netdisco-deploy

Before we continue, the following prerequisites must be in place:
 * Database added to PostgreSQL for Netdisco
 * User added to PostgreSQL with rights to the Netdisco Database
 * "~/environments/deployment.yml" file configured with Database dsn/user/pass
 * A full backup of any existing Netdisco database data
 * Internet access (for OUIs and MIBs)

If you are upgrading Netdisco 2 read the release notes:
https://github.com/netdisco/netdisco/wiki/Release-Notes
There you will find required and incompatible changes
which are not covered by this script.

You will be asked to confirm all changes to your system.

So, is all of the above in place? [y/N]: y

Would you like to deploy the database schema? [y/N]: N

Download and update vendor MAC prefixes (OUI data)? [y/N]: y

Il va alors rechercher les MIBs/OUIs sur github, githubusercontent.com et http://standards-oui.ieee.org/oui.txt

Configuration SNMP sur un Switch Cisco

Pour que Netdisco puisse interroger correctement les équipements via SNMP, il est nécessaire de configurer le SNMP sur vos switchs et routeurs Cisco.

  1. Activer SNMP sur le Switch :
    • Configurez une communauté SNMP en lecture seule :
      configure terminal
      snmp-server community <votre_communauté_snmp> RO
    • Configurer les Traps SNMP (optionnel) :
      snmp-server enable traps snmp linkdown
      linkup snmp-server host 192.168.1.100 version 2c <votre_communauté_snmp>
    • Vérifier l’ACL SNMP (si nécessaire) : Si une liste de contrôle d’accès (ACL) est en place pour restreindre l’accès SNMP :
      access-list 10 permit 192.168.1.100 snmp-server community <votre_communauté_snmp> RO 10
  2. Vérification de la Configuration :
    • Assurez-vous que SNMP est activé et fonctionnel en utilisant la commande suivante:
      show running-config | include snmp
    • Testez la connectivité SNMP depuis le serveur Netdisco :
      snmpwalk -v 2c -c <votre_communauté_snmp> <ip_du_switch>

Liens et Sources Utiles pour Netdisco

Pour ceux qui souhaitent se plonger dans l’installation, la configuration, et l’utilisation de Netdisco, voici quelques ressources essentielles :

  • Documentation Officielle de Netdisco : La documentation officielle fournit des détails complets sur l’installation, la configuration et l’utilisation de Netdisco. Elle est disponible sur MetaCPAN.
  • Tutoriel d’Installation avec Docker : Un guide détaillé pour installer Netdisco en utilisant Docker, avec des instructions pour configurer les différents services. Vous pouvez le trouver sur le GitHub officiel de Netdisco. Notamment avec la liste des variables d’environnement.
  • Communauté et Forums : Pour des questions spécifiques ou des problèmes techniques, la communauté Netdisco est active sur les forums et les listes de diffusion. Vous pouvez rejoindre les discussions sur la liste de diffusion officielle.
  • Exemples de Configurations SNMP : Si vous configurez SNMP sur des équipements Cisco pour qu’ils soient compatibles avec Netdisco, consultez la documentation Cisco sur SNMP.

Conclusion

Netdisco est un choix pragmatique pour les administrateurs réseau cherchant une solution légère et efficace pour la gestion des réseaux. Il permet de se concentrer sur l’essentiel : la découverte et la gestion des connexions réseau à travers des interfaces simples et fonctionnelles, tout en étant extensible et gratuit. Sa facilité de déploiement via Docker, associée à sa capacité d’auto-découverte, en fait un outil précieux pour des environnements de toutes tailles.

Avec Netdisco, vous avez une solution pratique pour localiser rapidement et efficacement les équipements dans votre réseau à partir d’une adresse MAC ou IP, avec une fonctionnalité d’auto-découverte de l’ensemble de votre réseau.