Avant d'aborder la partie pratique, je vais vous présenter quelques explications théoriques qui me semblent un préalable indispensable à une compréhension précise du routage. Je vais essayer de ne pas être trop long. Le routage IP repose sur quatre principes :
Chaque interface réseau d'un appareil possède une adresse IP unique dans tout le réseau global. Cette adresse est structurée en deux parties :
la première partie (ou préfixe) donne le numéro du réseau,
la seconde partie (ou suffixe) donne le numéro de l'interface dans ce réseau.
Un masque est associé à cette adresse et permet au logiciel IP de
déterminer le préfixe réseau d'une adresse en effectuant un ET logique avec
le masque. Prenons l'exemple d'une interface eth0 avec
une adresse IP 192.168.2.254 et un masque réseau
255.255.255.0 :
192.168. 2.1 ET 255.255.255.0 --------------- 192.168. 2.0 => préfixe réseau de l'adresse
Si vous ne vous sentez pas à l'aise avec ces notions, inutile d'aller plus loin : je vous renvoie vers les précédents numéros de Linux magazine qui ont déjà traité ce point.
Lors de l'émission, le protocole découpe les données en petits paquets (souvent appelés datagrammes IP). Ces paquets ont tous la même structure :
C'est l'en-tête qui contient, entre autre, les adresses de l'émetteur et du destinataire. Un appareil chargé du routage analysera l'adresse du destinataire afin d'aiguiller le paquet vers le prochain routeur menant à sa destination.
Une table de routage est une liste contenant essentiellement trois types d'informations : des adresses réseau avec le masque réseau associé et le moyen de les atteindre. Soit le réseau est directement connecté à l'appareil, dans ce cas le moyen de l'atteindre est le nom de l'interface, soit, il s'agit de l'adresse du prochain routeur situé sur la route vers ce réseau. Par exemple, considérons sur un appareil quelconque, sa table de routage :
Tableau 1. Table de routage
| Réseau | Masque | Moyen de l'atteindre |
|---|---|---|
| 192.168.2.0 | 255.255.255.0 | eth0 |
| 100.0.0.0 | 255.0.0.0 | eth1 |
| 101.0.0.0 | 255.0.0.0 | eth2 |
| 192.168.1.0 | 255.255.255.0 | 100.0.0.1 |
| 192.168.3.0 | 255.255.255.0 | 101.0.0.2 |
Cette table est riche d'enseignements. On apprend très précisemment que l'appareil possède trois interfaces réseau (eth0, eth1, eth2) ainsi que les adresses IP des réseaux qui sont directement reliés à ces interfaces. On connaît les adresses IP de deux routeurs. On sait qu'il existe deux réseaux 192.168.1.0 et 192.168.3.0 et qu'ils sont respectivement derrière les routeurs 100.0.0.1 et 101.0.0.2. Par contre, il est impossible d'affirmer que ces deux réseaux sont directement reliés à ces routeurs. Pour résumer, on peut dresser le schéma suivant :
Quelques observations complémentaires :
Étant donné que l'appareil observé possède trois interfaces, c'est très probablement un routeur. Cependant, notez que tout appareil fonctionnant sous TCP/IP possède une table de routage (qu'il soit routeur ou non).
Pour que le routage fonctionne, il est impératif que toutes les interfaces réseau possédant le même préfixe réseau soient reliées au même réseau physique.
Lors de l'émission d'un paquet de données, le logiciel IP recherche une correspondance dans la table en appliquant le masque réseau de chaque ligne avec l'adresse IP de destination du paquet. Notez qu'il parcourt la table dans l'ordre décroissant des masques afin de garantir la correspondance la plus précise entre l'adresse dans la table et l'adresse de destination (best match).
Au total, seules quatre possibilités sont imaginables :
Ce préfixe correspond à celui d'un réseau directement connecté ; il y a remise directe du paquet sur le réseau et le routage est terminé.
Ce préfixe correspond à celui d'un réseau accessible via un routeur on récupère l'adresse physique de ce routeur et on lui transmet le paquet. Notez que l'adresse IP de l'émetteur reste inchangée.
Ce préfixe n'a pas de correspondance dans la table mais il existe un routeur par défaut dans la table ; on transmet au routeur par défaut.
Si aucun des trois cas précédents n'est rempli, on déclare une erreur de routage.
Vous êtes ici :