Test de réseau Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez apprendre à effectuer des tests réseau sous Linux en utilisant la commande ping. Les tests réseau sont essentiels pour diagnostiquer les problèmes de connectivité, mesurer les performances du réseau et s'assurer que les appareils peuvent communiquer correctement entre eux.

La commande ping est l'un des outils de test réseau les plus fondamentaux disponibles sur les systèmes Linux. Elle fonctionne en envoyant des paquets de demande d'écho ICMP (Internet Control Message Protocol) à un hôte cible et en attendant des paquets de réponse d'écho ICMP. Ce mécanisme simple vous permet de vérifier si un hôte distant est accessible et de mesurer le temps de parcours aller-retour des paquets jusqu'à la destination et en retour.

En terminant ce laboratoire, vous aurez une expérience pratique des outils de test réseau et développerez les compétences essentielles pour la résolution de problèmes réseau.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/RemoteAccessandNetworkingGroup -.-> linux/ping("Network Testing") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/echo -.-> lab-271353{{"Test de réseau Linux"}} linux/cat -.-> lab-271353{{"Test de réseau Linux"}} linux/chmod -.-> lab-271353{{"Test de réseau Linux"}} linux/cd -.-> lab-271353{{"Test de réseau Linux"}} linux/ping -.-> lab-271353{{"Test de réseau Linux"}} linux/nano -.-> lab-271353{{"Test de réseau Linux"}} end

Utilisation de la commande ping pour les tests réseau de base

Dans cette étape, nous allons apprendre à utiliser la commande ping pour tester la connectivité entre votre ordinateur et un autre hôte sur le réseau. La commande ping envoie des demandes d'écho à une adresse cible et attend des réponses, ce qui vous permet de vérifier si l'hôte est accessible.

Tout d'abord, ouvrez votre terminal et assurez-vous d'être dans le répertoire du projet :

cd ~/project

Créons un fichier texte pour stocker les adresses IP que nous voulons tester. Cela nous aidera à organiser nos tests réseau :

echo "8.8.8.8" > ~/project/ping_hosts.txt

Cette commande crée un fichier nommé ping_hosts.txt contenant l'adresse IP 8.8.8.8, qui est le serveur DNS public de Google.

Maintenant, effectuons notre premier test de ping en utilisant la commande suivante :

ping -c 4 $(cat ~/project/ping_hosts.txt)

La commande ci-dessus effectue les opérations suivantes :

  • ping : Appelle l'utilitaire ping
  • -c 4 : Limite le ping à 4 paquets (par défaut, ping continue jusqu'à ce que vous l'arrêtiez avec Ctrl+C)
  • $(cat ~/project/ping_hosts.txt) : Lit l'adresse IP à partir de notre fichier

Lorsque vous exécutez cette commande, vous devriez voir une sortie similaire à celle-ci :

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=14.5 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=13.9 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=116 time=13.8 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=116 time=13.7 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 13.676/13.963/14.513/0.329 ms

Cette sortie indique que :

  • Votre système a envoyé avec succès 4 paquets à l'hôte cible
  • L'hôte cible a répondu à tous les 4 paquets
  • Il n'y a eu aucune perte de paquets (0 %)
  • Le temps de parcours aller-retour (rtt) a été en moyenne d'environ 14 millisecondes

Si vous effectuiez un ping à un hôte inaccessible, vous pourriez voir quelque chose comme ceci :

PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.

--- 192.168.1.100 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3062ms

Cela indique qu'aucune réponse n'a été reçue de l'hôte cible, ce qui suggère que l'hôte est soit hors ligne, soit inaccessible, soit qu'il bloque les demandes d'écho ICMP.

Essayons un autre exemple avec une adresse IP différente. Cette fois, nous utiliserons une adresse de passerelle de réseau local courante :

ping -c 4 192.168.1.1

La réponse variera en fonction de votre configuration réseau. Si cette adresse IP est votre passerelle, vous devriez voir des réponses de ping réussies avec une très faible latence (généralement inférieure à 1 ms). Sinon, vous pourriez voir des délais d'attente ou des messages "Destination Host Unreachable".

Comprendre et analyser la sortie de la commande ping

Maintenant que vous avez appris à utiliser la commande ping de base, explorons comment interpréter plus en détail sa sortie. Comprendre les résultats du ping est essentiel pour diagnostiquer les problèmes réseau.

Tout d'abord, ajoutons un autre hôte à notre fichier ping_hosts.txt :

echo "1.1.1.1" >> ~/project/ping_hosts.txt

Cette commande ajoute l'adresse IP du serveur DNS de Cloudflare à notre fichier. L'opérateur >> ajoute du contenu à un fichier sans l'écraser (ce que fait >).

Vérifions le contenu de notre fichier :

cat ~/project/ping_hosts.txt

Vous devriez voir :

8.8.8.8
1.1.1.1

Maintenant, effectuons un ping de la deuxième adresse et analysons la sortie :

ping -c 4 $(tail -n 1 ~/project/ping_hosts.txt)

La commande tail -n 1 extrait la dernière ligne du fichier, qui est l'adresse IP du serveur DNS de Cloudflare.

Vous devriez voir une sortie similaire à :

PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=57 time=9.32 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=57 time=8.76 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=57 time=8.92 ms
64 bytes from 1.1.1.1: icmp_seq=4 ttl=57 time=9.08 ms

--- 1.1.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 8.756/9.019/9.317/0.210 ms

Décortiquons cette sortie en détail :

  1. En-tête : PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.

    • Cela montre l'adresse IP cible et la taille du paquet de ping (56 octets de données, 84 octets y compris les en-têtes)
  2. Réponses d'écho individuelles :

    • 64 bytes from 1.1.1.1: icmp_seq=1 ttl=57 time=9.32 ms
    • bytes from : Indique la taille de la réponse
    • icmp_seq : Le numéro de séquence du paquet
    • ttl : Time To Live (Durée de vie), une valeur qui empêche les paquets de circuler indéfiniment
    • time : Le temps de parcours aller-retour en millisecondes
  3. Statistiques de synthèse :

    • 4 packets transmitted, 4 received, 0% packet loss, time 3005ms
    • Cela montre combien de paquets ont été envoyés, combien ont été reçus, le pourcentage de perte de paquets et le temps total
    • rtt min/avg/max/mdev = 8.756/9.019/9.317/0.210 ms
    • Le minimum, la moyenne, le maximum et l'écart type des temps de parcours aller-retour

Utilisons quelques options supplémentaires avec ping pour obtenir plus d'informations :

ping -c 4 -i 0.5 -s 100 1.1.1.1

Cette commande :

  • -c 4 : Envoie 4 paquets
  • -i 0.5 : Fixe l'intervalle entre les paquets à 0,5 seconde (la valeur par défaut est 1 seconde)
  • -s 100 : Modifie la taille du paquet à 100 octets (la valeur par défaut est 56)

Vous devriez voir une sortie avec des tailles de paquets plus grandes et des intervalles plus rapides :

PING 1.1.1.1 (1.1.1.1) 100(128) bytes of data.
108 bytes from 1.1.1.1: icmp_seq=1 ttl=57 time=9.33 ms
108 bytes from 1.1.1.1: icmp_seq=2 ttl=57 time=9.19 ms
108 bytes from 1.1.1.1: icmp_seq=3 ttl=57 time=9.11 ms
108 bytes from 1.1.1.1: icmp_seq=4 ttl=57 time=9.20 ms

--- 1.1.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 1503ms
rtt min/avg/max/mdev = 9.108/9.205/9.326/0.079 ms

Lors de l'analyse des résultats du ping, gardez un œil sur ces métriques clés :

  1. Perte de paquets : Tout pourcentage supérieur à 0 % indique des problèmes réseau
  2. Latence : Des temps élevés (en particulier au-dessus de 100 ms) peuvent indiquer une congestion réseau
  3. Temps incohérents : De grandes variations entre les temps minimum et maximum suggèrent une instabilité réseau

Par exemple, une forte perte de paquets peut indiquer :

  • Une congestion réseau
  • Des problèmes matériels
  • Des restrictions de pare-feu
  • Des problèmes de routage

Une forte latence peut indiquer :

  • La distance physique au serveur
  • Une congestion réseau
  • Une connexion de mauvaise qualité
  • Des inefficacités de routage

Options avancées de la commande ping et applications pratiques

Maintenant que vous comprenez les bases de la commande ping et comment interpréter sa sortie, explorons quelques options avancées et des scénarios pratiques où le ping est utile pour le diagnostic réseau.

Commençons par créer un simple script shell qui nous aidera à surveiller en continu un hôte et à enregistrer les résultats :

nano ~/project/monitor_host.sh

Tapez le script suivant dans l'éditeur :

#!/bin/bash

## Simple network monitoring script
HOST=$1
INTERVAL=$2
LOG_FILE=~/project/ping_log.txt

echo "Starting monitoring of $HOST at $(date)" > $LOG_FILE

while true; do
  ping -c 1 $HOST | grep "time=" >> $LOG_FILE
  sleep $INTERVAL
  echo "---" >> $LOG_FILE
done

Enregistrez le fichier en appuyant sur Ctrl+O, puis Entrée, et quittez avec Ctrl+X.

Rendez le script exécutable :

chmod +x ~/project/monitor_host.sh

Maintenant, exécutons le script pendant quelques secondes pour surveiller le serveur DNS de Google :

~/project/monitor_host.sh 8.8.8.8 2 &
sleep 10
kill $!

Cela va :

  1. Démarrer le script de surveillance en arrière-plan
  2. Attendre 10 secondes
  3. Arrêter le script

Examinons le journal :

cat ~/project/ping_log.txt

Vous devriez voir plusieurs résultats de ping avec des horodatages.

Maintenant, explorons quelques options de ping plus avancées :

  1. Définir le TTL (Time To Live - Durée de vie) :
ping -c 4 -t 64 8.8.8.8

L'option -t définit la valeur du TTL, qui détermine combien de sauts réseau un paquet peut effectuer avant d'être rejeté.

  1. Ping de saturation (nécessite les droits sudo) :
sudo ping -c 10 -f 8.8.8.8

L'option -f envoie des paquets aussi rapidement que possible. Cela est utile pour les tests de stress, mais doit être utilisé avec prudence.

  1. Ping sonore :
ping -c 4 -a 8.8.8.8

L'option -a produit un son d'alerte audible lorsqu'un hôte répond, ce qui est utile lorsque vous effectuez des diagnostics et que vous ne regardez pas l'écran.

  1. Temporisation avec délai :
ping -c 4 -w 2 8.8.8.8

L'option -w définit un délai en secondes après lequel le ping s'arrêtera, quelle que soit le nombre de paquets envoyés.

Explorons un scénario pratique de dépannage. Nous allons créer une simple visualisation du chemin réseau jusqu'à une destination en utilisant la commande traceroute (qui fonctionne de manière similaire au ping, mais montre la route que suivent les paquets) :

traceroute 8.8.8.8

Cette commande montre chaque saut (routeur) que les paquets traversent pour atteindre la destination. Vous verrez quelque chose comme :

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  _gateway (10.0.2.2)  0.113 ms  0.087 ms  0.083 ms
 2  * * *
 3  * * *
 4  8.8.8.8  14.080 ms  13.849 ms  14.399 ms

Les astérisques (*) représentent des délais d'attente dépassés ou des routeurs qui ne répondent pas aux requêtes traceroute.

Maintenant, créons une simple table pour documenter nos résultats de ping pour différents hôtes :

echo -e "Host\tMin Time\tAvg Time\tMax Time\tPacket Loss" > ~/project/ping_results.txt

Ajoutons le serveur DNS de Google à notre table :

result=$(ping -c 5 8.8.8.8 | tail -1)
min=$(echo $result | awk -F/ '{print $4}')
avg=$(echo $result | awk -F/ '{print $5}')
max=$(echo $result | awk -F/ '{print $6}')
loss=$(ping -c 5 8.8.8.8 | grep -o "[0-9]*%" | head -1)
echo -e "8.8.8.8\t$min ms\t\t$avg ms\t\t$max ms\t\t$loss" >> ~/project/ping_results.txt

Et ajoutons le serveur DNS de Cloudflare :

result=$(ping -c 5 1.1.1.1 | tail -1)
min=$(echo $result | awk -F/ '{print $4}')
avg=$(echo $result | awk -F/ '{print $5}')
max=$(echo $result | awk -F/ '{print $6}')
loss=$(ping -c 5 1.1.1.1 | grep -o "[0-9]*%" | head -1)
echo -e "1.1.1.1\t$min ms\t\t$avg ms\t\t$max ms\t\t$loss" >> ~/project/ping_results.txt

Affichons notre table de résultats :

cat ~/project/ping_results.txt

Vous devriez voir une table formatée avec les statistiques de ping pour les deux serveurs DNS, que vous pouvez utiliser pour comparer leurs performances.

Résumé

Dans ce laboratoire, vous avez appris à utiliser la commande ping pour tester le réseau sous Linux. Vous avez acquis une expérience pratique dans les domaines suivants :

  • Utilisation de la commande ping de base pour vérifier la connectivité à un hôte distant
  • Interprétation de la sortie du ping pour diagnostiquer les problèmes réseau
  • Utilisation de diverses options de la commande ping pour personnaliser vos tests réseau
  • Création de scripts pour surveiller la connectivité réseau
  • Analyse des statistiques du ping pour évaluer les performances réseau
  • Utilisation d'outils connexes tels que traceroute pour visualiser les chemins réseau

Ces compétences sont essentielles pour le dépannage réseau et peuvent vous aider à diagnostiquer une grande variété de problèmes de connectivité, allant des défaillances simples aux problèmes de performances complexes.

Au fur et à mesure que vous continuerez à travailler avec les systèmes Linux, rappelez-vous que ping n'est qu'un des nombreux outils de diagnostic réseau disponibles. D'autres outils utiles incluent traceroute, netstat, nmap, tcpdump et wireshark, qui forment ensemble une boîte à outils complète pour le dépannage réseau.

En comprenant comment tester efficacement la connectivité réseau, vous êtes désormais mieux équipé pour maintenir et dépanner les systèmes réseau dans divers environnements.