Exemples de tcpdump sous Linux

Lorsque le réseau ne fonctionne pas correctement ou que vous avez simplement besoin de comprendre ce qui est transmis par les câbles, tcpdump vient à votre secours. C'est comme un stéthoscope pour votre serveur, un outil qui vous permet d'« écouter » le trafic réseau en temps réel. Il peut sembler compliqué à première vue, mais en réalité, c'est un assistant très puissant et fiable pour les administrateurs système et tous les utilisateurs Linux curieux.

Govee Many GEOsnubia Many GEOs

Dans cet article, nous n'approfondirons pas la théorie des réseaux. Nous passerons plutôt directement à la pratique et examinerons des exemples concrets de commandes que vous pourrez utiliser dans votre travail quotidien. Vous apprendrez à filtrer les paquets par adresses IP, ports et types de protocoles afin de trouver rapidement les informations dont vous avez besoin dans la masse de données réseau.

Nos exemples vous aideront à diagnostiquer les problèmes de connexion, à surveiller les activités suspectes ou simplement à satisfaire votre curiosité sur la façon dont les programmes communiquent entre eux. Commençons par les commandes les plus simples et passons progressivement à des scénarios d'utilisation plus avancés.

Tcpdump est un utilitaire Linux utile pour écouter et analyser le trafic réseau, souvent utilisé par les administrateurs et les développeurs pour comprendre ce qui se passe sur le réseau : par exemple, pourquoi un service ne fonctionne pas, qui charge le canal ou s'il y a des connexions suspectes. À l'aide de commandes simples, vous pouvez filtrer le trafic par IP, ports, protocoles ou interfaces, le sauvegarder pour une analyse ultérieure ou le consulter en temps réel. C'est comme se connecter à une conversation entre des ordinateurs et comprendre de quoi ils parlent.

Installation

Stylewe WWNoracora WW

La plupart des développeurs de systèmes d'exploitation basés sur Linux incluent l'utilitaire tcpdump dans la liste des programmes préinstallés, mais si, pour une raison quelconque, il n'est pas présent dans votre distribution, vous pouvez toujours le télécharger et l'installer via « Terminal ». Si votre système d'exploitation est basé sur Debian, c'est-à-dire Ubuntu, Linux Mint, Kali Linux et autres, vous devez exécuter cette commande :

sudo apt install tcpdump

Lors de l'installation, vous devez entrer un mot de passe. Veuillez noter qu'il n'apparaît pas lorsque vous le saisissez. Vous devez également entrer le caractère « D » et appuyez sur Entrée.

Si vous utilisez Red Hat, Fedora ou CentOS, la commande d'installation sera la suivante :

sudo yam install tcpdump

Une fois l'utilitaire installé, vous pouvez immédiatement l'utiliser. Ceci et bien d'autres choses seront expliqués plus loin dans le texte.

Syntaxe

nubia Many GEOsHomestyler WW

Comme toute autre commande, tcpdump a sa propre syntaxe. En la connaissant, vous pourrez définir tous les paramètres nécessaires qui seront pris en compte lors de l'exécution de la commande. La syntaxe est la suivante :

tcpdump options -i interface filtres

Lorsque vous utilisez la commande, vous devez obligatoirement spécifier l'interface à surveiller. Les filtres et les options ne sont pas des variables obligatoires, mais ils permettent une configuration plus flexible.

Options

Même s'il n'est pas obligatoire d'indiquer l'option, il est tout de même nécessaire d'énumérer toutes celles qui sont disponibles. Le tableau ne présente pas la liste complète, mais seulement les plus populaires, qui suffisent largement pour résoudre la plupart des tâches.

Option Définition
-A Permet de trier les paquets au format ASCII
-l Ajoute une fonction de défilement
-i Après la saisie, vous devez spécifier l'interface réseau qui sera surveillée. Pour commencer à surveiller toutes les interfaces, entrez le mot « any » après l'option
-c Termine le processus de suivi après avoir vérifié le nombre de paquets spécifié
-w Génère un fichier texte avec le rapport de vérification
-e Affiche le niveau de connexion Internet du paquet de données
-L Affiche uniquement les protocoles pris en charge par l'interface réseau spécifiée
-C Crée un autre fichier lors de l'enregistrement du paquet si sa taille est supérieure à celle spécifiée
-r Ouvre le fichier en lecture qui a été créé à l'aide de l'option -w
-j Le format TimeStamp sera utilisé pour enregistrer les paquets
-J Permet de visualiser tous les formats disponibles TimeStamp
-G Sert à créer un fichier avec les journaux. Cette option nécessite également d'indiquer une valeur temporelle, à l'expiration de laquelle un nouveau journal sera créé
-v, -vv, -vvv En fonction du nombre de caractères dans l'option, la sortie de la commande sera plus détaillée (l'augmentation est directement proportionnelle au nombre de caractères)
-f Dans la sortie, le nom de domaine des adresses IP
-F Permet de lire les informations non pas à partir de l'interface réseau, mais à partir du fichier spécifié
-D Affiche toutes les interfaces réseau qui peuvent être utilisées
-n Désactive l'affichage des noms de domaine
-Z Définit l'utilisateur sous le compte duquel tous les fichiers seront créés
-K Ignorer l'analyse des sommes de contrôle
-q Démonstration d'informations succinctes
-H Permet de détecter les en-têtes 802.11s
-I Utilisé lors de la capture de paquets en mode moniteur

Après avoir examiné les options, nous passerons directement à leurs applications un peu plus bas. Pour l'instant, nous allons nous intéresser aux filtres.

Filtres

Comme indiqué au début de l'article, vous pouvez ajouter des filtres à la syntaxe tcpdump. Nous allons maintenant examiner les plus populaires d'entre eux :

Filtre Définition
host Sert à indiquer le nom de l'hôte),
net Indique l'adresse IP du sous-réseau et du réseau
ip Sert à indiquer l'adresse du protocole
src Affiche les paquets qui ont été envoyés à partir de l'adresse spécifiée
dst Affiche les paquets qui ont été reçus à l'adresse indiquée
si les pages ne se chargent dans aucun navigateur et que des problèmes de connexion surviennent également dans d'autres programmes dotés d'un navigateur intégré, il convient de vérifier les paramètres réseau. Outre ce qui précède, il convient d'envisager la possibilité de modifier le DNS. Ainsi, si vous avez précédemment modifié les adresses DNS dans le système ou dans les paramètres du routeur, essayez de les rétablir à leur valeur d'origine. Ceux qui, au contraire, n'ont pas modifié le DNS peuvent remplacer les adresses fournies par le fournisseur d'accès par d'autres. Filtrage selon l'un des protocoles
port Affiche les informations relatives à un port spécifique
and, or Sert à combiner plusieurs filtres dans la commande
less, greater Suppression des programmes malveillants ;

Tous les filtres ci-dessus peuvent être combinés entre eux, de sorte que dans la sortie de la commande, vous ne verrez que les informations que vous souhaitez voir. Pour mieux comprendre l'utilisation des filtres ci-dessus, il convient de donner des exemples.

Exemples d'utilisation

Noracora WWNoracora WW

Voici quelques options couramment utilisées pour la commande tcpdump. Il est impossible de toutes les énumérer, car leurs variations peuvent être infinies.

Affichage de la liste des interfaces

Il est recommandé à chaque utilisateur de vérifier au préalable la liste de toutes ses interfaces réseau qui peuvent être suivies. D'après le tableau ci-dessus, nous savons que pour cela, il faut utiliser l'option -D, pour cela, exécutez la commande suivante dans le terminal :

sudo tcpdump -D

Exemple :

Comme vous pouvez le constater, l'exemple comporte huit interfaces qui peuvent être consultées à l'aide de la commande tcpdump. L'article donnera des exemples avec ppp0, vous pouvez également utiliser n'importe quelle autre option.

Capture de trafic classique

Si vous souhaitez suivre une seule interface réseau, vous pouvez le faire à l'aide de l'option -i. N'oubliez pas d'indiquer le nom de l'interface après l'avoir saisie. Voici un exemple d'exécution d'une telle commande :

sudo tcpdump -i ppp0

Remarque : avant la commande elle-même, vous devez saisir « sudo », car elle nécessite des droits de super-utilisateur.

Exemple :

Remarque : après avoir appuyé sur Entrée dans le « Terminal », les paquets interceptés s'affichent en continu. Pour arrêter leur flux, vous devez appuyer sur la combinaison de touches Ctrl+C.

Si vous exécutez la commande sans options ni filtres supplémentaires, vous verrez s'afficher le format suivant pour les paquets suivis :

22:18:52.597573 IP vrrp-topf2.p.mail.ru. https > 10.0.6.67.35482 : Flags [P.], seq 1:595, ack 1118, win 6494, options [nop,nop,TS val 257060077 ecr 697597623], length 594

Où la couleur est mise en évidence :

En bleu Heure de réception du paquet
En orange Version du protocole
Vert Adresse de l'expéditeur
Violet Adresse du destinataire
Gris Informations supplémentaires sur tcp
Rouge Taille du paquet (affichée en octets)

Cette syntaxe permet d'afficher dans la fenêtre « Terminal » sans utiliser d'options supplémentaires.

Capture du trafic avec l'option -v

Comme le montre le tableau, l'option -v permet d'augmenter la quantité d'informations. Prenons un exemple. Vérifions la même interface :

sudo tcpdump -v -i ppp0

Exemple :

On peut remarquer ici que la ligne suivante est apparue dans la sortie :

IP (tos 0x0, ttl 58, id 30675, offset 0, flags [DF], proto TCP (6), length 52

Où la couleur est mise en évidence :

En orange Version du protocole
En bleu Durée de vie du protocole
Vert Longueur du titre du champ
Violet Version du paquet tcp
En rouge Taille du paquet (affichée en octets)

Vous pouvez également ajouter l'option suivante à la syntaxe de la commande -vv ou -vvv, ce qui permettra d'augmenter encore plus le volume d'informations affichées à l'écran.

Options -w et -r

Le tableau des options mentionnait la possibilité d'enregistrer toutes les données affichées dans un fichier séparé afin de pouvoir les consulter ultérieurement. Cette option est disponible sous -w. Son utilisation est assez simple, il suffit de l'indiquer dans la commande, puis d'entrer le nom du futur fichier avec l'extension «.pcap». Prenons un exemple :

sudo tcpdump -i ppp0 -w file.pcap

Exemple :

Remarque : lors de l'enregistrement des journaux dans le fichier, aucun texte n'apparaît à l'écran du « Terminal ».

Lorsque vous souhaitez afficher la sortie enregistrée, vous devez utiliser l'option -r, après quoi il faut écrire le nom du fichier précédemment enregistré. Elle s'applique sans autres options ni filtres :

sudo tcpdump -r file.pcap

Exemple :

Ces deux options sont idéales lorsque vous devez enregistrer de grands volumes de texte pour une analyse ultérieure.

Filtrage par IP

D'après le tableau des filtres, nous savons que dst permet d'afficher sur l'écran de la console uniquement les paquets qui ont été reçus par l'adresse indiquée dans la syntaxe de la commande. Il est ainsi très pratique de consulter les paquets reçus par votre ordinateur. Pour cela, il suffit d'indiquer votre adresse IP dans la commande :

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Exemple :

Comme vous pouvez le constater, en plus de dst, dans la commande, nous avons également spécifié le filtre ip. En d'autres termes, nous avons demandé à l'ordinateur, lors de la sélection des paquets, de prêter attention à leur adresse IP et non à d'autres paramètres.

Il est possible de filtrer les paquets envoyés par IP. Dans l'exemple, nous utilisons à nouveau notre IP. Cela signifie que nous allons maintenant suivre les paquets envoyés depuis notre ordinateur vers d'autres adresses. Pour ce faire, il faut exécuter la commande suivante :

sudo tcpdump -i ppp0 ip src 10.0.6.67

Exemple :

Comme vous pouvez le constater, dans la syntaxe de la commande, nous avons remplacé le filtre dst par src, vous demandez ainsi à la machine de rechercher l'expéditeur par IP.

Filtrage par HOST

Par analogie avec l'IP dans la commande, nous pouvons spécifier un filtre host, pour filtrer les paquets avec l'hôte qui vous intéresse. C'est-à-dire que dans la syntaxe, au lieu de l'adresse IP de l'expéditeur/destinataire, il faudra indiquer son hôte. Cela se présente comme suit :

sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com

Exemple :

Sur l'image, vous pouvez voir que « Terminal » affiche uniquement les paquets qui ont été envoyés depuis notre IP vers l'hôte google.com. Comme vous pouvez le comprendre, à la place de l'hôte google, vous pouvez en saisir n'importe quel autre.

Comme pour le filtrage par IP, dans la syntaxe dst peut être remplacé par src, pour voir les paquets envoyés à votre ordinateur :

sudo tcpdump -i ppp0 src host google-public-dns-a.google.com

Remarque : le filtre host doit être placé après dst ou src, sinon la commande renverra une erreur. Dans le cas d'un filtrage par IP, au contraire, dst et src sont placés avant le filtre ip.

Utilisation des filtres and et or

Si vous avez besoin d'utiliser plusieurs filtres à la fois dans une seule commande, vous devez utiliser le filtre and ou ou (selon le cas). En indiquant les filtres dans la syntaxe et en les séparant par ces opérateurs, vous les « forcez » à fonctionner comme un seul. Voici un exemple :

sudo tcpdump -i ppp0 ip dst 95.47.144.254 or ip src 95.47.144.254

Exemple :

La syntaxe de la commande indique que nous voulons afficher à l'écran « Terminal » tous les paquets qui ont été envoyés à l'adresse 95.47.144.254 et les paquets reçus par cette même adresse. Vous pouvez également modifier certaines variables dans cette expression. Par exemple, remplacer IP par HOST ou remplacer directement les adresses elles-mêmes.

Filtre port et portrange

Filtre port est parfait lorsque vous avez besoin d'obtenir des informations sur les paquets avec un port spécifique. Ainsi, si vous souhaitez uniquement voir les réponses ou les requêtes DNS, vous devez indiquer le port 53 :

sudo tcpdump -vv -i ppp0 port 53

Exemple :

Si vous souhaitez afficher les paquets http, vous devez entrer le port 80 :

sudo tcpdump -vv -i ppp0 port 80

Exemple :

Entre autres, il est possible de suivre immédiatement la plage de ports. Pour cela, utilisez le filtre portrange:

essayez de vérifier le bon fonctionnement de la mémoire vive à l'aide d'outils logiciels. Pour ce faire, vous pouvez utiliser des outils intégrés ou des applications tierces spécialisées, comme l'expliquent plus en détail nos auteurs dans des guides séparés. Les applications installées et fonctionnant en arrière-plan ont une influence considérable sur les performances de la mémoire vive, car elles y enregistrent les données dont elles ont besoin pour fonctionner. En règle générale, les processus en arrière-plan sont destinés à afficher automatiquement des notifications, à lancer d'autres processus en arrière-plan (par exemple, la mise à jour d'un programme spécifique). D'après le tableau avec les filtres, nous savons qu'ils servent à extraire des paquets de données plus importants (

Comme vous pouvez le constater, en association avec le filtre portrange il n'est pas nécessaire d'indiquer des options supplémentaires. Il suffit de définir la plage.

Filtrage par protocoles

Vous pouvez également afficher uniquement le trafic qui correspond à un certain protocole. Pour ce faire, vous devez utiliser le nom de ce protocole comme filtre. Prenons un exemple udp:

sudo tcpdump -vvv -i ppp0 udp

Exemple :

Comme vous pouvez le voir sur l'image, après avoir exécuté la commande dans « Terminal » seuls les paquets avec le protocole udp. En conséquence, vous pouvez effectuer un filtrage selon d'autres critères, par exemple arp:

sudo tcpdump -vvv -i ppp0 arp

ou tcp:

sudo tcpdump -vvv -i ppp0 tcp

Filtre net

Opérateur net aide à filtrer les paquets en se basant sur leur désignation réseau. Son utilisation est aussi simple que celle des autres : il suffit d'indiquer l'attribut net, puis d'entrer l'adresse réseau. Voici un exemple d'une telle commande :

sudo tcpdump -i ppp0 net 192.168.1.1

Exemple :

Filtrage par taille de paquet

Nous n'avons pas encore examiné deux filtres intéressants : less et greater. Le tableau des filtres nous indique qu'ils servent à afficher les paquets de données plus (less ou moins (greater de la taille spécifiée après la saisie de l'attribut.

Supposons que nous voulons uniquement surveiller les paquets qui ne dépassent pas 50 bits, la commande sera alors la suivante :

sudo tcpdump -i ppp0 less 50

Exemple :

Maintenant, affichons dans « Terminal » dont les dimensions sont supérieures à 50 bits :

sudo tcpdump -i ppp0 greater 50

Exemple :

Comme vous pouvez le constater, ils s'utilisent de la même manière, la seule différence réside dans le nom du filtre.

Comme vous pouvez le constater, tcpdump est un outil extrêmement puissant pour ceux qui ont besoin d'examiner en détail les interactions réseau. Il permet de voir en temps réel ce qui est réellement transmis par câble ou par voie hertzienne, transformant ainsi des problèmes réseau abstraits en données concrètes pouvant être analysées.

Commencez par des commandes simples, telles que le filtrage par port ou par adresse IP. Peu à peu, avec la pratique, vous serez en mesure de créer des filtres plus complexes afin de capturer précisément les paquets souhaités. N'ayez pas peur d'expérimenter sur votre machine de test : c'est le meilleur moyen de comprendre comment tout cela fonctionne.

En fin de compte, savoir utiliser tcpdump est un super pouvoir pour un administrateur système ou un développeur. Cela vous donne une indépendance dans le diagnostic des problèmes, qu'il s'agisse d'une défaillance de connexion, d'une activité suspecte ou simplement du désir de comprendre la logique de fonctionnement d'un service réseau particulier. Cet outil deviendra un assistant fiable dans votre arsenal.

Govee Many GEOsGovee Many GEOsnubia Many GEOsnubia Many GEOsHomestyler WWHomestyler WW
Quelle est la fonction que vous considérez comme la plus importante dans un nouveau smartphone ??
Share to friends
Nikolay Vasiliev

Programmeur et grand amateur de tout ce qui touche au code et à la technologie. Je suis spécialisé dans le développement d'applications mobiles et d'intelligence artificielle. Sur ce site, je partage mes connaissances et mon expérience, et je raconte aussi comment les technologies fonctionnent de l'intérieur.

Rate author
Appliances-News.com
Add a comment