Aller au contenu
Réseaux high

Module 4, Le routage : comment les paquets trouvent leur chemin

17 min de lecture

Comment votre PC sait-il envoyer un paquet vers GitHub, qui est physiquement à des milliers de kilomètres ? La réponse tient en un mot : routage. Ce module vous explique comment les paquets trouvent leur chemin sur le réseau, comment lire une table de routage, et comment utiliser traceroute pour diagnostiquer les problèmes.

  • Routage = comment un paquet traverse plusieurs réseaux pour atteindre sa destination
  • Passerelle (gateway) = le routeur auquel votre machine confie tout paquet destiné à un autre réseau
  • ip route : voir la table de routage de votre machine
  • traceroute : visualiser le chemin d'un paquet

Ces trois points valident que votre routage local fonctionne. Le premier prouve qu'une route par défaut existe, le deuxième que les paquets sortent effectivement de votre réseau, le troisième que vous avez compris le mécanisme de délégation au routeur. Si le premier échoue, les deux autres échoueront aussi : traitez-les dans l'ordre.

  • ip route | grep default me montre ma passerelle
  • traceroute google.com affiche des sauts (même avec des * * *)
  • Je comprends que mon PC envoie à la passerelle, pas directement à la destination

Ces trois commandes couvrent 90 % du diagnostic de routage au quotidien. Les deux premières sont passives : elles lisent l'état du noyau sans rien émettre sur le réseau, vous pouvez les lancer sans risque sur un serveur en production. La troisième génère du trafic et prend plusieurs secondes, car elle attend une réponse à chaque saut.

Fenêtre de terminal
# 1. Voir la table de routage
ip route
# 2. Voir la passerelle par défaut
ip route | grep default
# 3. Tracer le chemin vers une destination
traceroute -n google.com

Pour suivre ce module, vous devez maîtriser :

  • Le principe du routage : comment un paquet traverse plusieurs réseaux
  • La passerelle (gateway) : le routeur qui relie votre réseau aux autres
  • La table de routage : la liste de règles que le noyau consulte avant chaque envoi
  • Traceroute : visualiser le chemin des paquets
  • Dépannage : identifier une route manquante ou incorrecte

Imaginons que vous voulez accéder à GitHub (140.82.121.4) depuis votre PC (192.168.1.45).

Le problème : ces deux machines ne sont pas sur le même réseau !

  • Votre PC est sur 192.168.1.0/24 (réseau local)
  • GitHub est sur un réseau complètement différent, à des milliers de kilomètres

Comment le paquet va-t-il arriver à destination ?

Le routage est le processus qui permet aux paquets de traverser plusieurs réseaux pour atteindre leur destination.

Principe du routage : le PC envoie à la passerelle, qui route vers Internet, jusqu'à GitHub

Quand votre PC veut envoyer un paquet, il se pose une seule question :

"La destination est-elle sur mon réseau local ?"

RéponseAction
Oui (même sous-réseau)Envoyer directement à la machine
Non (réseau différent)Envoyer à la passerelle par défaut

Votre PC ne connaît pas le chemin complet vers GitHub, et il n'a pas besoin de le connaître. Il constate que la destination n'appartient pas à son sous-réseau, puis remet le paquet à l'équipement chargé de le faire progresser : la passerelle. Chaque routeur suivant refait exactement le même calcul avec sa propre table de routage, de proche en proche jusqu'à la destination.

La passerelle (gateway) : la sortie de votre réseau

Section intitulée « La passerelle (gateway) : la sortie de votre réseau »

La passerelle (ou gateway) est le routeur qui connecte votre réseau local au reste du monde.

Chez vous, c'est votre box Internet (Freebox, Livebox, etc.). Elle a deux rôles :

  1. Côté LAN : elle a une IP sur votre réseau local (ex: 192.168.1.1)
  2. Côté WAN : elle a une IP publique fournie par votre FAI (ex: 86.45.12.78)

Pour connaître l'adresse de votre passerelle :

Fenêtre de terminal
ip route | grep default

Sortie typique :

default via 192.168.1.1 dev eth0

Cette ligne signifie : "Pour toute destination inconnue, envoyer au routeur 192.168.1.1".

Alternative :

Fenêtre de terminal
ip route show default

Avant de chercher plus loin, vérifiez toujours que votre passerelle est joignable :

Fenêtre de terminal
ping -c 3 192.168.1.1

Si ça ne répond pas, vous avez un problème local (câble, Wi-Fi, configuration).

La table de routage : les règles d'aiguillage du noyau

Section intitulée « La table de routage : les règles d'aiguillage du noyau »

Chaque machine (PC, serveur, routeur) possède une table de routage : une liste de règles qui indiquent où envoyer les paquets selon leur destination.

Cette table vit dans le noyau Linux, pas dans un fichier de configuration. Elle est consultée avant chaque paquet émis, et le résultat détermine deux choses : l'interface de sortie et l'adresse du prochain équipement à qui remettre le paquet. Les commandes ip route lisent et modifient directement cet état en mémoire.

Fenêtre de terminal
ip route show

Sortie typique sur un PC :

default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.45

Décryptons ces deux lignes :

LigneSignification
default via 192.168.1.1 dev eth0Route par défaut : tout ce qui n'est pas local va vers 192.168.1.1 via l'interface eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.45Route locale : le réseau 192.168.1.0/24 est accessible directement sur eth0

Quand un paquet doit partir, la machine parcourt sa table de routage et cherche la route la plus spécifique qui correspond à la destination :

  1. Chercher une route exacte

    Si la table contient une route vers 140.82.121.0/24 et que la destination est 140.82.121.4, c'est match !

  2. Chercher une route qui englobe la destination

    Sinon, chercher un réseau plus large qui contient l'IP de destination.

  3. Utiliser la route par défaut

    Si aucune route spécifique ne correspond, utiliser default (aussi appelée 0.0.0.0/0).

Votre table de routage :

default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 scope link
10.10.0.0/16 via 192.168.1.254 dev eth0
DestinationRoute utiliséeExplication
192.168.1.100192.168.1.0/24Même réseau → direct
10.10.5.6710.10.0.0/16Match le réseau 10.10.x.x → via 192.168.1.254
8.8.8.8defaultPas de route spécifique → passerelle par défaut
140.82.121.4defaultPas de route spécifique → passerelle par défaut

traceroute est un outil qui affiche tous les routeurs traversés par un paquet pour atteindre sa destination. Chaque routeur intermédiaire s'appelle un saut (hop).

Traceroute vers GitHub : visualisation des sauts avec le temps de réponse à chaque étape

Fenêtre de terminal
traceroute github.com

Sortie typique :

traceroute to github.com (140.82.121.4), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 1.234 ms 1.123 ms 1.089 ms
2 10.45.0.1 (10.45.0.1) 8.456 ms 7.890 ms 8.234 ms
3 * * *
4 ae1.cr1.par.fr.as12322.net (91.121.131.136) 12.345 ms 11.987 ms 12.123 ms
...
12 140.82.121.4 (140.82.121.4) 25.678 ms 24.890 ms 25.123 ms
ColonneSignification
1, 2, etc.Numéro du saut (routeur)
192.168.1.1Adresse IP du routeur
1.234 msTemps de réponse (3 mesures)
* * *Routeur qui ne répond pas (filtré par pare-feu)

La valeur de traceroute en dépannage tient moins aux temps affichés qu'à l'endroit où le comportement change. Comparez chaque saut au précédent : c'est une rupture qui désigne le coupable, pas une valeur absolue. Un saut à 80 ms suivi d'un saut à 82 ms est normal sur une liaison intercontinentale ; un saut à 5 ms suivi d'un saut à 300 ms mérite une investigation. Attention au piège classique : un routeur qui dépriorise ses propres réponses ICMP affiche une latence élevée alors qu'il transmet le trafic normalement, ce qui se repère au fait que les sauts suivants redescendent.

ObservationDiagnostic
Saut 1 lent (> 10 ms)Problème sur votre réseau local (Wi-Fi ?)
* * * sur plusieurs sautsRouteurs qui filtrent ICMP (normal)
Temps qui augmente brutalementGoulot d'étranglement à ce saut
Traceroute s'arrête sans atteindre la cibleRoute bloquée ou destination injoignable
Boucle (mêmes IP qui reviennent)Problème de configuration de routage
Fenêtre de terminal
# Classique (UDP)
traceroute github.com
# Avec ICMP (comme Windows)
traceroute -I github.com
# Avec TCP sur port 443 (passe mieux les pare-feux)
traceroute -T -p 443 github.com

Parfois, vous devez ajouter une route manuellement. Par exemple, pour atteindre un réseau 10.20.0.0/16 via un routeur 192.168.1.254 :

Fenêtre de terminal
sudo ip route add 10.20.0.0/16 via 192.168.1.254

Vérification :

Fenêtre de terminal
ip route | grep 10.20

La suppression demande le préfixe exact tel qu'il apparaît dans ip route show. Si vous avez ajouté 10.20.0.0/16, un del 10.20.0.0/24 échouera avec RTNETLINK answers: No such process : le noyau ne fait aucune correspondance approximative. Relisez donc la table avant de supprimer, et sachez qu'aucune confirmation ne vous sera demandée. Supprimer la route par défaut d'un serveur distant vous en coupe l'accès immédiatement.

Fenêtre de terminal
sudo ip route del 10.20.0.0/16

Si vous devez changer votre passerelle (rare, mais utile pour des tests) :

Fenêtre de terminal
# Supprimer l'ancienne
sudo ip route del default
# Ajouter la nouvelle
sudo ip route add default via 192.168.1.254

Symptôme : impossible de joindre une destination, message "Network is unreachable".

Diagnostic :

Fenêtre de terminal
# Vérifier la route par défaut
ip route | grep default

Cause probable : pas de route par défaut configurée.

Solution :

Fenêtre de terminal
# Ajouter une passerelle
sudo ip route add default via 192.168.1.1

Symptôme : ping échoue avec "No route to host".

Causes possibles :

VérificationCommande
Passerelle joignable ?ping 192.168.1.1
Interface UP ?ip link show eth0
IP configurée ?ip addr show eth0

Symptôme : traceroute affiche quelques sauts puis uniquement * * *.

Causes possibles :

  1. Pare-feu : le routeur bloque ICMP (normal, pas un problème)
  2. ACL : une access-list bloque le trafic
  3. Route de retour : le paquet arrive mais la réponse ne peut pas revenir (routage asymétrique)

Test : essayez avec TCP sur le port de destination :

Fenêtre de terminal
traceroute -T -p 443 github.com

Problème 4 : Conteneur Docker sans accès Internet

Section intitulée « Problème 4 : Conteneur Docker sans accès Internet »

Symptôme : un conteneur ne peut pas atteindre Internet.

Diagnostic :

Fenêtre de terminal
# Dans le conteneur
ip route

Si vous ne voyez pas de route default, le réseau Docker n'est pas configuré correctement.

Vérification depuis l'hôte :

Fenêtre de terminal
# Vérifier que le forwarding IP est activé
cat /proc/sys/net/ipv4/ip_forward
# Doit afficher : 1

Mettons en pratique ce que nous avons appris.

  1. Affichez votre table de routage

    Fenêtre de terminal
    ip route show

    Identifiez :

    • Votre passerelle par défaut
    • Votre réseau local
  2. Testez la connectivité par étapes

    Fenêtre de terminal
    # 1. Passerelle locale
    ping -c 2 $(ip route | grep default | awk '{print $3}')
    # 2. DNS Google (Internet)
    ping -c 2 8.8.8.8
    # 3. GitHub
    ping -c 2 github.com

    Si une étape échoue, le problème est entre cette étape et la précédente.

  3. Tracez le chemin vers GitHub

    Fenêtre de terminal
    traceroute github.com

    Notez :

    • Combien de sauts ?
    • Temps de réponse du dernier saut ?
    • Y a-t-il des * * * ?
  4. Comparez avec un autre site

    Fenêtre de terminal
    traceroute google.com

    Le chemin est-il différent ? À quel saut diverge-t-il ?

  5. Testez avec mtr (si installé)

    Fenêtre de terminal
    mtr -c 10 github.com

    Observez la perte de paquets et la latence sur chaque saut.

  1. Routage = processus qui permet aux paquets de traverser plusieurs réseaux
  2. Passerelle (gateway) = routeur qui connecte votre réseau local à Internet
  3. Table de routage = règles du noyau qui associent un réseau de destination à une interface et un prochain saut
  4. Route par défaut (default) = où envoyer tout ce qui n'a pas de route spécifique
  5. Règle du plus spécifique : entre plusieurs routes, le masque le plus grand gagne
  6. ip route : afficher et manipuler la table de routage
  7. traceroute : voir tous les routeurs traversés (les "sauts")
  8. mtr : traceroute interactif avec statistiques en temps réel

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

10 questions
10 min.
80% requis

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

Ces questions reviennent systématiquement en formation, et portent presque toutes sur la frontière entre ce que fait votre machine et ce que fait le routeur. Retenez le partage des rôles : votre poste ne décide que du premier saut, tout le reste du chemin lui échappe totalement.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn