Utilisation de Net-SNMP

Table des matières

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 Net-SNMP. La lecture attentive du manuel est indispensable.

Mise en place

Moniteur

Installation

Sur la machine moniteur, installer les paquets snmp, snmp-mibs-downloader et wireshark.

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

Configuration

Après avoir lu snmp.conf(5), snmpcmd(1) ainsi que le fichier /etc/snmp/snmp.conf modifier ce dernier (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.

Postes

Installation

Sur poste1 et poste2, installer le paquet snmpd.

Configuration

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éseau disponibles ;
  • utilise le mot lecture pour une communauté autorisée à utiliser les requêtes GET et GETNEXT ;
  • utilise le mot ecriture pour une communauté autorisée à utiliser les requêtes GET, GETNEXT et SET ;
  • 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.

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 fils 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 regarder 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 - récupération de valeurs scalaires

Depuis moniteur, vous allez utiliser la commande snmpget pour consulter des scalaires 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

Lancer Wireshark et faire une capture de trame pour une requête sur system.sysDescr. Observer la forme des requêtes et réponses SNMP.

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, 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.

Lancer une capture avec Wireshark et utiliser 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