Exemples pratiques de commande Ping sous Linux

Un outil indispensable pour l’administration réseau est la commande Ping sous Linux. Vous avez peut-être déjà utilisé ping pour des dépannages de base, mais que fait exactement cette commande?

La commande ping envoie des demandes de protocole de contrôle Internet (ICMP) à des hôtes distants ou locaux et attend une réponse. L’absence de réponse pourrait indiquer un problème avec la connexion ou les hôtes eux-mêmes.

Lisez la suite et explorez les façons pratiques d’utiliser la commande ping sous Linux!

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir un ordinateur Linux avec une connexion Internet. Ce tutoriel utilise un ordinateur Ubuntu 20.04.

Assurez-vous également d’avoir déjà ouvert une session terminal sur votre ordinateur Linux.

Vérification de la connectivité du réseau local

Imaginez que vous développez une application web. Le test échoue lorsque vous essayez d’accéder à l’application via l’adresse de bouclage de l’hôte (127.0.0.1). Avant de vous arracher les cheveux à dépanner l’application, assurez-vous que le protocole TCP/IP fonctionne en interne en utilisant la commande ping.

Les adresses de bouclage par défaut sont 127.0.0.1 et 0:0:0:0:0:0:0:1 (ou ::1) pour IPv4 et IPv6, respectivement.

Pour vérifier la connectivité de l’adresse de bouclage, exécutez la commande ping suivie de l’adresse de bouclage dans le terminal. Cette commande illustre l’utilisation la plus basique de la commande ping sous Linux.

ping 127.0.0.1

Et si la boucle fonctionne correctement, vous devriez voir une sortie similaire à la capture d’écran ci-dessous.

Pinging the loopback address (127.0.0.1)

Alternativement, faire un ping sur le nom d’hôte localhost devrait donner le même résultat car il se résout par défaut à l’adresse de bouclage.

Pinging the loopback address (localhost)

Pour terminer la commande ping, appuyez sur CTRL+C dans le terminal. Sinon, la commande ping s’exécutera en continu.

Remarque : Ne pressez pas CTRL+Z pour arrêter la commande ping. Ce faisant, la commande s’arrêtera, mais le processus restera en cours d’exécution en arrière-plan.

Terminating the ping command in Linux

Comprendre la sortie de la commande Ping sous Linux

Avant d’aller plus loin, il serait bénéfique de comprendre explicitement la sortie au lieu de l’interpréter simplement comme « ça fonctionne ». Référez-vous à l’image ci-dessous et à la décomposition des valeurs qui suit.

Ping command output
  • A (bytes) – Shows the ICMP echo request (packet) size in bytes.
  • B (from) – Shows the target host’s IP address from where the ping command receives the response.
  • C (icmp_seq) – Indicates the order of packet transmission. As you can see, ping sends the ICMP requests in sequence. The value shows icmp_seq=N, where N is the order number.
  • D (TTL) – Shows the ICMP request’s Time-To-Live (TTL) value. The default value is 64, which means that the request can only live up to a maximum of 64 hops and will expire after. The maximum value possible is 255.
  • E (time) – The total time (milliseconds) elapsed the request reached the destination and circled back to the source. This value is also known as the Round Trip Time (RTT). Notice that the time values are less than 0.1 milliseconds in this example since the target is the same machine. The time value increases naturally when the ping destinations are remote or have an internet address.
  • F (statistics) – Shows the summary and statistics of the ping command results. The summary shows the number of packets transmitted and received, packet loss percentage, and the total time. The bottom line shows the minimum, average (mean value), maximum, and standard deviation of the total RTT.

Forcer la version du protocole Internet

Le command ping utilise IPv4 par défaut. Mais que faire si vous testez la compatibilité de votre application avec IPv6 ? Pour forcer la commande ping à utiliser IPv6, vous devez spécifier l’option -6 dans votre commande ping sous Linux, comme indiqué dans le code ci-dessous.

ping -6 localhost

Comme vous pouvez le voir ci-dessous, la réponse indique que la réponse provient de l’adresse de bouclage IPv6 (::1).

Pinging the IPv6 loopback address

Au lieu de l’option -6, l’option -4 force ping à utiliser IPv4. Cependant, étant donné que ping utilise IPv4 par défaut, vous n’avez généralement pas besoin de spécifier l’option -4.

Limitez le nombre de réponses

Dans les exemples précédents, vous deviez appuyer sur CTRL+C pour terminer la commande ping car elle s’exécutait en continu autrement.

L’option -c vous permet de spécifier le nombre de réponses que la commande ping doit recevoir avant de s’arrêter. Pourquoi utiliser cette option ? Dans certains cas, vous voudrez peut-être tester comment votre système réagit à 10, 100, 1000 paquets ICMP, et ainsi de suite.

Exécutez la commande suivante pour envoyer cinq paquets ICMP à l’hôte cible. Remplacez 5 par le nombre de réponses ICMP à recevoir avant de s’arrêter.

ping -c 5 localhost

Comme vous pouvez le voir ci-dessous, la commande ping s’est arrêtée après la cinquième demande (icmd_seq=5), et vous n’avez pas eu besoin d’appuyer sur CTRL+C pour la terminer.

Ping with a limited request count

Ajustement de l’intervalle de demande

Supposons que vous souhaitiez tester la connexion réseau entre deux appareils, et que l’un d’eux a une bande passante faible. Dans ce cas, vous pouvez augmenter l’intervalle entre chaque demande afin que le deuxième appareil ait suffisamment de temps pour traiter le paquet ICMP en cours.

La commande ping envoie la requête ICMP suivante une seconde après avoir terminé la précédente par défaut. Pour ajuster le délai, vous devez spécifier l’option -i suivie de la valeur de délai en secondes.

Par exemple, exécutez la commande ping ci-dessous pour envoyer cinq requêtes ICMP avec un intervalle de deux secondes entre chaque requête.

ping -c 5 -i 2 localhost

Un autre exemple, exécutez la commande ping ci-dessous pour envoyer cinq requêtes ICMP avec un intervalle d’une demi-seconde entre chaque requête.

ping -c 5 -i 0.5 localhost

Comparer les résultats des deux commandes ayant des intervalles différents montre la différence entre les valeurs de time totales.

Comparing ping results with different intervals

Simulation d’une attaque par déni de service

A ping flood is a type of Denial of Service (DoS) attack in which the attacker attempts to overwhelm a targeted device with ICMP packets. The attack aims to overwhelm the targeted machine to respond to so many requests that it becomes overloaded and unavailable to legitimate users.

Vous pouvez simuler une attaque par déni de service pour tester la réaction de votre système face à une attaque. Ne vous inquiétez pas, cependant. La simulation de déni de service par ping est contrôlée, et vous pouvez l’arrêter à tout moment en appuyant sur CTRL+C.

Exécutez la commande suivante sur votre machine locale pour voir combien de requêtes votre appareil peut traiter par seconde. L’option -f signifie envoyer plusieurs paquets ping rapidement et sans limite arbitraire.

Remplacez localhost par l’adresse IP ou le nom d’hôte de l’application que vous souhaitez tester. Cet exemple simule le déni de service par ping uniquement sur l’hôte local. Laissez la commande ping s’exécuter pendant environ cinq secondes, puis appuyez sur CTRL+C pour terminer.

La commande ping -f nécessite que vous soyez l’utilisateur root ou que vous disposiez des privilèges sudo.

ping -f localhost

Comme vous pouvez le voir ci-dessous, la commande ping a réussi à envoyer et recevoir 124 685 paquets ICMP en 4276 millisecondes avec 0% de perte de paquets. Plutôt bon, hein ? Mais, dans un cas d’utilisation réelle, vous verrez une certaine perte de paquets. La perte de paquets est inévitable car le réseau n’est pas parfait.

Simulating a ping flood attack

Vérification de la connectivité Internet

Tout le monde utilise Internet d’une manière ou d’une autre, n’est-ce pas ? Supposons que vous essayiez de charger un site Web en utilisant votre navigateur, mais que le temps de chargement de la page semble lent. Le symptôme indiquerait que la résolution DNS fonctionne, mais que quelque chose affecte la vitesse du réseau.

Diagnostiquer le problème sans outils tiers inclurait la commande ping. L’utilisation de la commande est la même que lorsque vous testez la connectivité du réseau local. Mais au lieu de cibler l’adresse de bouclage, vous spécifierez une IP publique ou une adresse web.

Exécutez la commande ci-dessous pour pinguer un site web public externe. Remplacez adamtheautomator.com par une autre adresse web comme vous le souhaitez.

ping -c 5 adamtheautomator.com

D’entrée de jeu, vous remarquerez que la valeur du temps est relativement plus élevée que lorsque vous pinguez l’hôte local. Cette augmentation du temps passé est due au fait que l’adresse cible adamtheautomator.com n’est pas sur le même hôte et même pas sur le même réseau.

Dans les étapes précédentes, votre commande ping a réussi, mais dans l’utilisation réelle, il arrive parfois que la commande ping échoue pour de nombreuses raisons possibles.

Voici quelques erreurs courantes et comment les résoudre.

  • hôte de destination injoignable – Cette erreur signifie qu’il n’y a pas de route vers l’hôte de destination. Cette erreur peut se produire si l’hôte ou le domaine est hors service.
  • Requête expirée – Cette erreur signifie que la requête vers l’hôte de destination a pris trop de temps (plus de 4 secondes ou 4000 millisecondes), et la connexion a expiré. Cette erreur peut se produire si l’hôte de destination est trop occupé pour répondre, si un pare-feu bloque la connexion, ou en cas de défaillance du matériel réseau (câble, routeur, etc.).
  • Hôte inconnu – Cette erreur signifie que le DNS ne peut pas résoudre le nom d’hôte en une adresse IP. Vérifiez que vous avez saisi le nom d’hôte correctement. Si vous soupçonnez que votre routeur ne fonctionne peut-être pas correctement, essayez de le redémarrer.
  • TTL expiré en transit – Cette erreur signifie que la requête ICMP a expiré avant d’atteindre sa destination. Votre paquet ping se réduit à zéro (0) avant d’atteindre l’hôte de destination. Dans la plupart des cas, une mauvaise configuration de votre table de routage peut provoquer cette erreur. Considérez vérifier votre table de routage pour voir s’il y a un problème.

En cas de doute : les joueurs font référence au ping comme étant leur connexion au serveur de jeu dans la communauté du jeu. Un faible ping signifie une connexion plus réactive, surtout dans les jeux rapides. Un ping élevé indique une connexion moins réactive et peut donner l’impression que le jeu est lent.

Certains fournisseurs de services Internet (FSI) renvoient une page de recherche au lieu d’un message d’erreur lorsque vous essayez de vous connecter à un site Web qui n’existe pas. Vous pouvez obtenir un résultat faux positif car vous recevez une réponse au lieu d’une erreur.

Enregistrer la sortie de ping dans un fichier

La plupart des commandes, sinon toutes, ne renvoient que les résultats à l’écran, et la commande ping sous Linux ne fait pas exception. Le terminal Linux dispose d’opérateurs intégrés de redirection de sortie qui vous permettent de rediriger la sortie vers un fichier.

Ces opérateurs de redirection sont les suivants :

Le caractère (>), qui écrasera le contenu du fichier, et le ;

Le caractère (>>), qui ajoutera la sortie au contenu existant.

Mais pourquoi voudriez-vous enregistrer les résultats du ping dans un fichier ? Principalement pour les archives et une analyse ultérieure à l’aide d’un éditeur de texte ou d’un analyseur de journaux.

Vous pouvez également utiliser un programme de feuille de calcul pour créer un graphique montrant comment le temps de ping évolue avec le temps.

Exécutez la commande suivante pour enregistrer la sortie du ping dans un fichier. Cette commande écrit toute la sortie standard de la commande ping dans un fichier nommé log.txt sur le disque.

ping -c 10 localhost > log.txt

Pendant que la commande ping s’exécute, vous remarquerez qu’il n’y a aucune sortie à l’écran.

Maintenant, ouvrez le fichier log.txt dans un éditeur de texte, tel que nano. Ou affichez le contenu du fichier en exécutant la commande cat.

# Ouvrir dans un éditeur de texte
nano log.txt
# OU
# Afficher le contenu à l'écran
cat log.txt
Opening the ping output file in a text editor
Displaying the ping output file contents on the screen

Conclusion

Dans ce tutoriel, vous avez appris comment utiliser la commande ping Linux avec divers exemples pratiques. Vous avez également appris comment enregistrer la sortie de ping dans un fichier sur le disque afin de pouvoir l’analyser ultérieurement.

À ce stade, vous devriez avoir une bonne compréhension du fonctionnement de la commande ping et de son utilité. Mais avant de partir et de commencer à pinger tout ce qui bouge, il y a quelques règles que vous devez activer dans vos groupes de sécurité pour autoriser le trafic ICMP.

Merci de votre lecture et bon apprentissage !

Source:
https://adamtheautomator.com/ping-command-in-linux/