Guide tcpdump sur Ubuntu : capture et analyse réseau

Introduction et prise en main

L’analyse de trames et le dépannage réseau sous Linux reposent quasi systématiquement sur la maîtrise de tcpdump. Véritable couteau suisse en ligne de commande, cet outil offre une visibilité immédiate sur les flux transitant par la machine. Plutôt que de parcourir une page de manuel particulièrement dense, ce guide propose une approche concrète et progressive : inventaire des interfaces, filtrage précis en temps réel et manipulation de fichiers PCAP exploitables ultérieurement.

Déploiement de tcpdump et exploration des interfaces réseau

Avant de débuter l’interception de paquets, mettons en place l’environnement en installant tcpdump ainsi que l’utilitaire curl qui servira à générer du trafic de test.

Installation des paquets tcpdump et curl via apt-get

L’exécution de tcpdump --version permet de vérifier le bon fonctionnement du binaire et de contrôler la version sous-jacente de la bibliothèque libpcap.
En tant qu’analyseur en mode console, tcpdump intercepte à la volée les datagrammes franchissant les couches réseau et décortique les entêtes de chaque protocole avec une grande précision.
⚙️ [Options fondamentales]

-i : Sélectionne l’interface réseau sur laquelle écouter.
-n : Désactive la résolution DNS inverse pour afficher directement les adresses IP numériques.
-nn : Empêche la traduction automatique des adresses IP ainsi que des numéros de port en noms de services.
-c : Définit un seuil maximal de paquets à capturer avant d’interrompre automatiquement le processus.
-v : Augmente la verbosité de sortie (TTL, identifiants de paquets, drapeaux IP). Les niveaux -vv ou -vvv offrent un niveau de détail encore plus poussé.
-w : Enregistre le flux brut directement dans un fichier au format pcap, lisible notamment dans Wireshark.
-r : Lit et restitue sur le terminal les données contenues dans une capture pcap préexistante.
-A : Affiche la charge utile (payload) des paquets directement sous forme de texte brut ASCII.
-X : Fournit une vue juxtaposée des en-têtes et du payload en hexadécimal et en ASCII.
-D : Énumère l’ensemble des interfaces réseau disponibles pour l’écoute sur le système hôte.

Contrôle de la version installée de tcpdump

L’appel de tcpdump -D dresse un inventaire numéroté de toutes les interfaces réseau détectées par le noyau, en précisant leur statut de disponibilité.
Ce relevé met notamment en évidence l’adaptateur principal eth0, le pseudo-périphérique virtuel any (idéal pour écouter l’ensemble des canaux en parallèle) ainsi que la boucle locale lo. Ces identifiants servent ensuite de paramètres directs à l’option -i.

Affichage des interfaces réseau avec tcpdump -D

Première capture sur l’interface de boucle locale (loopback)

Pour observer une session de capture élémentaire sans dépendance externe, envoyons en tâche de fond une série d’échos ICMP vers l’adresse locale via ping -c 4 127.0.0.1 > /dev/null 2>&1 &.

Génération de trafic ICMP local en arrière-plan

L’instruction tcpdump -i lo -c 4 -n cible spécifiquement la boucle locale (lo) pour recueillir 4 datagrammes (-c 4), tout en conservant l’affichage des adresses sous forme numérique (-n).
La sortie confirme la bonne interception de 4 paquets ICMP (requêtes et réponses d’écho) échangés par 127.0.0.1, détaillant l’horodatage précis, les numéros d’ordre et la taille de chaque trame.

Capture du trafic ICMP sur l’interface lo avec tcpdump

Filtrage avancé du flux par protocole et numéro de port

Dans un contexte de production saturé de paquets, l’isolation ciblée s’avère indispensable. Déclenchons une requête HTTPS en arrière-plan avec curl -s https://example.com > /dev/null 2>&1 & pour stimuler le port 443.

Déclenchement d’une requête HTTPS en arrière-plan avec curl

Grâce à la commande tcpdump -i any -c 4 -nn 'tcp port 443', l’écoute s’étend à tous les adaptateurs (-i any), conserve les adresses et ports au format numérique (-nn) et n’enregistre que 4 segments (-c 4) correspondant au filtre 'tcp port 443'.
Le rapport met en évidence les échanges sécurisés entre le serveur web distant (172.66.147.243.443) et notre machine locale (172.18.0.2), en décortiquant les drapeaux TCP, les numéros de séquence, les acquittements (ACK) ainsi que la longueur des données transmises.

Filtrage et capture des paquets TCP sur le port 443

Poursuivons l’expérimentation en isolant un protocole déterminé. Simulons une émission de requêtes vers le résolveur public de Google via ping -c 2 8.8.8.8 > /dev/null 2>&1 &.

Émission de pings vers un DNS public en arrière-plan

En exécutant tcpdump -i any -c 2 -n 'icmp', l’outil concentre son attention uniquement sur le protocole ICMP ('icmp') sans tenter de résolution inverse (-n), en s’arrêtant après 2 paquets (-c 2).
On retrouve clairement les paquets d’écho échangés entre l’hôte (172.18.0.2) et la passerelle distante (8.8.8.8), accompagnés de leurs identifiants (id), compteurs de séquence (seq) et longueurs de charge.

Capture sélective du trafic ICMP avec tcpdump

Exportation PCAP et inspection minutieuse de la charge utile

Dans le cadre d’audits ou d’analyses post-mortem, l’affichage console immédiat ne suffit pas : la sauvegarde brute sur disque devient nécessaire. Produisons quelques paquets de test avec ping -c 3 127.0.0.1 > /dev/null 2>&1 &.

Génération de trafic témoin pour l’enregistrement PCAP

Grâce à tcpdump -i lo -c 3 -w /tmp/traffic_sample.pcap, le flux collecté sur l’interface lo est directement consigné au format standard pcap dans le fichier /tmp/traffic_sample.pcap.
Cette méthode évite toute altération visuelle sur l’écran et produit une trace fidèle, parfaitement adaptée pour être importée ultérieurement dans Wireshark ou archivée pour un examen approfondi.

Sauvegarde du flux brut dans un fichier pcap

Pour relire cette trace sans quitter le terminal, lançons tcpdump -r /tmp/traffic_sample.pcap -n -X.
Le paramètre -r charge le fichier enregistré, tandis que le commutateur -X déploie simultanément la représentation hexadécimale et la traduction ASCII des paquets. Cette vue binaire révèle le contenu réel de la charge utile des messages ICMP, facilitant l’investigation sur d’éventuelles anomalies applicatives.

Relecture et décodage hexadécimal/ASCII d’un fichier PCAP

Une fois l’exercice terminé, supprimons le fichier temporaire généré afin de maintenir l’espace disque propre à l’aide de rm -f /tmp/traffic_sample.pcap.

Suppression du fichier de capture temporaire

Ce tour d’horizon démontre l’efficacité et la flexibilité de tcpdump pour capturer et auditer les trames sous Ubuntu. En combinant judicieusement les sélecteurs d’interfaces, les filtres d’expression et les formats d’exportation, vous disposez d’un levier puissant pour diagnostiquer rapidement les dysfonctionnements réseau sur vos serveurs Linux.