Cherchons maintenant à faire en sorte que n'importe quelle machine
  de notre réseau puisse joindre n'importe quelle autre.
Nous avons constaté juste avant qu'il n'était pas encore possible de faire
  interagir 
A1 ou 
B1 avec 
B3.
La solution logique consiste à procéder 
comme précédemment
  pour :
- ajouter explicitement à A1 et B1 une route vers le sous-réseau
    192.168.30.0/24 qui passe par l'interface eth0 de C1A2,
  
- ce routeur n'a pas directement accès au réseau visé mais nous lui
      avions ajouté une route passant par C2A3/eth0 pour
      l'atteindre,
 
 
- ajouter explicitement à B3 une route vers le sous-réseau
    192.168.10.0/24 qui passe par l'interface eth1 de C2A3,
  
- ce routeur n'a pas directement accès au réseau visé mais nous lui
      avions ajouté une route passant par  C1A2/eth1 pour
      l'atteindre.
 
 
En effet, quand un routeur décide de retransmettre un paquet IP reçu, il
  consulte sa table de routage comme s'il avait lui même produit
  initialement ce paquet.
C'est ce procédé qui permet aux paquets IP de traverser, pas à pas, une
  succession de routeurs pour atteindre l'adresse IP visée.
Vérifiez que la communication est dorénavant possible entre les deux
  extrémités du réseau, grâce au relais par les deux routeurs
  intermédiaires.
Si cette solution fonctionne, elle n'est toutefois pas très confortable
  à utiliser.
Dans le cadre de notre expérimentation nous utilisons très peu de machines
  mais en pratique il pourrait y en avoir beaucoup plus dans chacun
  des sous-réseaux (voir les pointillés 
du schéma).
Et il pourrait également y avoir bien plus de sous-réseaux et donc bien plus
  de routeurs pour les interconnecter.
L'
Internet représente justement le gigantesque ensemble de tous
  les réseaux interconnectés.
Il deviendrait alors très difficile de préciser sur chaque machine quelles
  sont les routes à emprunter pour atteindre telle destination ou telle
  autre.
Dans les situations courantes, le réseau de chaque site (une entreprise, une
  université...) pris isolément est organisé de manière hiérarchique sous la
  forme d'un arbre :
- un routeur principal est relié à “l'extérieur”, c'est à dire au routeur
    du fournisseur d'accès à l'Internet,
 
- il possède également des interfaces appartenant à plusieurs sous-réseaux
    internes au site (services accessibles depuis l'Internet, services
    à usage interne, postes des usagers, postes de l'administration...),
 
- chacun des sous-réseaux peut également contenir des routeurs reliés
    à d'autres sous-réseaux et ainsi de suite...
 
Puisque l'organisation est arborescente, il suffit à chaque poste terminal
  (qui ne soit pas un routeur) de s'adresser systématiquement au routeur qui
  le rapproche de 
“l'extérieur” lorsqu'il doit sortir de son sous-réseau
  courant.
Il n'y a donc qu'une route à ajouter explicitement sur chaque poste
  terminal : il s'agit de la 
route par défaut 0.0.0.0/0.
- L'encadrant de séance doit expliquer à cet instant :
    
- comment une route particulière est choisie parmi toutes
        celles de la table de routage,
 
- l'importance de la largeur du masque lorsque plusieurs choix
        sont possibles.
 
 
Cette route par défaut est envisagée en tout dernier lieu, lorsque aucune
  autre plus spécifique ne correspond à l'adresse IP de destination.
Dans ces conditions, seuls les routeurs ont besoin de connaître très
  précisément les routes très spécifiques aux sous-réseaux du site ;
  la configuration des postes terminaux (beaucoup plus nombreux normalement)
  s'en trouve largement simplifiée.
Pour expérimenter cette solution, supposons que la machine 
C2A3 soit
  également reliée à 
“l'extérieur” par une liaison non matérialisée
  ici
“L'extérieur” se situerait donc encore plus à droite de 
C2A3
      sur 
le schéma.
 .
Commençons par retirer une à une toutes les routes que nous avions
  ajoutées explicitement pour atteindre les sous-réseaux éloignés.
[A1, B1, C1A2, B2]~# ip route del 192.168.30.0/24 ↵
[A1, B1, B3]~# ip route del 192.168.20.0/24 ↵
[B2, C2A3, B3]~# ip route del 192.168.10.0/24 ↵
Puis, sur chaque machine ajoutons la route par défaut
  (vers 
“l'extérieur”).
[A1, B1]~# ip route add default via 192.168.10.3 ↵
[C1A2, B2]~# ip route add default via 192.168.20.3 ↵
[B3]~# ip route add default via 192.168.30.1 ↵
Normalement, 
C2A3 devrait aussi avoir une route par défaut
  vers le fournisseur d'accès mais nous n'avons pas matérialisé cette
  liaison.
Vérifiez que, en l'état, 
B2 (ou 
C1A2) peuvent interagir sans
  problème avec 
B3 :
- à l'aller, le paquet IP devant atteindre B3 emprunte la route par
    défaut de B2 par C2A3 qui sait joindre directement B3,
 
- au retour, le paquet IP devant atteindre B2 emprunte la route par
    défaut de B3 par C2A3 qui sait joindre directement B2.
 
Cependant, la même expérience entre 
B1 (ou 
A1) et 
B2
  (ou 
C2A3) échoue car 
B2 (ou 
C2A3) ne sait pas comment
  atteindre le sous-réseau 
192.168.10.0/24 ; au contraire, les
  routes par défaut ont tendance à diriger les paquets IP vers
  
“l'extérieur”.
Pour pallier ce défaut, il suffit d'intervenir sur un routeur afin
  d'expliciter l'architecture interne de notre réseau, comme nous
  l'avions déjà fait à 
cette étape.
[C2A3]~# ip route add 192.168.10.0/24 via 192.168.20.1 ↵
En effet, alors que toutes les routes par défaut ont tendance à faire
  
“sortir” les paquets IP, il faut indiquer explicitement qu'il est
  nécessaire de 
“rentrer” par 
C1A2/
eth1 pour atteindre
  notre sous-réseau 
192.168.10.0/24.
Remarquez que cette intervention n'a lieu que sur 
C2A3 ;
  il n'est pas nécessaire de la répliquer sur les postes terminaux.
Vérifiez que, grâce à cette nouvelle route explicite, la communication
  entre 
B1 (ou 
A1) et 
B2 est redevenue possible.
En regardant attentivement 
le schéma, nous remarquons qu'un
  paquet IP issu de 
B2 et destiné à 
B1 (ou 
A1) emprunte la
  route par défaut de 
B2 par 
C2A3 puis la route explicite de
  
C2A3 par 
C1A2.
Néanmoins, il serait bien plus pertinent pour 
B2 d'atteindre 
C1A2
  sans passer juste avant par 
C2A3.
À ce propos, notre toute dernière utilisation de 
ping a dû indiquer,
  par un affichage furtif, qu'une 
redirection avait eu lieu.
Il s'agit d'un message 
ICMP-redirect émis par le routeur 
C2A3 à
  l'intention de 
B2 pour lui signifier qu'il peut désormais atteindre
  son destinataire par une route plus directe (que ce routeur connaît).
Cette information est mémorisée (temporairement) par 
B2 et vient en
  quelque sorte en complément de la table de routage.
Pour s'en rendre compte, nous pouvons interroger les décisions de routage
  de 
B2.
[B2]~# ip route get 192.168.30.2 ↵
[B2]~# ip route get 192.168.10.2 ↵
Dans le premier cas, la route par défaut est choisie ; dans le second,
  il est indiqué qu'une redirection par une autre route sera préférée.
Pour mettre en évidence l'établissement de ce fonctionnement, commençons
  par forcer l'oubli des informations de redirection sur 
B2
[B2]~# ip route flush cached ↵
  et contrôlons le fait que la route par défaut sera à nouveau considérée
  pour atteindre 
B1.
[B2]~# ip route get 192.168.10.2 ↵
Écoutons l'interface 
eth0 de 
C2A3
[C2A3]~# tcpdump -eni eth0 ↵
  pendant que 
B2 cherche à joindre 
B1.
[B2]~# ping -c2 192.168.10.2 ↵
Vous devriez constater que le tout premier paquet IP
  (
ICMP-echo-request) est bien reçu puis retransmis par
  
C2A3 mais qu'un message 
ICMP-redirect est également
  émis vers 
B2.
Dès lors, 
B2 ne sollicite plus du tout 
C2A3 pour communiquer
  avec 
B1 mais s'adresse directement à 
C1A2 comme suggéré 
  par le message 
ICMP-redirect que vient de lui adresser 
C2A3 
Voici ce que nous pouvons retenir de cette étape :
- en pratique les multiples postes terminaux peuvent se contenter d'une
    simple route par défaut vers “l'extérieur”,
 
- ce n'est qu'au niveau des quelques routeurs qu'il est nécessaire
    d'expliciter les routes qui sont très spécifiques à l'architecture
    interne de notre réseau,
  
- les messages de redirection émis par les routeurs ajustent alors
      très précisément les décisions de routage des postes terminaux.