Wireshark offre une visibilité totale sur ce qui se passe sur votre réseau au niveau des paquets. Lorsqu’une application échoue à se connecter, que les performances se dégradent de façon mystérieuse, ou que vous devez vérifier que le trafic circule comme prévu, Wireshark capture chaque paquet et vous permet de plonger dans les détails protocolaires qu’aucun autre outil n’expose. Ce guide couvre l’utilisation pratique de Wireshark, de l’installation aux filtres avancés en passant par des scénarios de dépannage réels que les ingénieurs réseau et les sysadmins rencontrent au quotidien.

Prérequis

  • Un poste de travail sous Linux, macOS ou Windows (Wireshark fonctionne sur les trois)
  • Un accès administrateur ou root pour la capture de paquets (ou l’appartenance au groupe wireshark sous Linux)
  • Une compréhension de base du réseau TCP/IP (adresses IP, ports, protocoles)
  • Une interface réseau sur laquelle capturer (Ethernet, Wi-Fi ou loopback)

Installer Wireshark

Linux

# Debian / Ubuntu
sudo apt install wireshark
# Pendant l'installation, sélectionnez "Oui" pour autoriser la capture sans root

# Si vous avez manqué l'invite, reconfigurez :
sudo dpkg-reconfigure wireshark-common
sudo usermod -aG wireshark $USER
# Déconnectez-vous et reconnectez-vous pour que l'appartenance au groupe prenne effet

# RHEL / Fedora
sudo dnf install wireshark wireshark-cli

# Arch Linux
sudo pacman -S wireshark-qt

Sous Linux, le groupe wireshark donne accès à l’interface de capture. Sans cela, vous devez exécuter Wireshark en tant que root — ce qui représente un risque de sécurité et n’est pas recommandé.

macOS

# Avec Homebrew
brew install --cask wireshark

Ou téléchargez depuis le site officiel. macOS requiert le helper ChmodBPF pour capturer sans root.

Windows

Téléchargez l’installateur depuis le site Wireshark. Il inclut Npcap (le pilote de capture de paquets Windows). Acceptez les paramètres par défaut de Npcap lors de l’installation.

Alternative en ligne de commande : tshark

Wireshark inclut tshark, son équivalent en ligne de commande, très utile pour les serveurs distants et les scripts :

# Capturer 100 paquets sur eth0
tshark -i eth0 -c 100

# Capturer avec un filtre d'affichage
tshark -i eth0 -Y "http.request" -c 50

# Lire un fichier de capture
tshark -r capture.pcapng -Y "dns"

Capturer le Trafic Réseau

Démarrer une Capture de Base

Lancez Wireshark et vous verrez une liste des interfaces réseau disponibles avec des graphiques en sparkline montrant l’activité. Double-cliquez sur une interface pour démarrer la capture immédiatement.

Depuis la ligne de commande :

# Lister les interfaces disponibles
tshark -D

# Démarrer la capture sur une interface spécifique
tshark -i eth0

# Capturer dans un fichier
tshark -i eth0 -w /tmp/capture.pcapng

# Capturer avec un tampon circulaire (5 fichiers de 100 Mo chacun)
tshark -i eth0 -b filesize:102400 -b files:5 -w /tmp/rolling.pcapng

Le tampon circulaire est indispensable pour les captures longue durée sur des systèmes en production. Il évite l’épuisement de l’espace disque en écrasant le fichier le plus ancien quand la limite est atteinte.

Filtres de Capture (Syntaxe BPF)

Les filtres de capture utilisent la syntaxe Berkeley Packet Filter (BPF) — la même syntaxe que tcpdump. Ils sont appliqués avant que les paquets n’atteignent Wireshark, ce qui réduit la taille du fichier de capture.

# Capturer uniquement le trafic vers/depuis un hôte spécifique
host 192.168.1.100

# Capturer uniquement le trafic HTTP et HTTPS
port 80 or port 443

# Capturer le trafic entre deux hôtes précis
host 10.0.0.1 and host 10.0.0.2

# Capturer uniquement les paquets TCP SYN (nouvelles connexions)
tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) == 0

# Capturer uniquement le trafic DNS
port 53

# Capturer le trafic sur un sous-réseau spécifique
net 192.168.1.0/24

# Exclure le trafic SSH (utile lors d'une capture sur un serveur distant)
not port 22

Définissez les filtres de capture dans la boîte de dialogue des options de capture de Wireshark (Ctrl+K) ou avec le flag -f de tshark :

tshark -i eth0 -f "host 192.168.1.100 and port 443" -w /tmp/https_traffic.pcapng

Règle critique : Définissez toujours un filtre de capture sur les réseaux chargés. Une capture non filtrée sur un lien gigabit peut générer des centaines de mégaoctets par minute.

Permissions de Capture et Sécurité

# Vérifier que votre utilisateur appartient au groupe wireshark (Linux)
groups $USER | grep wireshark

# Vérifier les capacités de capture
getcap /usr/bin/dumpcap
# Doit afficher : /usr/bin/dumpcap cap_net_admin,cap_net_raw=eip

N’exécutez jamais Wireshark en tant que root. L’interface graphique analyse des données protocolaires complexes et toute vulnérabilité dans un parseur devient un vecteur d’exploitation root. À la place, dumpcap (le binaire de capture réel) s’exécute avec des capacités élevées tandis que l’interface graphique tourne sous votre compte utilisateur normal.

Filtres d’Affichage — Trouver Ce Qui Compte

Les filtres d’affichage sont la fonctionnalité la plus puissante de Wireshark. Contrairement aux filtres de capture, ils opèrent après la capture et peuvent filtrer sur n’importe quel champ de protocole que Wireshark comprend — des centaines de protocoles avec des milliers de champs.

Filtres d’Affichage Essentiels

# Filtrer par adresse IP
ip.addr == 192.168.1.100
ip.src == 10.0.0.1
ip.dst == 10.0.0.2

# Filtrer par port
tcp.port == 443
udp.port == 53

# Filtrer par protocole
http
dns
tls
tcp
arp
icmp

# Uniquement les requêtes HTTP
http.request

# Réponses HTTP avec des codes de statut spécifiques
http.response.code == 404
http.response.code >= 500

# Requêtes DNS pour un domaine spécifique
dns.qry.name contains "example.com"

# Problèmes de connexion TCP
tcp.analysis.retransmission
tcp.analysis.duplicate_ack
tcp.analysis.zero_window
tcp.analysis.reset

# Paquets de handshake TLS
tls.handshake.type == 1    # Client Hello
tls.handshake.type == 2    # Server Hello

# Filtrer par taille de paquet
frame.len > 1400
frame.len < 64

# Combiner des filtres avec des opérateurs logiques
ip.addr == 192.168.1.100 and tcp.port == 80
dns or http
not arp and not icmp
(ip.src == 10.0.0.1 or ip.src == 10.0.0.2) and tcp.port == 443

Filtres d’Affichage vs Filtres de Capture

AspectFiltres de captureFiltres d’affichage
SyntaxeBPF (host, port, net)Wireshark (ip.addr, tcp.port)
Moment d’applicationAvant le démarrage de la captureAprès la capture, en temps réel
Effet sur le fichierRéduit la taille du fichierAucun effet (masque les paquets)
Profondeur protocolaireCouches 2-4 uniquementToutes les couches protocolaires
Modification possibleSeulement en redémarrant la captureÀ tout moment pendant l’analyse
PerformanceFiltre dans le noyau (rapide)Filtre en espace utilisateur (plus lent)
À utiliser quandVous savez exactement quoi capturerVous explorez ou analysez une capture

Conseil pratique : Utilisez un filtre de capture large (par exemple host 192.168.1.100) pour garder la taille du fichier raisonnable, puis des filtres d’affichage pour creuser dans les protocoles spécifiques pendant l’analyse.

Analyser les Protocoles Courants

Suivre les Flux TCP

L’une des fonctionnalités les plus utiles de Wireshark est la reconstitution des conversations TCP :

  1. Trouvez un paquet appartenant à la conversation qui vous intéresse
  2. Clic droit → Suivre → Flux TCP
  3. Wireshark affiche la conversation complète avec les données client dans une couleur et les données serveur dans une autre

C’est indispensable pour déboguer les API HTTP, les sessions SMTP, les requêtes de bases de données, et tout protocole textuel. Pour le trafic chiffré (TLS), vous voyez le handshake mais la charge utile est chiffrée sauf si vous fournissez les clés de session.

# Exporter un flux TCP spécifique avec tshark
tshark -r capture.pcapng -q -z follow,tcp,ascii,0

Analyser le Trafic DNS

Les problèmes DNS sont à l’origine des pannes réseau les plus déroutantes. Filtrez et examinez le DNS :

# Tout le trafic DNS
dns

# Uniquement les requêtes DNS (sans les réponses)
dns.flags.response == 0

# Réponses DNS avec des erreurs
dns.flags.rcode != 0

# Requêtes pour un domaine spécifique
dns.qry.name == "api.example.com"

# Trouver les réponses NXDOMAIN (domaine inexistant)
dns.flags.rcode == 3

Scénario Réel : Diagnostiquer des Performances Lentes d’une Application

Une application web répond de façon intermittente avec des délais de 5 secondes ou plus. Les métriques côté serveur montrent des temps de traitement rapides. Le problème est dans le réseau.

  1. Capturez le trafic entre le client et le serveur :

    tshark -i eth0 -f "host 10.0.0.50 and port 443" -w /tmp/slow_app.pcapng
  2. Reproduisez la requête lente depuis le client.

  3. Ouvrez dans Wireshark et appliquez les filtres :

    tcp.analysis.retransmission or tcp.analysis.duplicate_ack
  4. Vérifiez le temps de handshake TCP — si le SYN-SYN/ACK prend plus de 200 ms, vous avez un problème de routage ou de distance.

  5. Examinez l’intervalle entre les paquets — si le serveur envoie les données rapidement mais qu’il y a de longs intervalles entre les ACK client, le réseau client est congestionné.

  6. Vérifiez les problèmes de fenêtre TCP :

    tcp.analysis.zero_window

    Les événements de fenêtre zéro signifient que le tampon du récepteur est plein — l’application ne lit pas les données assez vite.

La cause est souvent : des retransmissions sur un lien Wi-Fi instable, des délais de résolution DNS, ou un handshake TLS incluant une vérification OCSP lente.

Fonctionnalités Avancées de Wireshark

IO Graphs

Les IO Graphs de Wireshark (Statistiques → IO Graphs) visualisent les patterns de trafic dans le temps. Créez plusieurs courbes pour différents filtres :

  • Courbe 1 : Tout le trafic (frame)
  • Courbe 2 : Retransmissions (tcp.analysis.retransmission)
  • Courbe 3 : Erreurs HTTP (http.response.code >= 400)

Des pics de retransmissions corrélés avec des pics de trafic révèlent de la congestion. Un filet constant de retransmissions suggère un problème de couche physique (câble défectueux, interférences).

Informations Expertes

Naviguez vers Analyser → Informations Expertes pour le diagnostic automatisé de Wireshark. Il classe les problèmes en :

  • Erreurs (rouge) : paquets malformés, échecs de checksum
  • Avertissements (jaune) : retransmissions, segments hors ordre, fenêtres zéro
  • Notes (cyan) : ACK dupliqués, keep-alives
  • Discussions (bleu) : événements protocolaires normaux (établissement de connexion, requêtes HTTP)

Commencez votre analyse ici. Si les Informations Expertes affichent des centaines d’avertissements, concentrez-vous dessus avant de plonger dans les paquets individuels.

Déchiffrer le Trafic TLS

Pour inspecter le contenu HTTPS dans Wireshark :

# Définissez la variable d'environnement avant de lancer votre navigateur
export SSLKEYLOGFILE=~/sslkeys.log
google-chrome &
# ou
firefox &

Dans Wireshark : Édition → Préférences → Protocoles → TLS → Nom du fichier journal (Pre)-Master-Secret → sélectionnez ~/sslkeys.log.

Wireshark déchiffre maintenant le trafic TLS de cette session de navigation. Vous voyez les requêtes HTTP/2 complètes, les en-têtes et les corps de réponse. Cela ne fonctionne que pour le trafic de votre propre navigateur utilisant ce journal de clés — vous ne pouvez pas déchiffrer le trafic d’autres personnes.

Statistiques et Conversations

Wireshark propose des vues statistiques étendues :

  • Statistiques → Conversations : affiche toutes les paires de communication avec le nombre de paquets et les octets
  • Statistiques → Hiérarchie de Protocoles : ventilation du trafic par pourcentage de protocole
  • Statistiques → Endpoints : liste toutes les adresses IP avec leur volume de trafic
  • Statistiques → HTTP → Requêtes : toutes les requêtes HTTP triées par URI

Ces vues vous permettent de comprendre rapidement la forme d’une capture sans faire défiler manuellement les paquets.

Comparaison de Wireshark avec les Alternatives d’Analyse Réseau

FonctionnalitéWireshark (GUI)tshark (CLI)tcpdumpngrep
Décodeurs de protocoles3000+3000+BasiqueBasique
Visualisation graphiqueOuiNonNonNon
Filtres d’affichageSyntaxe Wireshark complèteSyntaxe Wireshark complèteBPF uniquementRegex sur la charge utile
Suivi de fluxOui (TCP, UDP, TLS)OuiNonPartiel
Fonctionne sur serveursNécessite X11/VNCOuiOuiOui
Capture en temps réelOuiOuiOuiOui
Lecture de fichiers pcapOuiOuiOuiOui
Idéal pourAnalyse interactive approfondieAnalyse scriptée, distantCapture rapide, installation minimaleRecherche de paquets type grep

Utilisez Wireshark pour une analyse protocolaire interactive et approfondie sur votre poste. Utilisez tshark pour l’analyse scriptée et les captures à distance. Utilisez tcpdump quand Wireshark n’est pas installé et que vous avez besoin d’une capture rapide. Les trois outils partagent le même format de fichier pcap, capturez avec l’un et analysez avec l’autre.

Résolution de Problèmes

”Aucune interface trouvée” sous Linux

# Vérifier que dumpcap a les bonnes capacités
sudo setcap cap_net_admin,cap_net_raw=eip /usr/bin/dumpcap

# Vérifier que votre utilisateur appartient au groupe wireshark
groups $USER

# Si vous venez de vous ajouter, déconnectez-vous et reconnectez-vous
# Ou démarrez une nouvelle session :
newgrp wireshark

La capture perd des paquets sur des liens à haute vitesse

# Augmenter le tampon de capture (la valeur par défaut est souvent trop petite)
# Dans Wireshark : Options de Capture → Taille du tampon → définissez à 256 Mo
# Avec tshark :
tshark -i eth0 -B 256 -w /tmp/capture.pcapng

# Utilisez un filtre de capture pour réduire le volume
tshark -i eth0 -f "port 443" -B 256 -w /tmp/https_only.pcapng

Si vous continuez à perdre des paquets, utilisez dumpcap directement (moins de surcharge que tshark) ou passez à un équipement de capture dédié pour les captures haute vitesse soutenues.

Les grands fichiers de capture sont lents à ouvrir

# Diviser une grande capture en fichiers plus petits
editcap -c 100000 large_capture.pcapng split_capture.pcapng

# Utiliser tshark pour pré-filtrer et créer un fichier plus petit
tshark -r large_capture.pcapng -Y "http" -w http_only.pcapng

# Fusionner plusieurs fichiers de capture
mergecap -w merged.pcapng file1.pcapng file2.pcapng

Wireshark affiche des erreurs de checksum partout

Les cartes réseau modernes délèguent le calcul des checksums au matériel. Wireshark capture les paquets avant que la carte n’ajoute les checksums, donc ils semblent invalides. Désactivez la vérification des checksums :

Édition → Préférences → Protocoles → TCP → décochez “Valider le checksum TCP si possible”

Faites de même pour IPv4, UDP et les autres protocoles. C’est purement cosmétique — votre trafic réseau réel a des checksums corrects.

Pièges et Cas Particuliers

Capturer sur la mauvaise interface : Sur une machine avec plusieurs cartes réseau, vous pourriez capturer sur l’interface de gestion tandis que le trafic applicatif passe par une interface différente. Utilisez ip route get <destination> pour vérifier quelle interface gère le trafic vers votre cible.

Mode promiscuous vs mode normal : Par défaut, Wireshark active le mode promiscuous, capturant tous les paquets que la carte réseau voit (pas seulement ceux adressés à votre machine). Sur un réseau commuté, vous ne voyez que votre propre trafic et les broadcasts/multicasts sauf si vous configurez la mise en miroir de port sur le switch.

Limitations de la capture Wi-Fi : En Wi-Fi, vous ne voyez que le trafic de et vers votre propre machine sauf si vous utilisez le mode moniteur, qui nécessite un adaptateur compatible et désactive votre connexion Wi-Fi normale.

Horodatages des paquets : Wireshark utilise l’horloge de la machine de capture pour les horodatages. Si vous comparez des captures de deux machines, assurez-vous que leurs horloges sont synchronisées (NTP). Même quelques centaines de millisecondes de dérive rendent la corrélation d’événements entre captures trompeuse.

Tags VLAN : Si votre interface de capture est une sous-interface VLAN (par exemple eth0.100), les tags VLAN sont retirés avant que Wireshark ne les voie. Capturez sur l’interface parente (eth0) pour voir les tags VLAN.

Résumé

  • Wireshark capture et décode plus de 3000 protocoles — c’est l’outil de référence pour comprendre ce qui se passe sur votre réseau au niveau des paquets
  • Les filtres de capture (syntaxe BPF) réduisent la taille du fichier en filtrant avant l’enregistrement — utilisez-les toujours sur les réseaux chargés pour garder les captures gérables
  • Les filtres d’affichage (syntaxe Wireshark) vous permettent de creuser interactivement dans n’importe quel champ de protocole — maîtrisez ip.addr, tcp.port, tcp.analysis.* et dns.qry.name pour les dépannages les plus courants
  • Suivre le Flux TCP reconstitue les conversations complètes entre endpoints — indispensable pour déboguer les appels API, les flux d’authentification et les erreurs de protocole
  • Les Informations Expertes et les IO Graphs fournissent un diagnostic automatisé et une visualisation du trafic — commencez ici avant de plonger dans les paquets individuels
  • Le déchiffrement TLS fonctionne avec SSLKEYLOGFILE pour le trafic de votre propre navigateur — précieux pour déboguer les problèmes HTTPS sans proxy

Articles Connexes