Linux Networking HOWTO | ||
---|---|---|
Prev | Chapter 5. Informations g�n�rales concernant la configuration r�seau | Next |
Le routage est un vaste sujet. On peut �crire de grandes quantit�s de textes sur ce sujet. La plupart d'entre vous ont besoin d'un simple routage, et certains m�me de rien du tout. Je ne parlerai que des principes du routage. Si vous voulez plus d'informations je vous sugg�re de vous reporter aux r�f�rences fournies en d�but du document.
Commen�ons par une d�finition. Qu'est-ce que le routage IP ? Voici celle que j'utilise :
"Le routage IP est le processus par lequel un h�te, ayant des connexions r�seau multiples, d�cide du chemin par lequel d�livrer les datagrammes IP qu'il a re�us."
Il peut �tre utile d'illustrer cela par un exemple. Imaginez un routeur dans un bureau : il peut avoir un lien PPP sur l'Internet, un certain nombre de segments Ethernet alimentant les stations de travail et un second lien PPP vers un autre bureau. Lorsque le routeur re�oit un datagramme de l'une de ses connexions, le routage est le m�canisme utilis� pour d�terminer vers quelle interface il doit renvoyer ce datagramme. De simples h�tes ont besoin aussi de routage, tous les h�tes Internet ayant deux p�riph�riques r�seau, l'un �tant l'interface loopback d�crite auparavant et l'autre est celui qui est utilis� pour parler avec le reste du monde, soit un lien Ethernet, soit une interface s�rie PPP ou SLIP.
Ok, alors comment fonctionne le routage ? Chaque h�te poss�de une liste sp�ciale de r�gles de routage, appel�e une table de routage. Cette table contient des colonnes qui contiennent au moins trois champs, le premier �tant une adresse de destination, le deuxi�me �tant le nom de l'interface vers lequel le datagramme doit �tre rout� et le troisi�me, qui est optionnel, l'adresse IP d'une autre machine qui transportera le datagramme vers sa prochaine destination sur le r�seau passerelle. Sur Linux vous pouvez voir cette table en utilisant la commande suivante :
user% cat /proc/net/route |
ou bien en utilisant l'une des commandes suivantes :
user% /sbin/route -n user% /sbin/netstat -r |
Le processus de routage est plut�t simple : un datagramme entrant est re�u, l'adresse de destination est examin�e et compar�e avec chaque entr�e de la table. L'entr�e qui correspond le mieux � cette adresse est choisie, et le datagramme est renvoy� vers l'interface sp�cifi�e. Si le champ passerelle est rempli, alors le datagramme est renvoy� vers cet h�te via l'interface sp�cifi�e, sinon l'adresse de destination est suppos�e comme �tant sur le r�seau support� par l'interface.
Pour manipuler ce tableau, une commande sp�ciale est utilis�e. Cette commande prend des arguments et les convertit en appels syst�me pour demander au noyau d'ajouter, supprimer ou modifier des entr�es dans la table de routage. Cette commande s'appelle `route'.
Un exemple simple. Imaginez que vous ayez un r�seau Ethernet. On vous a dit que c'est un r�seau classe C avec une adresse de 192.168.1.0. On vous fournit une adresse IP 192.168.1.10 pour votre usage et on vous a dit que 192.168.1.1 est un routeur connect� � l'Internet.
La premi�re �tape est de configurer l'interface comme indiqu� plus haut. Vous utiliserez la commande :
root# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up |
Maintenant vous avez besoin d'ajouter une entr�e dans la table de routage pour indiquer au noyau que les datagrammes destin�s aux h�tes dont les adresses correspondent � 192.168.1.* doivent �tre dirig�s vers le p�riph�rique Ethernet. Vous utiliserez une commande comme ceci :
root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 |
Notez l'utilisation de l'argument `-net' pour indiquer au programme route que cette entr�e est une route r�seau. Un autre choix peut �tre `-host' qui est une route sp�cifique d'une adresse IP.
Cette route vous permettra d'�tablir des connexions IP avec tous les h�tes sur votre segment Ethernet. Mais qu'en est-il des h�tes IP qui n'y sont pas ?
Il serait compliqu� d'ajouter des routes pour chaque r�seau destinataire, aussi il y a une astuce utilis�e pour simplifier la t�che. L'astuce est appel�e route par `defaut'. La route par defaut s'adapte � toutes les destinations possibles, mais pas tr�s bien, de telle sorte que si il y a une entr�e qui correspond � l'adresse requise elle sera utilis�e � la place de la route par defaut. L'id�e de la route par defaut est simplement de pouvoir dire `et tout le reste va ici'. Dans l'exemple que j'ai invent�, on utilisera une entr�e telle que :
root# route add default gw 192.168.1.1 eth0 |
L'argument `gw' indique � la commande route que le prochain argument est l'adresse IP, ou le nom, d'une passerelle (gateway) ou d'une machine routeur vers qui tous les datagrammes correspondant � cette entr�e seront dirig�s pour routage ult�rieur.
Ainsi votre configuration compl�te sera :
root# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 root# route add default gw 192.168.1.1 eth0 |
Si vous regardez bien vos fichiers `rc' qui concernent le r�seau vous en trouverez au moins un tr�s semblable � celui-ci. C'est une configuration courante.
Examinons maintenant une configuration un peu plus compliqu�e. Imaginons que nous configurions le routeur examin� auparavant, celui qui avait un lien PPP vers l'Internet et des segments LAN alimentant des stations de travail dans le bureau. Supposons que ce routeur ait 3 segments Ethernet et un lien PPP. Notre configuration de routage ressemblerait � ceci :
root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 root# route add -net 192.168.2.0 netmask 255.255.255.0 eth1 root# route add -net 192.168.3.0 netmask 255.255.255.0 eth2 root# route add default ppp0 |
Chacune des stations de travail utilisera le format plus simple d�crit ci-dessus, seul le routeur aura besoin d'indiquer les routes r�seau s�par�ment car pour les stations de travail le m�canisme de routage par defaut les capturera toutes, laissant au routeur le soin de les s�parer de mani�re appropri�e. Vous pouvez vous demander pourquoi la route par d�faut n'utilise pas `gw'. La raison en est tr�s simple : les protocoles de lien s�rie comme PPP et SLIP ont seulement deux h�tes sur leur r�seau, un � chaque bout. Sp�cifier � l'h�te que l'autre bout de la liaison est une passerelle est sans objet et redondant, car il n'a pas d'autre choix, aussi vous n'avez pas � indiquer de passerelle pour ce type de connexions r�seau. Les autres types comme Ethernet, arcnet ou token ring ont besoin que l'on indique une passerelle car ces r�seaux supportent un grand nombre d'h�tes.
La configuration de routage d�crite ci-dessus est bien adapt�e aux r�seaux simples o� il n'y a que des chemins uniques entre les destinations. Lorsque vous avez un r�seau plus complexe les choses deviennent plus compliqu�es. Heureusement pour la plupart d'entre vous, ce ne sera pas le cas.
Le gros probl�me est qu'avec le `routage manuel' ou `routage statique' comme d�crit ci-dessus, si une machine ou un lien tombe en panne dans le r�seau, alors la seule fa�on de diriger vos datagrammes vers un autre chemin, s'il existe, est d'intervenir manuellement et d'ex�cuter les commandes ad�quates. Naturellement c'est lourd, lent, peu pratique et source de risques. Des techniques vari�es ont �t� d�velopp�es pour r�gler automatiquement les tables de routage dans le cas d'incidents sur un r�seau o� il y a plusieurs routes possibles, toutes ces techniques �tant regroup�es sous le nom de `protocoles de routage dynamique'.
Vous avez peut-�tre entendu parler des plus courants. Ce sont RIP (Routing Information Protocol) et OSPF (Open Shortest Path First Protocol). RIP est tr�s souvent utilis� sur les petits ou moyens r�seaux d'entreprise. L'OPSF est plus moderne et plus apte � g�rer de grands r�seaux et mieux adapt� dans le cas o� il y a un grand nombre de chemins possibles � travers le r�seau. Les impl�mentations usuelles de ces protocoles sont : `routed' - RIP, et `gated' - RIP, OSPF et autres. Le programme `routed' est normalement fourni avec votre distribution Linux ou est inclus dans la paquetage `NetKit' d�crit auparavant.
Un exemple pour vous montrer comment et o� vous pouvez utiliser un protocole de routage dynamique ressemblerait � ceci :
192.168.1.0 / 192.168.2.0 / 255.255.255.0 255.255.255.0 - - | | | /- - -\ /- - -\ | | | |ppp0 // ppp0| | | eth0 |- -| A |- - - //- - - - -| B |- -| eth0 | | | // | | | | \- - -/ \- - -/ | | \ ppp1 ppp1 / | - \ / - \ / \ / \ / \ / \ / \ / \ / \ / ppp0\ /ppp1 /- - -\ | | | C | | | \- - -/ |eth0 | |- - - - -| 192.168.3.0 / 255.255.255.0 |
Nous avons trois routeurs A, B et C. Chacun supporte un segment Ethernet avec un r�seau IP de classe C (masque de r�seau 255.255.255.0). Chaque routeur a �galement une liaison PPP vers chacun des autres routeurs. Ce r�seau forme un triangle.
Il est �vident que la table de routage sur le routeur A ressemble � ceci :
root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 root# route add -net 192.168.2.0 netmask 255.255.255.0 ppp0 root# route add -net 192.168.3.0 netmask 255.255.255.0 ppp1 |
Cela fonctionnera bien jusqu'� ce que le lien entre A et B tombe en panne. Les h�tes sur le segment A (voir le diagramme ci-dessus) ne peuvent pas atteindre les h�tes sur le segment B : leurs datagrammes seront dirig�s sur le lien ppp0 du routeur A qui est rompu. Ils pourront encore continuer � parler aux h�tes du segment C, et les h�tes du segment C pourront toujours parler � ceux du segment B car la liaison reste intacte.
Si A peut parler � C et si C peut toujours parler � B, pourquoi A ne routerait-il pas ses datagrammes pour B via C, et laisser ensuite C les envoyer � B ? C'est exactement le type de probl�mes que les protocoles de routage dynamique comme RIP sont en mesure de r�soudre. Si chacun des routeurs A, B et C utilisent un d�mon de routage (NdT: d�mon est une francisation famili�re du vocable informatique anglais daemon, qui signifie Disk And Extension MONitor, c'est � dire qui n'est pas invoqu� manuellement mais attend en t�che de fond que quelque chose se passe, que quelque condition se produise. Ce terme fut introduit au d�part sous CTSS (Compatible Time Sharing System), un anc�tre du syst�me MULTICS, lui-m�me parent d'UNIX (voir la traduction de Ren� Cougnenc de `Le syst�me Linux' de M. Welsh et L. Kaufman chez O'Reilly International Thomson), alors leurs tables de routage seront automatiquement r�gl�es pour refl�ter le nouvel �tat du r�seau m�me si l'une des liaisons est d�fectueuse. Configurer un tel r�seau est simple, sur chaque routeur vous devez seulement faire deux choses. Dans ce cas, pour le routeur A :
root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 root# /usr/sbin/routed |
Le d�mon de routage `routed' trouve automatiquement tous les ports actifs vers le r�seau quand il d�marre et �coute tous les messages sur chacun des p�riph�riques r�seau ce qui lui permet de d�terminer et de mettre � jour sa table de routage.
C'�tait une tr�s br�ve explication du routage dynamique et de son utilisation. Si vous voulez d'avantage d'explications reportez-vous aux r�f�rences list�es en d�but de document.
Les points importants relatifs au routage dynamique sont :
Vous n'avez besoin d'utiliser un d�mon de routage dynamique que quand votre machine Linux peut choisir entre plusieurs routes pour une destination donn�e. C'est la cas par exemple lorsque vous envisagez d'utiliser IP masquerade.
Le d�mon de routage dynamique modifiera automatiquement votre table de routage pour tenir compte des changements survenus dans votre r�seau.
RIP est adapt� aux r�seaux de petite et moyenne taille.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:32