<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Routage avec plusieurs accès Internet/fournisseurs d'accès</title><link href="style.css" rel="stylesheet" type="text/css" /><meta content="DocBook XSL Stylesheets V1.73.2" name="generator" /><link rel="start" href="index.html" title="HOWTO du routage avancé et du contrôle de trafic sous Linux" /><link rel="up" href="ch04.html" title="Chapitre 4. Règles - bases de données des politiques de routage" /><link rel="prev" href="ch04.html" title="Chapitre 4. Règles - bases de données des politiques de routage" /><link rel="next" href="ch05.html" title="Chapitre 5. GRE et autres tunnels" /></head><body><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Routage avec plusieurs accès Internet/fournisseurs d'accès</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch04.html">Précédent</a> </td><th align="center" width="60%">Chapitre 4. Règles - bases de données des politiques de routage</th><td align="right" width="20%"> <a accesskey="n" href="ch05.html">Suivant</a></td></tr></table><hr /></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title"><a id="lartc.rpdb.multiple-links" />Routage avec plusieurs accès Internet/fournisseurs d'accès</h2></div></div></div><p> Une configuration classique est la suivante, où deux fournisseurs d'accès permettent la connexion d'un réseau local (ou même d'une simple machine) à Internet. <pre class="screen"> ________ +--------------+ / | | | +-------------+ Fournisseur 1+------- __ | | | / ___/ \_ +------+-------+ +--------------+ | _/ \__ | if1 | / / \ | | | | Réseau Local -----+ Routeur Linux| | Internet \_ __/ | | | \__ __/ | if2 | \ \___/ +------+-------+ +--------------+ | | | | \ +-------------+ Fournisseur 2+------- | | | +--------------+ \________ </pre> </p><p> Il y a généralement deux questions à se poser pour cette configuration. </p><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a id="N10455" />Accès séparé</h3></div></div></div><p> La première est de savoir comment router les réponses aux paquets entrants par un fournisseur particulier, disons le Fournisseur 1, vers ce même fournisseur. </p><p> Commençons par définir quelques symboles. <span class="command"><strong>$IF1</strong></span> sera le nom de la première interface (if1 sur la figure au-dessus) et <span class="command"><strong>$IF2</strong></span> le nom de la deuxième interface. <span class="command"><strong>$IP1</strong></span> sera alors l'adresse IP associée à <span class="command"><strong>$IF1</strong></span> et <span class="command"><strong>$IP2</strong></span> sera l'adresse IP associée à <span class="command"><strong>$IF2</strong></span>. <span class="command"><strong>$P1</strong></span> sera l'adresse IP de la passerelle du fournisseur d'accès 1 et <span class="command"><strong>$P2</strong></span> sera l'adresse IP de la passerelle du fournisseur d'accès 2. Enfin, <span class="command"><strong>$P1_NET</strong></span> sera l'adresse réseau à l'intérieur duquel se situe <span class="command"><strong>$P1</strong></span> et <span class="command"><strong>$P2_NET</strong></span> sera l'adresse réseau à l'intérieur duquel se situe <span class="command"><strong>$P2</strong></span>. </p><p> Deux tables de routage supplémentaires sont créées, par exemple <span class="command"><strong>T1</strong></span> et <span class="command"><strong>T2</strong></span>. Celles-ci sont ajoutées dans <code class="filename">/etc/iproute2/rt_tables</code>. La configuration du routage dans ces tables s'effectue de la façon suivante : </p><p> <pre class="screen">ip route add $P1_NET dev $IF1 src $IP1 table T1 ip route add default via $P1 table T1 ip route add $P2_NET dev $IF2 src $IP2 table T2 ip route add default via $P2 table T2 </pre> Rien de vraiment spectaculaire. Une route est simplement positionnée vers la passerelle et une route par défaut via cette passerelle est mise en place, comme nous le ferions dans le cas d'un seul fournisseur d'accès. Ici, les routes sont placées dans des tables séparées, une par fournisseur d'accès. Il est à noter que la route vers le réseau suffit, dans la mesure où elle indique comment trouver n'importe quel hôte dans ce réseau, ce qui inclut la passerelle. </p><p> La table de routage principale est maintenant configurée. C'est une bonne idée de router les éléments à destination d'un voisin direct à travers l'interface connectée à ce voisin. Notez les arguments "src" qui assurent que la bonne adresse IP source sera choisie. <pre class="screen">ip route add $P1_NET dev $IF1 src $IP1 ip route add $P2_NET dev $IF2 src $IP2 </pre> Indiquez maintenant votre préférence pour votre route par défaut : <pre class="screen">ip route add default via $P1 </pre> Vous configurez ensuite les règles de routage. Celles-ci définissent la table qui sera vraiment choisie pour le routage. Il faut s'assurer que le routage s'effectue à travers une interface donnée si vous avez l'adresse source correspondante : <pre class="screen">ip rule add from $IP1 table T1 ip rule add from $IP2 table T2 </pre> Cet ensemble de commandes vous assure que toutes les réponses au trafic entrant sur une interface particulière seront envoyées par cette interface. </p><p> <div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Avertissement]" src="images/warning.png" /></td><th align="left">Avertissement</th></tr><tr><td valign="top" align="left"><p> Notes d'un lecteur : si $P0_NET est le réseau local et $IF0 est son interface, alors les entrées suivantes sont désirables : <pre class="screen">ip route add $P0_NET dev $IF0 table T1 ip route add $P2_NET dev $IF2 table T1 ip route add 127.0.0.0/8 dev lo table T1 ip route add $P0_NET dev $IF0 table T2 ip route add $P1_NET dev $IF1 table T2 ip route add 127.0.0.0/8 dev lo table T2 </pre> </p></td></tr></table></div> Nous avons maintenant une configuration très basique. Elle marchera pour tous les processus exécutés sur le routeur lui-même, ainsi que pour le réseau local si celui-ci est masqué. Si ce n'est pas le cas, soit vous avez une plage d'adresses IP pour chaque fournisseur d'accès, soit vous masquez vers l'un des deux fournisseurs d'accès. Dans les deux cas, vous ajouterez des règles indiquant, en fonction de l'adresse IP de la machine du réseau local, vers quel fournisseur vous allez router. </p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a id="N104BD" />Balance de charge</h3></div></div></div><p> La seconde question concerne la balance de charge du trafic sortant vers les deux fournisseurs d'accès. Ceci n'est pas vraiment très dur si vous avez déjà configuré l'accès séparé comme décrit ci-dessus. </p><p> Au lieu de choisir l'un des deux fournisseurs d'accès comme route par défaut, celle-ci peut être une route multi-chemin. Par défaut, le noyau répartira les routes vers les deux fournisseurs d'accès. Ceci est réalisé de la façon suivante (construit également sur l'exemple de la section de l'accès séparé) : <pre class="screen">ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \ nexthop via $P2 dev $IF2 weight 1 </pre> Ceci réalisera la balance des routes vers les deux fournisseurs. Les paramètres <span class="command"><strong>weight</strong></span> peuvent permettre de favoriser un fournisseur par rapport à un autre. </p><p> Il est à noter que la balance de charge ne sera pas parfaite dans la mesure où elle est basée sur les routes et que celles-ci sont mises dans des caches. Ceci signifie que les routes vers les sites les plus souvent utilisés passeront toujours par le même fournisseur d'accès. </p><p> De plus, si vous voulez vraiment mettre en oeuvre ceci, vous devriez également aller consulter les mises à jour de Julien Anastasov à <a class="ulink" href="http://www.ssi.bg/~ja/#routes" target="_top">http://www.ssi.bg/~ja/#routes </a> Elles rendront le travail plus facile. </p></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch04.html">Précédent</a> </td><td align="center" width="20%"><a accesskey="u" href="ch04.html">Niveau supérieur</a></td><td align="right" width="40%"> <a accesskey="n" href="ch05.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">Chapitre 4. Règles - bases de données des politiques de routage </td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%"> Chapitre 5. GRE et autres tunnels</td></tr></table></div></body></html>