1. Introduction

Un réseau informatique fonctionne grâce à l’utilisation d’un ensemble de protocoles complémentaires. Ce système est très puissant pour permettre les communications dans des milieux hétérogènes, mais en cas de dysfonctionnement, sa nature complexe rend le troubleshooting ardu. 

Une démarche organisée et des outils efficaces sont indispensables pour analyser le fonctionnement de chaque élément et pouvoir identifier celui qui pose problème.  

Une méthodologie simple mais efficace pour dépanner/troubleshooter un réseau consiste à suivre le modèle en couches :

  • Tout d’abord, on vérifie les connexion physiques, en testant les câbles et en vérifiant l’état des interfaces dans la configuration réseau de chaque appareil.
  • Ensuite, on vérifie la connectivité IP : Obtention d’une adresse IP, subnet du LAN, accès à la passerelle, accès à la destination, … et ce, en utilisant à la fois les outils d’analyse de configuration ainsi que les utilitaires ping et traceroute. Le DNS peut également être investigué à ce moment.
  • Ensuite, on s’intéresse à la couche Transport, en vérifiant que les numéros de port sont bien accessibles : Service pas à l’écoute, firewall bloquant, NAT, … Et enfin, si toutes les couches inférieures fonctionnent correctement, il s’agit de s’intéresser à la configuration de l’application elle-même.

En plus de ces outils spécifiques, il en est un qui s’avère de première importance à chaque étape du troubleshooting : Il s’agit d’un outil permettant d’observer et d’analyser finement les trames échangées sur un réseau. Cette outil repose sur des librairies capables de capturer toutes les trames émises sur une interface donnée. Ces traces peuvent alors être analysées par des logiciels ad-hoc, qui présenteront les détails de chaque couche protocolaire de la trame. En ligne de commande, l’application s’appelle tcpdump, et la version possédant une interface graphique est Wireshark.

2. Environnement de travail

Pour ce TP, vous avez le choix de travailler sur un hôte Windows ou sur une machine virtuelle Linux. Wireshark est déjà installé sous Windows, mais pas nécessairement sur les VMs Linux. 

En théorie, il est possible d’utiliser Wireshark aussi bien sur l’hôte que sur la VM si on veut capturer du trafic entrant ou sortant venant de cette dernière.  En effet, le trafic de la VM avec Internet passe de toute façon sur l’interface physique de l’hôte. 

Néanmoins, pour le moment, les postes Windows des salles info ne permettent pas d’utiliser Wireshark en mode “capture”.  Le logiciel est disponible pour lire des traces déjà existantes, mais ne permet pas, pour des raisons techniques, d’analyser le trafic en direct.  Pour cela, il va donc falloir utiliser Wireshark dans la VM.

3. Découverte de Wireshark

Ouvrez à présent le logiciel Wireshark (vous pouvez tester tcpdump, mais il vous faudra alors vous plonger dans la manpage). En fonction de la version et de l’OS avec lesquels vous travaillez, l’interface initiale peut différer. Explorez les menus pour lancer une première capture. Vous devrez pour cela choisir une ou plusieurs interfaces réseau.

  1. Quelles sont les interfaces auxquelles vous avez accès ? A quoi correspond chacune d’elles ?
  2. Comment faire pour capturer le trafic depuis toutes les interfaces à la fois ?

Une fois la capture lancée, laissez-la tourner une ou deux minutes afin de disposer de suffisamment de trames, puis stoppez-là . Examinez à présent l’interface qui s’offre à vous.

  1. En dessous de la partie menu, l’interface se délimite en trois zones rectangulaires, de taille ajustable. Quelle information contient chacune d’elle ? Sélectionnez différents éléments et voyez en quoi l’affichage est modifié.
  2. Sélectionnez au hasard une trame pour laquelle l’adressage IP est disponible. Quelle est l’IP source ? L’IP destination ? L’adresse MAC source ? Destination ?
  3. Faites le relevé d’une dizaine d’adresses MAC et d’une dizaine d’adresses IP figurant dans les traces Wireshark. Dans chaque cas, à qui appartiennent ces adresses? Dans le cas d’une trame donnée, est-ce que l’adresse MAC destination correspond à la même machine que l’IP de destination ?

ATTENTION : il vaut mieux en général éviter de laisser tourner Wireshark trop longtemps pour ne pas saturer la mémoire. N’oubliez donc jamais d’arrêter vos captures.

4. Menus et options de Wireshark

Examinez à présent de plus près les fonctions offertes par Wireshark. Prenez soin de noter dans votre aide-mémoire les fonctionnalités dont vous seriez susceptibles d’avoir besoin.

Explorez particulièrement les fonctions suivants :

  • Menu File, option Export Specified Packets
  • Menu Edit, option Preferences (User Interface, Capture, Name Reso- lution, Protocols,…)
  • Menu Capture, option Capture Filters
  • Menu Statistics, options Summary, Protocol Hierarchy, Conversations, Endpoints.

5. Filtres

Les filtres sont un outil extrêmement puissant pour analyser des traces Wireshark.  

Un filtre est une expression représentant le type de trafic que l’on souhaite afficher. Un exemple très simple de filtre consiste simplement à spécifier le nom du protocole, comme par exemple ip, icmp, ou encore tcp (attention à la casse).

Les filtres peuvent être spécifié dans le champ ad-hoc, juste au dessus de la liste des trames. Remarquez que le fond de ce champ est vert lorsque l’expression est syntaxiquement valide, et rouge dans le cas contraire.

Les opérateurs logiques and, or ou not peuvent être utilisés pour construire des expressions plus complexes.

  1. Dans votre trace, affichez tous les paquets ARP, puis tous les paquets IP.
  2. Avez-vous du trafic IPv6 dans votre trace ?
  3. Utilisez les opérateurs logiques pour afficher tout le trafic IP qui ne contient pas de segment TCP.
  4. Affichez les messages DNS véhiculés dans des datagrammes UDP.

Les filtres peuvent être encore plus précis, et il est possible de spécifier des valeurs de champs de protocole grâce à l’opérateur ==. Par exemple, pour sélectionner tous les paquets envoyés ou reçus par l’adresse 10.4.35.24, on utilise l’expression ip.addr==10.4.35.24.

Vous pouvez parcourir la liste des champs disponibles par protocole en cliquant sur le mot “Expression…” à côté du champ de filtre.

Pour naviguer plus rapidement dans la (très!) longue liste de protocoles, utilisez le clavier pour taper l’acronyme du protocole qui vous intéresse. Par exemple, essayez de naviguer rapidement vers le protocole ipv4, ou le protocole tcp. Remarquez qu’en plus de l’opérateur ==, d’autres opérateurs binaires sont disponibles.

  1. Affichez les trames envoyées par votre machine, sur base de sa ou ses adresses IP
  2. Affichez les segments TCP dont le port destination est le port 80/http
  3. Lancez un ping, puis affichez tous les paquets correspondant aux ICMP Echo Request

6. Mise en pratique

Ouvrez la trace arp_resolution.pcapng.

  1. Où se trouve-t’on dans le modèle OSI? Quelles sont les couches encapsulées dans chaque trame ?
  2. Pour chacune des trames, identifiez les adresses sources et destination.
  3. Pour chacune des trames, expliquez son contenu.
  4. Videz votre cache ARP, puis lancez une capture Wireshark avant de faire un ping vers une des machines de votre sous-réseau. Créez un filtre pour retrouver la requête ARP qui vous a permis de récupérer l’adresse MAC de la machine visée.