L'utilitaire tcpdump vous permet de capturer les paquets qui circulent sur votre réseau pour faciliter le dépannage du réseau. Voici plusieurs exemples d'utilisation de tcpdump avec différentes options. Le trafic est capturé en fonction d'un filtre spécifié. Il existe une variété d'options, notamment :
Options | Description |
---|---|
-D | Imprimer une liste des interfaces réseau. |
-i | Spécifiez une interface sur laquelle capturer. |
-c | Spécifiez le nombre de paquets à recevoir. |
-v, -vv, -vvv | Augmenter le niveau de détail (verbosité). |
-w | Écrire les données capturées dans un fichier. |
-r | Lire les données capturées à partir d'un fichier. |
Installation de l'utilitaire tcpdump
Sur la plupart des systèmes unix/linux, vous ne trouverez pas le package tcpdump déjà installé. Pour installer la dernière version, utilisez le gestionnaire de packages approprié sur votre système. Par exemple, dans le cas des serveurs CentOS/RHEL :
# yum install tcpdump
Exemples d'utilisation de tcpdump pour le dépannage du réseau
1. Afficher la liste des interfaces réseau
Pour imprimer une liste des interfaces réseau disponibles sur lesquelles tcpdump peut capturer des paquets :
# tcpdump -D 1.eth0 2.nflog (Linux netfilter log (NFLOG) interface) 3.nfqueue (Linux netfilter queue (NFQUEUE) interface) 4.any (Pseudo-device that captures on all interfaces) 5.lo [Loopback]
2. Capturer sur une interface spécifique
Comme le montre la commande 'tcpdump -D', pour chaque interface réseau, un numéro et un nom d'interface sont imprimés. Le nom ou le numéro de l'interface peut être fourni au -i flag pour spécifier une interface sur laquelle capturer. Par exemple, pour capturer les paquets sur l'interface eth0 :
# tcpdump -i 1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 01:26:51.118038 IP ec2-54-159-106-120.compute-1.amazonaws.com.48021 > geeklab.31297: Flags [S], seq 3960153353, win 26883, options [mss 1460,sac kOK,TS val 2229362922 ecr 0,nop,wscale 7], length 0 01:26:51.118072 IP geeklab.31297 > ec2-54-159-106-120.compute-1.amazonaws.com.48021: Flags [S.], seq 547340507, ack 3960153354, win 26847, optio ns [mss 8961,sackOK,TS val 5714985 ecr 2229362922,nop,wscale 7], length 0
Dans cet exemple, la sortie est continue jusqu'à ce qu'elle soit terminée en appuyant sur Ctrl + C.
3. Capturez un nombre spécifique de paquets uniquement
Pour quitter tcpdump après avoir reçu un nombre spécifique de paquets, utilisez le -c (count) option suivie du nombre de paquets à recevoir. L'exemple suivant capture deux paquets :
# tcpdump -i 1 -c 2 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 01:37:08.956549 IP 182.100.67.76.38819 > geeklab.ssh: Flags [P.], seq 542149092:542149176, ack 774431931, win 271, options [nop,nop,TS val 26493 51 ecr 6332468], length 84 01:37:08.956575 IP geeklab.ssh > 182.100.67.76.38819: Flags [.], ack 84, win 230, options [nop,nop,TS val 6332824 ecr 2649351], length 0 2 packets captured 6 packets received by filter 0 packets dropped by kernel
Comme illustré dans cet exemple, lorsque tcpdump termine la capture des paquets, il signale ce qui suit :
- paquets capturés :Il s'agit du nombre de paquets que tcpdump a reçus et traités.
- paquets reçus par filtre :Un filtre peut être spécifié sur la ligne de commande et seuls les paquets qui correspondent au filtre défini sont traités par tcpdump et comptés.
- paquets rejetés par le noyau :Il s'agit du nombre de paquets abandonnés en raison d'un manque d'espace tampon. Utilisez l'option -B pour définir la taille de la mémoire tampon.
4. Augmentez les détails (verbosité) de la sortie
Pour augmenter le détail (verbosité) de la sortie, utilisez le -v ou -vv pour une sortie encore plus détaillée, ou -vvv pour le niveau de sortie le plus détaillé :
# tcpdump –i 1 –v # tcpdump –i 1 -vv # tcpdump –i 1 –vvv
5. Capturez les données dans un fichier
Utilisation de l'utilitaire tcpdump avec le -w L'option vous permet d'écrire les données capturées dans un fichier. Cela permet aux données capturées d'être lues par d'autres outils d'analyse de réseau, tels que Wireshark. L'exemple suivant capture des données dans un fichier nommé capture.out :
# tcpdump –i 1 –v –c2 –w capture.out
6. lecture des données capturées
Vous pouvez également lire les données capturées à partir d'un fichier en utilisant le –r choix :
# tcpdump –r capture_file
Quelques exemples supplémentaires de la commande tcpdump
De nombreuses autres options et arguments peuvent être utilisés avec tcpdump. Voici quelques exemples spécifiques de la puissance de l'utilitaire tcpdump.
1. Afficher le trafic entre 2 hôtes
Pour afficher tout le trafic entre deux hôtes (représentés par les variables host1 et host2) :
# tcpdump host host1 and host2
2. Afficher uniquement le trafic provenant d'un hôte source ou de destination
Pour afficher le trafic provenant uniquement d'un hôte source (src) ou de destination (dst) :
# tcpdump src host # tcpdump dst host
3. Afficher le trafic pour un protocole spécifique
Indiquez le protocole comme argument pour afficher uniquement le trafic d'un protocole spécifique, par exemple tcp, udp, icmp, arp :
# tcpdump protocol
Par exemple pour afficher le trafic uniquement pour le trafic tcp :
# tcpdump tcp
4. Filtrage basé sur le port source ou destination
Pour filtrer en fonction d'un port source ou de destination :
# tcpdump src port ftp # tcpdump dst port http
L'utilitaire tcpdump accepte également les opérateurs booléens (AND, NOT, OR) et le regroupement d'opérateurs, ce qui vous permet de créer des filtres complexes pour capturer des données réseau.