Utilisation de Net-SNMP

L'objectif de ce TP est de comprendre le fonctionnement du protocole SNMP et ses différentes opérations possibles. Pour cela nous utiliserons les commandes de Net-SNMP. La lecture attentive du manuel est indispensable.

Modification de l'environnement de TP

Il va falloir modifier l'environnement de travail mis en place lors de la séance précédente. Pour cela il faut modifier le Vagrantfile.

moniteur

Ajouter les paquets snmp, snmp-mibs-downloader, tcpdump et wireshark.

Attention snmp-mibs-downloader est dans la partie non-free des dépôts Debian.

Après avoir lu le fichier /etc/snmp/snmp.conf ainsi que les parties intéressantes de snmp.conf(5) et snmpcmd(1), modifier /etc/snmp/snmp.conf (qui permet de spécifier des options par défaut pour toutes les commandes snmpXXX) pour (ré)activer le chargement automatique des MIBS qui ont été téléchargées.

La commande snmpconf(1) peut éventuellement être utile.

poste1 et poste2

Ajouter le paquet snmpd sur les deux postes surveillés.

Après voir lu snmpd.conf(5) ainsi que le fichier /etc/snmp/snmpd.conf, sur poste1 et poste2, configurer l'agent SNMPD de façon à ce qu'il :

  • écoute sur toutes les interfaces réseaux disponibles sur l'agent ;
  • utilise le mot lecture pour une communauté autorisée à utiliser les requêtes GET, GETBULK et GETNEXT (communauté ro) ;
  • utilise le mot ecriture pour une communauté autorisée à utiliser les requêtes GET, GETBULK, GETNEXT et SET (communauté rw) ;
  • réponde uniquement pour les OID de la branche de supervision (sous-arbre sous 1.3.6.1.2) ;
  • ne réponde qu'aux requêtes provenant du moniteur.

Capture de trames

Dans la suite de ce TP quand il sera nécessaire d'observer les paquets réseau il faudra :

  1. depuis la machine étudiée, capturer les paquets circulant vers un fichier du répertoire de travail de la machine physique (celui qui contient le Vagrantfile) via

    tcpdump -Uni any -w /vagrant/paquets &
    
  2. démarrer wireshark sur la machine physique depuis le répertoire de travail de la machine physique de façon à ce qu'il affiche les paquets capturés via

    tail -f -c +0 paquets | wireshark -i - -k
    
  3. faire les observations
  4. arrêter tcpdump sur la machine virtuelle puis supprimer le fichier paquets

Lecture des fichiers MIBs

Sur moniteur, les MIBs sont disponibles dans des fichiers sous le répertoire /usr/share/snmp/mibs/.

Définitions

Rechercher dans les fichiers des MIBs les définitions des objets suivants et trouver pour chacun son identifiant, s'il a des enfants et son type :

  • ipForwarding
  • sysName
  • icmp

Version de SMI

Déterminer dans quelle version de SMI ces MIB sont écrites. Situer ces objets dans l'arborescence à partir du noeud mib-2.

Utilisation des commandes de net-snmp

snmptranslate - conversion numérique/symbolique

Utiliser la commande snmptranslate afin d'explorer la MIB et d'afficher les représentations symboliques (textuelles) et numériques des objets en testant les commandes suivantes :

  • snmptranslate -Os .1.3.6.1.2.1.7.4
  • snmptranslate -IR -On icmp
  • snmptranslate -IR -Of icmp
  • snmptranslate -IR -Tp tcp

Après avoir regardé dans la documentation la signification des options utilisées, lister les états possibles d'une connexion TCP en utilisant le résultat de la dernière commande.

Comment afficher la MIB entière (à partir de .iso) avec snmptranslate ?

snmpget, snmpwalk - récupération de valeurs

Depuis moniteur, il faut utiliser la commande snmpget pour consulter des informations sur poste1 avec les arguments suivants (en remplaçant OID par l'OID de l'instance que vous cherchez à obtenir) :

snmpget -v 2c -c lecture poste1 OID

Regarder dans la documentation la signification des options utilisées.

Consulter la valeur des objets suivants :

  • system.sysDescr
  • udp.udpOutDatagrams
  • udp.udpInDatagrams

Observer la forme des trames SNMP circulant lors de la consultation de la valeur de system.sysDescr.

En utilisant la commande snmpwalk parcourir les informations à partir de l'objet ifXTable.

Observer les trames lors de cette action.

Faire la même consultation en utilisant snmpbulkwalk. Les données sont-elles identiques ?

Observer les trames lors de cette action. Sont-elles identiques à celles observées lors de la consultation avec snmpwalk ?

snmpgetnext et snmpgettable - manipulation des éléments complexes

Trouver le nombre d'interfaces présentes sur le système en utilisant snmpget.

Récupérer la description de chacune des interfaces (interfaces.ifTable.ifEntry.ifDescr). snmpwalk peut sans doute vous être utile.

En utilisant la commande snmpgetnext ou snmpbulkwalk, reconstituer le contenu de la table des adresses (ipAddressTable) :

  1. en utilisant snmptranslate, afficher la définition puis l'arborescence correspondant à la table ipAddressTable ;
  2. consulter la définition des différents objets de la table ;
  3. représenter le tableau correspondant et le remplir à partir des valeurs trouvées avec snmpgetnext.

Observer les trames circulant lors d'une utilisation de la commande snmptable pour récupérer le contenu de la table ipAddressTable en SNMPv1 puis en SNMPv2. Observer les requêtes SNMP utilisées.

snmpset - modification de scalaires

Utiliser le manuel de la commande snmpset pour apprendre à utiliser cette commande.

Modifier les valeurs suivantes (si la modification génère une erreur, justifier pourquoi ; sinon, vérifier que la modification a bien été réalisée) :

  • sysDescr
  • sysName