R5B08 - Séance 6
Utilisation de Net-SNMP
Introduction
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.
Environnement de travail
Contexte et contraintes
Le TP devra être effectué sur l'infrastructure préparée lors du TP précédent que vous allez modifiée.
Vous devrez mettre dans un document texte au format Markdown ce qui vous a permis de répondre aux questions de l'énoncé et ce qui est nécessaire à faire pour atteindre les objectifs demandés.
Pour le TP courant ce fichier devra être nommé tp-02-LOGIN.md (avec
LOGIN remplacé par votre identifiant).
Ce fichier devra être déposé dans le dépôt git de référence pour le module. Un accès web à ce dépôt est disponible à l'URL suivante : https://gitlab.univ-lille.fr/etu/2025-2026/r5b08.
Dans un premier temps, il va vous falloir modifier l'environnement de
travail mis en place lors de la séance précédente en modifiant votre
Vagrantfile.
Machine 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.
Machines 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
lecturepour une communauté autorisée à utiliser les requêtesGET,GETBULKetGETNEXT(communautéro) ; - utilise le mot
ecriturepour une communauté autorisée à utiliser les requêtesGET,GETBULK,GETNEXTetSET(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 :
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) viatcpdump -Uni any -w - >/vagrant/paquets &
démarrer
wiresharksur la machine physique depuis le répertoire de travail de la machine physique de façon à ce qu'il affiche les paquets capturés viatail -f -c +0 paquets | wireshark -i - -k
- faire les observations
- arrêter
tcpdumpsur la machine virtuelle puis supprimer le fichierpaquets
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 :
ipForwardingsysNameicmp
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.4snmptranslate -IR -On icmpsnmptranslate -IR -Of icmpsnmptranslate -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.sysDescrudp.udpOutDatagramsudp.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 uniquement les commandes snmpgetnext ou snmpbulkwalk,
reconstituer le contenu de la table des adresses
(ipAddressTable) :
- en utilisant
snmptranslate, afficher la définition puis l'arborescence correspondant à la tableipAddressTable; - consulter la définition des différents objets de la table ;
- 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) :
sysDescrsysName