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.

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.

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.

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

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.

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.

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.

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

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.

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

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.

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.

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.

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.