tcpdump
À quoi il sert
tcpdump capture les paquets qui traversent une interface, s'appuyant sur la bibliothèque libpcap. Il affiche une ligne par paquet (adresses, ports, drapeaux TCP, numéros de séquence, taille) ou enregistre les paquets bruts dans un fichier (-w) que l'on relit ensuite (-r) ou que l'on ouvre dans Wireshark. Un filtre (syntaxe pcap-filter(7), compilée en programme BPF exécuté dans le noyau) ne retient que le trafic utile : host 172.16.20.5 and tcp port 8000, ou seulement les ouvertures et refus avec tcp[tcpflags] & (tcp-syn|tcp-rst) != 0.
Quand le choisir
Quand les autres outils (ss, nc, curl, journaux) ne suffisent plus à trancher : savoir si un paquet arrive vraiment sur une interface, s'il reçoit une réponse, ou ce qu'un client envoie réellement. Il est présent ou installable sur tous les serveurs Linux, sans interface graphique, ce qui en fait l'outil de capture des serveurs ; Wireshark sert ensuite à analyser confortablement les fichiers sur un poste.
Points d'attention
- Il exige des privilèges (
CAP_NET_RAW,CAP_NET_ADMIN), en pratiquesudo. Il abandonne ensuite ses droits (-Z, comptetcpdumppar défaut sur Debian et Ubuntu). - Toujours
-n, pour ne pas déclencher de résolutions DNS qui ralentissent la capture et polluent ce que l'on observe. - Toujours un filtre et une limite (
-c,-G/-Wpour des fichiers tournants) : une capture sans filtre sur une machine active perd des paquets (« dropped by kernel ») et remplit le disque. - Une capture contient des données en clair, parfois personnelles ou secrètes : tronquez les paquets (
-s), protégez et supprimez les fichiers. - Sur Linux,
-i anycapture toutes les interfaces ; les paquets entrants sont vus avant le pare-feu local, les sortants après la pile.
Par où commencer
La leçon Diagnostiquer un problème réseau, qui explique les filtres utiles et la lecture d'une ligne TCP, puis les pages de manuel tcpdump(1) et pcap-filter(7), riches en exemples.