Votre ping ne répond pas et vous ne savez pas pourquoi ? ICMP est le protocole qui vous donne les indices pour comprendre ce qui se passe. Ce module vous apprend à lire les messages d’erreur ICMP et à les utiliser pour diagnostiquer vos problèmes de connectivité réseau.
TL;DR — L’essentiel en 30 secondes
Section intitulée « TL;DR — L’essentiel en 30 secondes »- ICMP = protocole de diagnostic (ping, traceroute)
- Timeout = pas de réponse (filtré ou machine down)
- Destination Unreachable = réponse explicite (réseau, hôte ou port inaccessible)
- Ping bloqué ≠ machine down : testez avec
ncsur le port applicatif
Je sais que c’est bon si…
Section intitulée « Je sais que c’est bon si… »-
ping -c 2 8.8.8.8fonctionne (ou je comprends pourquoi il est bloqué) - Je sais distinguer timeout de “Destination Unreachable”
- Si ping échoue, je teste avec
nc -zv hôte port
Commandes minimales à retenir
Section intitulée « Commandes minimales à retenir »# 1. Test de baseping -c 3 google.com
# 2. Traceroute (voir le chemin)traceroute -n google.com
# 3. Si ping bloqué, tester le port applicatifnc -zv serveur 22Prérequis
Section intitulée « Prérequis »- Module 4 complété : vous comprenez le routage et traceroute
- Module 5 complété : vous connaissez TCP et UDP
- Une machine Linux avec accès réseau
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Ce qu’est ICMP : le protocole de contrôle et d’erreur d’Internet
- Echo Request/Reply : comment fonctionne ping
- Les messages d’erreur : Destination Unreachable, TTL Exceeded
- Interpréter les codes : pourquoi le réseau, l’hôte ou le port est inaccessible
- ICMP et les pare-feu : pourquoi ping peut être bloqué
- Diagnostic pratique : utiliser ICMP pour trouver la cause d’un problème
Qu’est-ce que ICMP ?
Section intitulée « Qu’est-ce que ICMP ? »ICMP (Internet Control Message Protocol) est un protocole de diagnostic et de signalisation. Contrairement à TCP et UDP qui transportent des données applicatives, ICMP transporte des messages de contrôle :
- “Ta destination est injoignable”
- “Le paquet a fait trop de sauts”
- “Ton paquet est trop gros”
- “Es-tu vivant ?” (ping)
| Protocole | Rôle | Exemple d’usage |
|---|---|---|
| TCP | Transport fiable | HTTP, SSH |
| UDP | Transport rapide | DNS, VoIP |
| ICMP | Diagnostic et erreurs | ping, traceroute |
Comment fonctionne ping (Echo Request/Reply)
Section intitulée « Comment fonctionne ping (Echo Request/Reply) »La commande ping envoie un message ICMP Echo Request et attend un Echo Reply :
Le processus en détail
Section intitulée « Le processus en détail »-
Votre machine envoie un Echo Request
Type ICMP : 8 (Echo Request)
Le paquet contient un identifiant et un numéro de séquence pour matcher les réponses.
-
La destination reçoit et répond
Type ICMP : 0 (Echo Reply)
La machine cible renvoie le même contenu, ce qui permet de calculer le temps aller-retour (RTT).
-
Votre machine affiche le résultat
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=12.3 msicmp_seq: numéro de séquencettl: nombre de sauts restantstime: temps aller-retour
Interpréter la sortie de ping
Section intitulée « Interpréter la sortie de ping »ping -c 4 google.comPING google.com (142.250.185.46) 56(84) bytes of data.64 bytes from par21s17-in-f14.1e100.net (142.250.185.46): icmp_seq=1 ttl=117 time=11.2 ms64 bytes from par21s17-in-f14.1e100.net (142.250.185.46): icmp_seq=2 ttl=117 time=10.8 ms64 bytes from par21s17-in-f14.1e100.net (142.250.185.46): icmp_seq=3 ttl=117 time=11.1 ms64 bytes from par21s17-in-f14.1e100.net (142.250.185.46): icmp_seq=4 ttl=117 time=10.9 ms
--- google.com ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3004msrtt min/avg/max/mdev = 10.823/10.991/11.184/0.136 ms| Élément | Signification |
|---|---|
64 bytes | Taille du paquet reçu |
icmp_seq=1 | Premier paquet de la séquence |
ttl=117 | Marge restante avant expiration du paquet |
time=11.2 ms | Latence aller-retour |
0% packet loss | Aucun paquet perdu |
rtt min/avg/max | Statistiques de latence |
Les messages d’erreur ICMP
Section intitulée « Les messages d’erreur ICMP »ICMP ne sert pas qu’à ping. Il signale les erreurs quand un paquet ne peut pas atteindre sa destination :
Types ICMP les plus courants
Section intitulée « Types ICMP les plus courants »| Type | Nom | Signification |
|---|---|---|
| 0 | Echo Reply | Réponse à un ping |
| 3 | Destination Unreachable | La destination ne peut pas être atteinte |
| 8 | Echo Request | Demande de ping |
| 11 | Time Exceeded | TTL expiré (utilisé par traceroute) |
Destination Unreachable (Type 3) : les codes importants
Section intitulée « Destination Unreachable (Type 3) : les codes importants »Le Type 3 a plusieurs codes qui précisent la raison de l’échec :
| Code | Message | Signification | Cause probable |
|---|---|---|---|
| 0 | Network Unreachable | Pas de route vers ce réseau | Routage cassé, réseau inexistant |
| 1 | Host Unreachable | Machine injoignable | Machine éteinte, ARP échoué |
| 3 | Port Unreachable | Pas de service sur ce port (UDP) | Service non démarré |
| 4 | Fragmentation Needed | Paquet trop gros, DF set | MTU trop petit sur le chemin |
| 13 | Administratively Prohibited | Bloqué par un pare-feu | Règle firewall |
Time Exceeded (Type 11) : comment fonctionne traceroute
Section intitulée « Time Exceeded (Type 11) : comment fonctionne traceroute »Chaque paquet IP a un TTL (Time To Live) qui est décrémenté à chaque routeur. Quand le TTL atteint 0, le routeur jette le paquet et envoie un message ICMP Type 11 “Time Exceeded” (IANA ICMP Parameters).
Traceroute exploite ce mécanisme :
-
Envoie un paquet avec TTL=1
Le premier routeur décrémente TTL à 0 et renvoie ICMP “Time Exceeded”. On connaît le premier saut.
-
Envoie un paquet avec TTL=2
Le deuxième routeur renvoie “Time Exceeded”. On connaît le deuxième saut.
-
Continue jusqu’à la destination
Quand la destination est atteinte, traceroute reçoit soit un Echo Reply (si probes ICMP), soit ICMP Port Unreachable (si probes UDP vers un port élevé non écouté).
traceroute google.comtraceroute to google.com (142.250.185.46), 30 hops max, 60 byte packets 1 _gateway (192.168.1.1) 0.543 ms 0.512 ms 0.503 ms 2 10.0.0.1 (10.0.0.1) 8.234 ms 8.219 ms 8.205 ms 3 * * * 4 72.14.215.85 (72.14.215.85) 11.234 ms 11.219 ms 11.205 ms 5 142.250.185.46 (142.250.185.46) 10.823 ms 10.808 ms 10.794 ms| Sortie | Signification |
|---|---|
_gateway | Nom DNS du routeur (si disponible) |
0.543 ms | Temps de réponse (3 tentatives) |
* * * | Pas de réponse (ICMP bloqué ou timeout) |
Quand ping échoue : interpréter les résultats
Section intitulée « Quand ping échoue : interpréter les résultats »Cas 1 : Timeout (pas de réponse)
Section intitulée « Cas 1 : Timeout (pas de réponse) »ping 10.0.0.99PING 10.0.0.99 (10.0.0.99) 56(84) bytes of data.--- 10.0.0.99 ping statistics ---4 packets transmitted, 0 received, 100% packet loss, time 3062msCauses possibles :
- Machine éteinte ou inexistante
- Pare-feu qui DROP les paquets (sans répondre)
- Problème de routage (paquets perdus)
Cas 2 : Destination Host Unreachable
Section intitulée « Cas 2 : Destination Host Unreachable »ping 192.168.99.1From 192.168.1.1 icmp_seq=1 Destination Host UnreachableCause : Émis par la passerelle ou un nœud intermédiaire qui ne peut pas joindre l’hôte final (ARP échoué, machine éteinte, voisinage L2 injoignable). Notez l’IP source du message (ici 192.168.1.1) : c’est elle qui a généré l’erreur.
Cas 3 : Network Unreachable
Section intitulée « Cas 3 : Network Unreachable »ping 10.99.0.1connect: Network is unreachableCause : Votre machine ou un routeur intermédiaire n’a pas de route vers ce réseau.
Cas 4 : Administratively Prohibited
Section intitulée « Cas 4 : Administratively Prohibited »ping 192.168.1.100From 192.168.1.1: icmp_seq=1 Packet filteredCause : Un pare-feu a explicitement rejeté le paquet avec un message ICMP.
ICMP et les pare-feu : une relation compliquée
Section intitulée « ICMP et les pare-feu : une relation compliquée »Les pare-feu peuvent bloquer ou limiter ICMP de plusieurs façons :
| Comportement pare-feu | Résultat ping | Sécurité |
|---|---|---|
| ICMP autorisé | Réponse normale | Faible (expose la machine) |
| ICMP DROP | Timeout | Moyen (machine invisible) |
| ICMP REJECT | ”Administratively Prohibited” | Moyen (on sait qu’il y a un FW) |
| Rate limit | Certains pings répondent | Bon compromis |
Bonnes pratiques pour les pare-feu
Section intitulée « Bonnes pratiques pour les pare-feu »| Type ICMP | Recommandation | Pourquoi |
|---|---|---|
| Echo Reply (0) | Autoriser en sortie | Réponse à vos pings |
| Destination Unreachable (3) | Autoriser (surtout code 4) | Diagnostic + PMTUD |
| Echo Request (8) | Limiter ou bloquer en entrée | Évite les scans |
| Time Exceeded (11) | Autoriser | Nécessaire pour traceroute |
Cas pratique : VM cloud inaccessible
Section intitulée « Cas pratique : VM cloud inaccessible »-
Tester ping
Fenêtre de terminal ping <ip-vm># Timeout... -
Ne pas conclure trop vite
Ping peut être bloqué par le Security Group.
-
Tester le port applicatif
Fenêtre de terminal nc -zv <ip-vm> 22# Connection to <ip-vm> 22 port [tcp/ssh] succeeded!La VM est bien accessible, c’est juste ICMP qui est bloqué.
Environnements modernes : Docker et Kubernetes (facultatif)
Section intitulée « Environnements modernes : Docker et Kubernetes (facultatif) »Conteneur Docker qui ne ping pas
Section intitulée « Conteneur Docker qui ne ping pas »Dans Docker, les conteneurs peuvent ne pas répondre au ping selon la configuration :
# Depuis l'hôteping 172.17.0.2# Timeout
# Mais le service HTTP fonctionnecurl http://172.17.0.2:8080# OKCauses fréquentes :
- Capabilities manquantes : le conteneur n’a pas
CAP_NET_RAW(nécessaire pour ping) - Règles iptables : Docker peut filtrer ICMP selon le network mode
- Politique réseau : des règles bloquent explicitement ICMP
Kubernetes : ping entre pods
Section intitulée « Kubernetes : ping entre pods »# Depuis un podkubectl exec -it mypod -- ping autre-service# Timeout ou succès selon le CNI et les NetworkPoliciesCauses fréquentes en K8s :
- NetworkPolicy qui filtre ICMP (ex : Calico, Cilium)
- Capabilities : le pod n’a pas
CAP_NET_RAWdans son securityContext - PSP/PSA restrictives qui retirent les capabilities réseau
Travaux pratiques
Section intitulée « Travaux pratiques »TP 1 : Analyser différents résultats de ping
Section intitulée « TP 1 : Analyser différents résultats de ping »-
Ping localhost (toujours OK)
Fenêtre de terminal ping -c 2 127.0.0.1Notez le temps de réponse (très faible).
-
Ping votre passerelle
Fenêtre de terminal ping -c 2 $(ip route | grep default | awk '{print $3}') -
Ping une IP publique
Fenêtre de terminal ping -c 2 8.8.8.8Comparez les temps de réponse.
-
Ping une IP inexistante sur votre réseau
Fenêtre de terminal ping -c 2 192.168.1.254Observez le message d’erreur.
TP 2 : Comprendre traceroute
Section intitulée « TP 2 : Comprendre traceroute »-
Traceroute vers Google
Fenêtre de terminal traceroute -n google.comL’option
-névite la résolution DNS (plus rapide). -
Identifiez
- Votre passerelle (premier saut)
- Les routeurs de votre FAI
- Les
* * *(ICMP bloqué)
-
Comparez avec traceroute UDP
Fenêtre de terminal traceroute -U google.comCertains pare-feu bloquent ICMP mais pas UDP.
TP 3 : Observer ICMP avec tcpdump
Section intitulée « TP 3 : Observer ICMP avec tcpdump »-
Dans un terminal, capturez ICMP
Fenêtre de terminal sudo tcpdump -i any icmp -n -
Dans un autre terminal, lancez ping
Fenêtre de terminal ping -c 3 8.8.8.8 -
Observez les paquets
Vous verrez les Echo Request et Echo Reply.
-
Testez une destination inaccessible
Fenêtre de terminal ping -c 1 192.168.99.99Observez le message “Destination Unreachable” dans tcpdump.
ICMPv6 : encore plus critique
Section intitulée « ICMPv6 : encore plus critique »En IPv6, ICMPv6 (RFC 4443) n’est pas optionnel — il porte des fonctions essentielles :
| Fonction | ICMPv6 Type | Rôle |
|---|---|---|
| Echo Request/Reply | 128/129 | Équivalent de ping (différent de 8/0 en IPv4) |
| Packet Too Big | 2 | Équivalent de Fragmentation Needed (PMTUD) |
| Neighbor Solicitation/Advertisement | 135/136 | Équivalent d’ARP — indispensable |
| Router Solicitation/Advertisement | 133/134 | Auto-configuration réseau |
À retenir
Section intitulée « À retenir »- ICMP : protocole de diagnostic (pas de port, juste type + code)
- Ping : Echo Request (type 8) → Echo Reply (type 0)
- Traceroute : envoie des probes (UDP par défaut), reçoit ICMP Time Exceeded (type 11)
- Destination Unreachable (type 3) : plusieurs codes selon la cause
- Type 3 Code 4 : ne jamais bloquer — critique pour PMTUD
- Timeout ≠ Unreachable : timeout = pas de réponse, unreachable = réponse explicite
- Ping bloqué ≠ machine down : testez les ports applicatifs avec
ncoucurl - ICMPv6 : encore plus critique qu’ICMPv4 (porte Neighbor Discovery)
- Pare-feu cloud : bloquent souvent ICMP par défaut
Testez vos connaissances
Section intitulée « Testez vos connaissances »Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications