<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V5.0//EN" "/usr/share/xml/docbook/schema/dtd/5.0/docbook.dtd" [
<!ENTITY url.quagga '<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.quagga.net/">
  <citetitle>Quagga</citetitle></link>'>
<!ENTITY url.linuxmag '<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.linuxmag-france.org/">
  <citetitle>Linux Magazine</citetitle></link>'>
<!ENTITY url.pmassol '<link xmlns="http://docbook.org/ns/docbook" xlink:href="http://www.pmassol.net/">
  <citetitle>Pacôme Massol</citetitle></link>'>
]>
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="zebra.statique" xml:lang="fr">
<info>
  <title xmlns:xlink="http://www.w3.org/1999/xlink">Initiation au routage, 1ère partie</title>

  <abstract xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">Cet article est le premier d'une série rédigée par Pacôme Massol sur
    l'utilisation d'un système GNU/Linux comme routeur. Le logiciel présenté,
    <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Zebra</citetitle>, ainsi que son successeur
    <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Quagga</citetitle> possèdent de nombreux atouts pour faciliter
    le développement d'équipements d'interconnexion réseau entièrement basés
    sur du logiciel libre. L'article a été publié dans le numéro 42 de
    <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Linux Magazine</citetitle> en Septembre 2002. La version publiée
    ici ne contient que quelques différences mineures sur la configuration du
    logiciel.</para>
  </abstract>

  <authorgroup xmlns:xlink="http://www.w3.org/1999/xlink">
    <author xmlns:xlink="http://www.w3.org/1999/xlink">
      <personname xmlns:xlink="http://www.w3.org/1999/xlink">
        <firstname xmlns:xlink="http://www.w3.org/1999/xlink">Pacôme</firstname><surname xmlns:xlink="http://www.w3.org/1999/xlink">Massol</surname>
      </personname>
      <personblurb xmlns:xlink="http://www.w3.org/1999/xlink">
	<para xmlns:xlink="http://www.w3.org/1999/xlink">Article publié dans le n°42 de <link xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.linuxmag-france.org/">
  <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Linux Magazine</citetitle></link> - Septembre
	2002</para>
      </personblurb>
      <affiliation xmlns:xlink="http://www.w3.org/1999/xlink">
        <address xmlns:xlink="http://www.w3.org/1999/xlink"><email xmlns:xlink="http://www.w3.org/1999/xlink">pacome.massol(at)laposte.net</email></address>
      </affiliation>
    </author>
    <editor xmlns:xlink="http://www.w3.org/1999/xlink">
      <personname xmlns:xlink="http://www.w3.org/1999/xlink">
      <firstname xmlns:xlink="http://www.w3.org/1999/xlink">Philippe</firstname><surname xmlns:xlink="http://www.w3.org/1999/xlink">Latu</surname>
      </personname>
      <personblurb xmlns:xlink="http://www.w3.org/1999/xlink">
	<para xmlns:xlink="http://www.w3.org/1999/xlink">Responsable de la publication de cet article sur le site Linux
	France.</para>
      </personblurb>
      <affiliation xmlns:xlink="http://www.w3.org/1999/xlink">
        <address xmlns:xlink="http://www.w3.org/1999/xlink"><email xmlns:xlink="http://www.w3.org/1999/xlink">philippe.latu(at)inetdoc.net</email></address>
      </affiliation>
    </editor>
  </authorgroup>

  <keywordset xmlns:xlink="http://www.w3.org/1999/xlink">
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">massol</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">pacome</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">reseau</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">zebra</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">cisco</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">route</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">router</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">routeur</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">routage</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">ip</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">ipv4</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">ipv6</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">rip</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">ripd</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">ospf</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">ospfd</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">bgp</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">bgpd</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">linux</keyword>
    <keyword xmlns:xlink="http://www.w3.org/1999/xlink">quagga</keyword>
  </keywordset>
</info>

<sect1 xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="zebra.statique.legal.meta">
  <title xmlns:xlink="http://www.w3.org/1999/xlink">Copyright et Licence</title>

  <literallayout xmlns:xlink="http://www.w3.org/1999/xlink" class="monospaced">
  Copyright (c) 2002-2004 Pacôme Massol
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.2
  or any later version published by the Free Software Foundation;
  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
  Texts.  A copy of the license is included in the section entitled "GNU
  Free Documentation License".
  </literallayout>

  <literallayout xmlns:xlink="http://www.w3.org/1999/xlink" class="monospaced">
  Copyright (c) 2002-2004 Pacôme Massol
  Permission est accordée de copier, distribuer et/ou modifier ce
  document selon les termes de la Licence de Documentation Libre GNU
  (GNU Free Documentation License), version 1.1 ou toute version
  ultérieure publiée par la Free Software Foundation ; sans
  Sections Invariables ; sans Texte de Première de Couverture, et
  sans Texte de Quatrième de Couverture. Une copie de
  la présente Licence est incluse dans la section intitulée
  « Licence de Documentation Libre GNU ».
  </literallayout>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Méta-information</title>
    <para xmlns:xlink="http://www.w3.org/1999/xlink">Cet article est écrit avec <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.docbook.org">
    <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">DocBook</citetitle></link> XML sur un système
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.debian.org">
    <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Debian GNU/Linux</citetitle></link>.
    Il est disponible en version imprimable au format PDF :
    <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.inetdoc.net/pdf/zebra.statique.pdf">
    <literal xmlns:xlink="http://www.w3.org/1999/xlink">zebra.statique.pdf</literal></link>.</para>

    <para xmlns:xlink="http://www.w3.org/1999/xlink">Toutes les commandes utilisées dans ce document ne sont pas
    spécifiques à une version particulière des systèmes UNIX ou GNU/Linux.
    Comme la distribution <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Debian GNU/Linux</citetitle> est
    utilisée pour l'ensemble des supports du site
    <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">inetdoc.net</citetitle>, voici une liste des paquets
    contenant les commandes nécessaires :</para>
    <itemizedlist xmlns:xlink="http://www.w3.org/1999/xlink">
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink"><application xmlns:xlink="http://www.w3.org/1999/xlink">net-tools</application> - The NET-3 networking
      toolkit</para>
      </listitem>
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink"><application xmlns:xlink="http://www.w3.org/1999/xlink">quagga</application> - Unofficial successor of the
      Zebra BGP/OSPF/RIP routing daemon</para>
      </listitem>
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink"><application xmlns:xlink="http://www.w3.org/1999/xlink">quagga-doc</application> - info files for
      quagga</para>
      </listitem>
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink"><application xmlns:xlink="http://www.w3.org/1999/xlink">zebra</application> &amp;
      <application xmlns:xlink="http://www.w3.org/1999/xlink">zebra-doc</application> - anciens paquets non mis à jour
      depuis 2003.</para> 
      </listitem>
    </itemizedlist>

    <para xmlns:xlink="http://www.w3.org/1999/xlink">Les copies d'écran présentées ici correspondent à la publication
    initiale. Depuis, les versions de <application xmlns:xlink="http://www.w3.org/1999/xlink">Zebra</application> puis de
    <application xmlns:xlink="http://www.w3.org/1999/xlink">Quagga</application> ont évolué et l'affichage des
    informations de routage a été modifié. Cependant, ces modifications ne
    devraient pas gêner les lecteurs.</para>
  </sect2>
</sect1>

<sect1 xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="zebra.statique.avant-propos">
  <title xmlns:xlink="http://www.w3.org/1999/xlink">Avant-propos</title>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Comment, au travers d'un réseau étendu comme Internet, un ordinateur
  arrive-t-il à communiquer avec un autre situé à des kilomètres et dont il ne
  connaît à peu près rien si ce n'est son adresse IP ? Les réseaux de
  nombreux opérateurs publics et privés assurent une connexion physique entre
  les deux appareils. Mais ce n'est pas tout. Cela fonctionne parce que le
  protocole IP est routable. Les objectifs de cette série d'articles sont de
  vous présenter les principes du routage ainsi que la configuration des
  routeurs dans un réseau.</para>
  
  <para xmlns:xlink="http://www.w3.org/1999/xlink">D'un point de vue utilisateur, nous considérons Internet comme sur la
  figure A : un immense et unique réseau. En réalité, Internet est composé
  d'un ensemble de réseaux reliés via des appareils particuliers : les
  routeurs (figure B).</para>

  <informalfigure xmlns:xlink="http://www.w3.org/1999/xlink">
  <mediaobject xmlns:xlink="http://www.w3.org/1999/xlink">
    <imageobject xmlns:xlink="http://www.w3.org/1999/xlink">
    <imagedata fileref="images/Internet.png" format="PNG" contentwidth="10cm" width="10.5cm"/>
    </imageobject>
    <caption xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink">Internet un réseau de routeurs</para>
    </caption>
  </mediaobject>
  </informalfigure>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Le protocole réseau de l'Internet : <acronym xmlns:xlink="http://www.w3.org/1999/xlink">IP</acronym> est
  capable de choisir un chemin (une route) suivant lequel les paquets de
  données seront relayés de proche en proche jusqu'au destinataire. À chaque
  relais sur la route correspond un routeur. L'ordinateur émetteur du paquet de
  données doit trouver le premier relais. Ensuite, chaque routeur est chargé de
  trouver le suivant. Enfin, le dernier routeur remet le paquet sur le réseau
  du destinataire. Le routage <acronym xmlns:xlink="http://www.w3.org/1999/xlink">IP</acronym> fonctionne de façon
  totalement décentralisée au niveau des appareils qui constituent le réseau.
  Aucun n'a une vision globale de la route que prendront les paquets de
  données.</para>
</sect1>

<sect1 xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="zebra.statique.principes">
  <title xmlns:xlink="http://www.w3.org/1999/xlink">Les principes du routage</title>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">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 :</para>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Une adresse IP est structurée</title>
    
    <para xmlns:xlink="http://www.w3.org/1999/xlink">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 :</para>
    
    <itemizedlist xmlns:xlink="http://www.w3.org/1999/xlink">
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
	<para xmlns:xlink="http://www.w3.org/1999/xlink">la première partie (ou préfixe) donne le numéro du réseau,</para>
      </listitem>
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
	<para xmlns:xlink="http://www.w3.org/1999/xlink">la seconde partie (ou suffixe) donne le numéro de l'interface
	dans ce réseau.</para>
      </listitem>
    </itemizedlist>
    
    <para xmlns:xlink="http://www.w3.org/1999/xlink">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 <literal xmlns:xlink="http://www.w3.org/1999/xlink">eth0</literal> avec
    une adresse IP <literal xmlns:xlink="http://www.w3.org/1999/xlink">192.168.2.254</literal> et un masque réseau
    <literal xmlns:xlink="http://www.w3.org/1999/xlink">255.255.255.0</literal> :</para>
    
<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">   192.168.  2.1
ET 255.255.255.0
  ---------------
   192.168.  2.0 =&gt; préfixe réseau de l'adresse
</screen>

    <para xmlns:xlink="http://www.w3.org/1999/xlink">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.</para>
  </sect2>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Les paquets de données comportent l'adresse IP de l'émetteur et du
    destinataire</title>

    <para xmlns:xlink="http://www.w3.org/1999/xlink">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 :</para>

<informalfigure xmlns:xlink="http://www.w3.org/1999/xlink">
<mediaobject xmlns:xlink="http://www.w3.org/1999/xlink">
  <imageobject xmlns:xlink="http://www.w3.org/1999/xlink">
    <imagedata fileref="images/datagr.png" format="PNG" contentwidth="9cm" width="9.5cm"/>
  </imageobject>
  <caption xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">Datagramme IP</para>
  </caption>
</mediaobject>
</informalfigure>
    
    <para xmlns:xlink="http://www.w3.org/1999/xlink">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.</para>
  </sect2>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Chaque appareil possède une table de routage gérée par le logiciel
    IP</title>

    <para xmlns:xlink="http://www.w3.org/1999/xlink">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 :</para>

    <table xmlns:xlink="http://www.w3.org/1999/xlink" frame="all" width="100%">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Table de routage</title>
    <tgroup xmlns:xlink="http://www.w3.org/1999/xlink" cols="3" align="left" colsep="1" rowsep="1">
      <thead xmlns:xlink="http://www.w3.org/1999/xlink">
      <row xmlns:xlink="http://www.w3.org/1999/xlink">
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">Réseau</entry>
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">Masque</entry>
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">Moyen de l'atteindre</entry>
      </row>
      </thead>
      <tbody xmlns:xlink="http://www.w3.org/1999/xlink">
      <row xmlns:xlink="http://www.w3.org/1999/xlink">
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">192.168.2.0</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink">255.255.255.0</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink">eth0</entry>
      </row>
      <row xmlns:xlink="http://www.w3.org/1999/xlink">
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">100.0.0.0</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink">255.0.0.0</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink">eth1</entry>
      </row>
      <row xmlns:xlink="http://www.w3.org/1999/xlink">
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">101.0.0.0</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink">255.0.0.0</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink">eth2</entry>
      </row>
      <row xmlns:xlink="http://www.w3.org/1999/xlink">
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">192.168.1.0</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink">255.255.255.0</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink">100.0.0.1</entry>
      </row>
      <row xmlns:xlink="http://www.w3.org/1999/xlink">
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">192.168.3.0</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink">255.255.255.0</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink">101.0.0.2</entry>
      </row>
      </tbody>
    </tgroup>
    </table>

    <para xmlns:xlink="http://www.w3.org/1999/xlink">Cette table est riche d'enseignements. On apprend très précisément
    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. En revanche, 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 :</para>

<informalfigure xmlns:xlink="http://www.w3.org/1999/xlink">
<mediaobject xmlns:xlink="http://www.w3.org/1999/xlink">
  <imageobject xmlns:xlink="http://www.w3.org/1999/xlink">
    <imagedata fileref="images/topo1.png" format="PNG" contentwidth="12cm" width="12.5cm"/>
  </imageobject>
  <caption xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">Topologie d'après une table de routage</para>
  </caption>
</mediaobject>
</informalfigure>

    <para xmlns:xlink="http://www.w3.org/1999/xlink">Quelques observations complémentaires :</para>
    <itemizedlist xmlns:xlink="http://www.w3.org/1999/xlink">
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink">É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).</para>
      </listitem>
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink">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.</para>
      </listitem>
    </itemizedlist>
  </sect2>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Tous les appareils sous IP exécutent le même algorithme</title>

    <para xmlns:xlink="http://www.w3.org/1999/xlink">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 (<wordasword xmlns:xlink="http://www.w3.org/1999/xlink">best match</wordasword>).</para>

    <para xmlns:xlink="http://www.w3.org/1999/xlink">Au total, seules quatre possibilités sont imaginables :</para>
    <itemizedlist xmlns:xlink="http://www.w3.org/1999/xlink" spacing="compact">
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink">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é.</para>
      </listitem>
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink">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.</para>
      </listitem>
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink">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.</para>
      </listitem>
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink">Si aucun des trois cas précédents n'est rempli, on déclare une
      erreur de routage.</para>
      </listitem>
    </itemizedlist>
  </sect2>
</sect1>

<sect1 xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="zebra.statique.pratique">
  <title xmlns:xlink="http://www.w3.org/1999/xlink">Place à la pratique</title>
  
  <para xmlns:xlink="http://www.w3.org/1999/xlink">Voilà, vous savez tout sur les aspects théoriques. Une mise en pratique
  est maintenant indispensable. Je vous propose de travailler avec le routeur
  logiciel GNU <link xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.quagga.net/">
  <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Quagga</citetitle></link>. C'est, à mon sens, un excellent logiciel, pour les
  raisons suivantes :</para>

  <itemizedlist xmlns:xlink="http://www.w3.org/1999/xlink" spacing="compact">
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">c'est un logiciel libre sous licence GNU,</para>
    </listitem>
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">il propose une interface de configuration interactive accessible via telnet,</para>
    </listitem>
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">il fonctionne selon une philosophie et un langage de configuration
    proche de routeurs répandus dans les entreprises (ce qui permet d'avoir
    accès à une bonne bibliographie),</para>
    </listitem>
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">il supporte les principaux protocoles de routage (nous développerons
    ce point dans la deuxième partie de cet article),</para>
    </listitem>
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">il fonctionne avec IPv6.</para>
    </listitem>
  </itemizedlist>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Les manipulations présentées dans la version originale du document ont
  été réalisées avec <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Zebra</citetitle> 0.91a sous une Redhat
  7.2. Ce logiciel est prévu pour fonctionner sous Linux (noyau 2.0.37 et
  suivants) et BSD. Une version pour Hurd était prévue.</para>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Les mêmes manipulations peuvent être effectuées avec <link xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.quagga.net/">
  <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Quagga</citetitle></link> ; le
  successeur de <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Zebra</citetitle>. Seule la localisation des
  fichiers de configuration change.</para>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Tous les éléments de syntaxe restent conformes à la syntaxe de
  l'<systemitem xmlns:xlink="http://www.w3.org/1999/xlink" class="systemname">IOS</systemitem> du constructeur
  <trademark xmlns:xlink="http://www.w3.org/1999/xlink">Cisco Systems</trademark>. Au fil des ans, cette syntaxe est
  devenue le standard de fait de la configuration des équipements
  d'interconnexion.</para>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Je vous propose de travailler avec la maquette suivante :</para>

<informalfigure xmlns:xlink="http://www.w3.org/1999/xlink">
<mediaobject xmlns:xlink="http://www.w3.org/1999/xlink">
  <imageobject xmlns:xlink="http://www.w3.org/1999/xlink">
    <imagedata fileref="images/topo2.png" format="PNG" contentwidth="12cm" width="12.5cm"/>
  </imageobject>
  <caption xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">Topologie de travail</para>
  </caption>
</mediaobject>
</informalfigure>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Ce réseau est composé de 3 routeurs (R1, R2 et R3) et de trois stations
  (S1, S2, S3). Je suppose que toutes les interfaces réseau sont actives et
  correctement configurées. Les masques réseau à utiliser sont les masques par
  défaut de la classe d'adresse (255.0.0.0 pour les adresses commençant par 100
  et 101 et 255.255.255.0 pour les adresses commençant par 192).</para>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Mise en place des routeurs</title>

  <para xmlns:xlink="http://www.w3.org/1999/xlink"><citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Zebra</citetitle> ou <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Quagga</citetitle> doivent
  être installés sur chaque ordinateur qui fera office de routeur. Vous pouvez
  vous procurer des paquets d'installation ou bien compiler le logiciel à
  partir des fichiers sources. Dans ce cas, l'installation se fait par les
  commandes habituelles :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">./configure ; make ; make install
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Cette phase produit plusieurs exécutables (un par protocole de routage)
  mais nous n'utiliserons pour l'instant que <command xmlns:xlink="http://www.w3.org/1999/xlink">zebra</command>. En
  principe, les exécutables ont été copiés dans <filename xmlns:xlink="http://www.w3.org/1999/xlink" class="directory">/usr/local/bin</filename> et les fichiers de configuration
  dans <filename xmlns:xlink="http://www.w3.org/1999/xlink" class="directory">/usr/local/etc</filename> (ils portent le
  même nom que l'exécutable avec l'extension .conf). Suivant la méthode
  d'installation, ils pourront être situés ailleurs, ce n'est pas un problème.
  Pour une aide plus détaillée, reportez-vous sur mon site, vous y trouverez
  une traduction française du manuel.</para>

  <table xmlns:xlink="http://www.w3.org/1999/xlink" frame="all" width="100%" xml:id="daemon.setup">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Table de localisation des éléments logiciels</title>
    <tgroup xmlns:xlink="http://www.w3.org/1999/xlink" cols="4" align="left" colsep="1" rowsep="1">
      <thead xmlns:xlink="http://www.w3.org/1999/xlink">
      <row xmlns:xlink="http://www.w3.org/1999/xlink">
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">Type d'installation</entry>
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">Fichiers binaires</entry>
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">Fichiers de configuration</entry>
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">(Script|Commande) d'initialisation</entry>
      </row>
      </thead>
      <tbody xmlns:xlink="http://www.w3.org/1999/xlink">
      <row xmlns:xlink="http://www.w3.org/1999/xlink">
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">À partir des sources</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink"><filename xmlns:xlink="http://www.w3.org/1999/xlink" class="directory">/usr/local/bin/</filename></entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink"><filename xmlns:xlink="http://www.w3.org/1999/xlink" class="directory">/usr/local/etc/</filename></entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink"><command xmlns:xlink="http://www.w3.org/1999/xlink">zebra -d</command></entry>
      </row>
      <row xmlns:xlink="http://www.w3.org/1999/xlink">
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">Paquetage Debian zebra</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink"><filename xmlns:xlink="http://www.w3.org/1999/xlink" class="directory">/usr/lib/zebra/</filename></entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink"><filename xmlns:xlink="http://www.w3.org/1999/xlink" class="directory">/etc/zebra/</filename></entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink"><command xmlns:xlink="http://www.w3.org/1999/xlink">/etc/init.d/zebra (start|stop|restart)</command></entry>
      </row>
      <row xmlns:xlink="http://www.w3.org/1999/xlink">
        <entry xmlns:xlink="http://www.w3.org/1999/xlink">Paquetage Debian quagga</entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink"><filename xmlns:xlink="http://www.w3.org/1999/xlink" class="directory">/usr/lib/quagga/</filename></entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink"><filename xmlns:xlink="http://www.w3.org/1999/xlink" class="directory">/etc/quagga/</filename></entry>
	<entry xmlns:xlink="http://www.w3.org/1999/xlink"><command xmlns:xlink="http://www.w3.org/1999/xlink">/etc/init.d/quagga (start|stop|restart)</command></entry>
      </row>
      </tbody>
    </tgroup>
  </table>
      
  <para xmlns:xlink="http://www.w3.org/1999/xlink">Avant de charger le démon de routage, dans le répertoire des fichiers
  de configuration de chaque routeur créez un fichier
  <filename xmlns:xlink="http://www.w3.org/1999/xlink">zebra.conf</filename>. Insérez les deux lignes
  suivantes :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">hostname Rx(Zebra)
password foo
</screen>

  <itemizedlist xmlns:xlink="http://www.w3.org/1999/xlink">
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">Remplacez le x de <literal xmlns:xlink="http://www.w3.org/1999/xlink">Rx(Zebra)</literal> par le numéro du
    routeur</para>
    </listitem>
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">A la place de <literal xmlns:xlink="http://www.w3.org/1999/xlink">foo</literal>, indiquez le mot de passe que
    vous souhaitez saisir lorsque vous vous connecterez au routeur via
    telnet.</para>
    </listitem>
  </itemizedlist>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Maintenant, vous pouvez lancer le démon de routage avec la commande ou
  le script indiqué dans la <link xmlns:xlink="http://www.w3.org/1999/xlink" linkend="daemon.setup">table ci-dessus</link>
  afin que le logiciel de routage s'exécute en tâche de fond.</para>

  <variablelist xmlns:xlink="http://www.w3.org/1999/xlink">
    <varlistentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="manual">
    <term xmlns:xlink="http://www.w3.org/1999/xlink">Configuration manuelle sans paquet</term>
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">Exemple du routeur R1 ; respectez bien l'ordre des
    commandes :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R1 # zebra -d
</screen>
    </listitem>
    </varlistentry>
    <varlistentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="package">
    <term xmlns:xlink="http://www.w3.org/1999/xlink">Configuration avec le paquet
    <application xmlns:xlink="http://www.w3.org/1999/xlink">Quagga</application> :</term>
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">Le fichier <filename xmlns:xlink="http://www.w3.org/1999/xlink">/etc/quagga/daemons</filename> spécifie la liste
    des démons à utiliser :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80"># This file tells the quagga package which daemons to start.
#
# Entries are in the format: &lt;daemon&gt;=(yes|no|priority)
#   0, "no"  = disabled
#   1, "yes" = highest priority
#   2 .. 10  = lower priorities
# Read /usr/share/doc/quagga/README.Debian for details.
#
# Sample configurations for these daemons can be found in
# /usr/share/doc/quagga/examples/.
#
# ATTENTION:
#
# When activation a daemon at the first time, a config file, even if it is
# empty, has to be present *and* be owned by the user and group "quagga", else
# the daemon will not be started by /etc/init.d/quagga. The permissions should
# be u=rw,g=r,o=.
# When using "vtysh" such a config file is also needed. It should be owned by
# group "quaggavty" and set to ug=rw,o= though.
#
zebra=yes
bgpd=no
ospfd=no
ospf6d=no
ripd=no
ripngd=no
isisd=no
</screen>
    <para xmlns:xlink="http://www.w3.org/1999/xlink">La commande suivante sert à relancer les démons après avoir édité le
    fichier ci-dessus :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R1 # /etc/init.d/quagga start
</screen>
    </listitem>
    </varlistentry>
  </variablelist>
  </sect2>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Configuration des stations</title>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Plaçons-nous dans le shell de S1 et observons la configuration des
  interfaces :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">S1 # ifconfig
eth0      Lien encap:Ethernet  HWaddr 00:50:56:40:40:98
          inet adr:192.168.1.1  Bcast:192.168.1.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:89 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:100
          RX bytes:6771 (6.6 Kb) TX bytes:3357 (3.2 Kb)
          Interruption:10 Adresse de base:0x1080

lo        Lien encap:Boucle locale
          inet adr:127.0.0.1 Masque:255.0.0.0
          UP LOOPBACK RUNNING MTU:16436 Metric:1
          RX packets:77 errors:0 dropped:0 overruns:0 frame:0
          TX packets:77 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:4758 (4.6 Kb) TX bytes:4758 (4.6 Kb)
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Cet appareil dispose d'une interface Ethernet active nommée
  <literal xmlns:xlink="http://www.w3.org/1999/xlink">eth0</literal> ainsi que de l'interface de bouclage logiciel
  <literal xmlns:xlink="http://www.w3.org/1999/xlink">lo</literal>. Toute machine fonctionnant avec IP possède cette
  interface.</para>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Je vous ai dit tout à l'heure que tout appareil fonctionnant sous IP
  disposait d'une table de routage. Listons le contenu de cette table sur
  S1 :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">S1 # route -n
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">A partir des adresses IP des interfaces de l'ordinateur, le logiciel IP
  en a déduit cette table de routage élémentaire. Pour lui, toutes les machines
  qui disposent d'une adresse commençant par 192.168.1.0 sont forcément sur le
  réseau physique connecté à l'interface <literal xmlns:xlink="http://www.w3.org/1999/xlink">eth0</literal>.</para>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Conclusion, si je tente un <command xmlns:xlink="http://www.w3.org/1999/xlink">ping</command> vers une adresse de
  ce réseau (et si une machine possède cette adresse), j'obtiens une réponse.
  Essayons entre S1 et R1 qui font partie du même réseau :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">S1 # ping -c2 192.168.1.254
PING 192.168.1.254 (192.168.1.254): 56 data bytes
64 bytes from 192.168.1.254: icmp_seq=0 ttl=64 time=2.308 ms
64 bytes from 192.168.1.254: icmp_seq=1 ttl=64 time=2.308 ms

--- 192.168.1.254 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 2.308/2.308/2.308 ms
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Je cherche à contacter un appareil dont l'adresse commence par
  192.168.1.0. Cette adresse figure dans la table routage, donc tout va
  bien.</para>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Essayons maintenant de contacter l'interface <literal xmlns:xlink="http://www.w3.org/1999/xlink">eth1</literal> de
  R1 :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">S1 # ping 100.0.0.1
connect: Network is unreachable
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">La sanction est immédiate. En clair, votre système d'exploitation
  favori vous répond : «désolé, mais je n'ai absolument aucune idée de la façon
  dont je pourrais bien atteindre le réseau 100.0.0.0».</para>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Pour résoudre ce problème, il faut que je renseigne ma table de routage
  et que j'indique comment atteindre le réseau 100.0.0.0. Sur le schéma, c'est
  très clair. Pour aller sur ce réseau, il faut passer par R1. Comme S1 ne peut
  joindre pour l'instant que les appareils dont l'adresse commence par
  192.168.1.0, j'indiquerai comme moyen d'atteindre le réseau, l'adresse
  192.168.1.254 qui est l'adresse IP de l'interface du routeur qui se situe sur
  le réseau de S1. Pour réaliser cette configuration, tapons la
  commande :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">S1 # route add -net 100.0.0.0 netmask 255.0.0.0 gw 192.168.1.254
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Félicitations ! Vous venez de saisir votre première commande de
  configuration de routage. Elle signifie que le réseau 100.0.0.0/8 (masque
  réseau sur 8 bits) est situé derrière le routeur (gw = gateway) d'adresse
  192.168.1.254. Vous pouvez le tester, cette configuration fonctionne pour le
  réseau 100.0.0.0 mais si l'on généralise, il faudrait saisir pour tous les
  réseaux que l'on cherche à contacter, une commande identique ! Observez bien
  le schéma. R1 est le seul routeur directement accessible par S1. Quel que
  soit le réseau que S1 cherche à contacter, il ne peut être que derrière R1.
  Par conséquent, il existe une commande qui permet d'indiquer une route par
  défaut :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">S1 # route add default gw 192.168.1.254
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Listons le contenu de la table de routage :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">S1 # route -n
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
100.0.0.0       192.168.1.254   255.0.0.0       U     0      0        0 eth0
default         192.168.1.254   0.0.0.0         UG    0      0        0 eth0
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">La ligne commençant par 100.0.0.0 est devenue inutile. Supprimons
  la :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">S1 # route del -net 100.0.0.0 netmask 255.0.0.0 gw 192.168.1.254
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">La plupart du temps, il n'existe qu'un seul routeur pour sortir d'un
  réseau d'extrémité. On configure alors sur chaque station l'adresse IP de ce
  routeur par défaut. Le logiciel IP crée une entrée dans sa table de routage
  identique à celle que nous venons d'observer. Vous devrez donc, sur chaque
  station de notre réseau définir l'adresse de son routeur par défaut, soit en
  tapant une commande route, soit en modifiant les fichiers de configuration
  des cartes réseau et en redémarrant.</para>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Revenons sur S1 et testons notre configuration. Contactons à nouveau
  l'interface 100.0.0.1 du routeur R1 :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">S1 # ping -c2 100.0.0.1
PING 100.0.0.1 (100.0.0.1): 56 data bytes
64 bytes from 100.0.0.1: icmp_seq=0 ttl=64 time=3.746 ms
64 bytes from 100.0.0.1: icmp_seq=1 ttl=64 time=1.812 ms

--- 100.0.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 1.812/2.779/3.746 ms
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Parfait ça marche ! Je devrais donc pouvoir également contacter R2
  puisqu'il est lui aussi dans le réseau 100.0.0.0 :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">S1 # ping 100.0.0.2
PING 100.0.0.2 (100.0.0.2) from 192.168.1.1 : 56(84) bytes of data.

(il ne se passe rien, donc CTRL-C)

--- 100.0.0.2 ping statistics ---
10 packets transmitted, 0 packets received, 100% packet loss
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Eh bien, ce n'est pas brillant. Certes, S1 n'indique plus de message
  d'erreur mais les paquets transmis ne sont jamais retournés. Vous vous doutez
  qu'il existe une solution. Profitons-en, c'est l'occasion de vous donner
  quelques éléments pour repérer un problème de routage.</para>
  </sect2>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Configuration des routeurs</title>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Puisque le routage est une chaîne, il faut suivre les paquets dans
  chaque maillon afin de trouver l'origine du problème. Nous savons que
  l'interface eth1 du routeur R1 reçoit les paquets puisqu'elle nous les
  retourne. Donc, le problème vient de R2. Positionnons-nous dans le shell de
  R2, la commande <command xmlns:xlink="http://www.w3.org/1999/xlink">tcpdump</command> va nous aider à observer ce qu'il
  se passe sur son interface eth1 :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R2 # tcpdump -nt -i eth1
tcpdump: listening on eth1
192.168.1.1 &gt; 100.0.0.2: icmp: echo request (DF)
192.168.1.1 &gt; 100.0.0.2: icmp: echo request (DF)
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Oui, elle reçoit les paquets... mais elle n'en retourne aucun. Vous
  l'avez compris : comme pour S1 tout à l'heure, R2 n'a aucune idée de
  l'endroit où se trouve le réseau de l'émetteur des paquets (192.168.1.0)
  puisque celui-ci n'est pas directement connecté. Il faut donc configurer sa
  table de routage. Pour ce faire, nous allons cette fois travailler avec
  Zebra. Zebra possède une interface telnet sur le port 2601. Dans le shell de
  R2, tapez :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R2 # telnet localhost 2601
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is zebra (version 0.91a).
Copyright 1996-2001 Kunihiro Ishiguro.

User Access Verification
Password:
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Tapez le mot de passe que vous avez saisi dans le fichier
  <filename xmlns:xlink="http://www.w3.org/1999/xlink">zebra.conf</filename>, vous arrivez dans le mode de visualisation
  de la configuration du routeur. Ensuite, passez en mode de configuration
  (mode privilégié appelé mode enable dans le logiciel) :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R2(Zebra)&gt; enable
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Pour vous repérer dans Zebra, observez bien le prompt, il vous indique
  dans quel mode vous vous trouvez (par exemple, le # indique que vous êtes en
  mode privilégié). Ensuite, dans l'interpréteur de commande, vous pouvez
  saisir à tout moment un ? Pour obtenir la liste contextuelle des commandes.
  Enfin, lorsque vous appuyez sur la touche tabulation, Zebra complète la
  commande en cours de saisie.</para>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Observons la table de routage gérée par Zebra :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R2(Zebra)# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       I - ISIS, B - BGP, &gt; - selected route, * - FIB route

C&gt;* 100.0.0.0/8 is directly connected, eth1
C&gt;* 101.0.0.0/8 is directly connected, eth2
C&gt;* 127.0.0.0/8 is directly connected, lo
C&gt;* 192.168.2.0/24 is directly connected, eth0
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Nous ne voyons aucune trace du réseau 192.168.1.0. C'est pour cela que
  R2 ne peut retourner les paquets ICMP à S1. Bien sûr, Zebra permet d'ajouter
  une route. Passons en mode «terminal de configuration» :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R2(Zebra)# configure terminal
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Puis ajoutons la route :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R2(Zebra)(config)# ip route 192.168.1.0/24 100.0.0.1
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Revenons au mode enable et listons à nouveau la table :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R2(Zebra)(config)# end
R2(Zebra)# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       I - ISIS, B - BGP, &gt; - selected route, * - FIB route

C&gt;* 100.0.0.0/8 is directly connected, eth1
C&gt;* 101.0.0.0/8 is directly connected, eth2
C&gt;* 127.0.0.0/8 is directly connected, lo
S&gt;* 192.168.1.0/24 [1/0] via 100.0.0.1, eth1
C&gt;* 192.168.2.0/24 is directly connected, eth0
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Une route statique (notée S) est apparue (vous apprendrez dans le
  prochain article comment configurer une route dynamique ainsi que la
  signification des nombres entre crochets [1/0]).</para>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Un ping 100.0.0.2 depuis S1 passe désormais sans problème. Si l'on
  reprend le schéma du réseau, vous vous doutez que des manipulations
  similaires sont à réaliser pour le réseau de S3. Il faut donc ajouter une
  route vers 192.168.3.0/24. Vous connaissez maintenant les
  commandes :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R2(Zebra)# configure terminal
R2(Zebra)(config)# ip route 192.168.3.0/24 101.0.0.2
R2(Zebra)(config)# end
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Visionnons la configuration en mémoire de Zebra :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R2(Zebra)# show running-config

Current configuration:
!
hostname R2(Zebra)
password foo
!
interface lo
!
interface eth0
!
interface eth1
!
interface eth2
!
ip route 192.168.1.0/24 100.0.0.1
ip route 192.168.3.0/24 101.0.0.2
!
line vty
!
end
</screen>
 
  <para xmlns:xlink="http://www.w3.org/1999/xlink">Afin qu'à chaque démarrage de Zebra les routes statiques soient prises
  en compte, il faut enregistrer cette configuration «mémoire» vers le fichier
  <filename xmlns:xlink="http://www.w3.org/1999/xlink">zebra.conf</filename> :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R2(Zebra)# copy running-config startup-config
Configuration saved to /etc/zebra/zebra.conf
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Bien, nous avons presque fini. Quelques routes sont à créer sur R1 et
  R3 pour que le routage sur notre réseau soit complet.</para>
  </sect2>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Une erreur à éviter</title>
    
  <para xmlns:xlink="http://www.w3.org/1999/xlink">Sur R1, il faut créer une route vers 192.168.3.0. Une erreur fréquente
  consiste à créer la route suivante :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R1(Zebra)(config)# ip route 192.168.3.0/24 101.0.0.2
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Ce qui signifie : le réseau 192.168.3.0/24 est situé derrière le
  routeur R3. Bien sûr, cette phrase est juste, mais souvenez-vous de ce que
  nous disions en introduction : le routage fonctionne de proche en
  proche. Ainsi, comme nous sommes sur R1, il suffit d'indiquer que le routeur
  nous permettant d'atteindre le réseau de S3 est R2 et non R3.</para>
  </sect2>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Configuration de R1</title>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Ceci étant dit, voici la configuration de R1 :</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R1(Zebra)# show running-config

Current configuration:
!
hostname R1(Zebra)
password foo
!
interface lo
!
interface eth0
!
interface eth1
!
ip route 101.0.0.0/8 100.0.0.2
ip route 192.168.2.0/24 100.0.0.2
ip route 192.168.3.0/24 100.0.0.2
!
line vty
!
end
</screen>
  </sect2>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Configuration de R3</title>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Avant de lire ci-dessous, essayez de déterminer la configuration de R3.
  Elle est très proche de celle de R1.</para>

<screen xmlns:xlink="http://www.w3.org/1999/xlink" width="80">R3(Zebra)# show running-config

Current configuration:
!
hostname R3(Zebra)
password foo
!
interface lo
!
interface eth0
!
interface eth1
!
ip route 100.0.0.0/8 101.0.0.1
ip route 192.168.1.0/24 101.0.0.1
ip route 192.168.2.0/24 101.0.0.1
!
line vty
!
end
</screen>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">Ouf ! Voilà, c'est fini. Vous devez pouvoir réaliser des
  <command xmlns:xlink="http://www.w3.org/1999/xlink">ping</command> de n'importe quelle machine vers n'importe quelle
  autre.</para>
  </sect2>
</sect1>

<sect1 xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="zebra.statique.conclusion">
  <title xmlns:xlink="http://www.w3.org/1999/xlink">Conclusion</title>

  <para xmlns:xlink="http://www.w3.org/1999/xlink">La configuration des routeurs peut vous sembler fastidieuse, voire
  impossible si le réseau comporte beaucoup de routeurs et que sa topologie
  évolue fréquemment. Il faudrait sans cesse reconfigurer les routeurs.
  Heureusement, le monde est bien fait : il existe des protocoles qui
  permettent aux routeurs de s'échanger les informations de routage dont ils
  disposent afin que les tables s'adaptent aux évolutions du réseau. Le
  protocole RIP permet cela et c'est ce que je vous propose d'aborder dans le
  prochain article.</para>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Bibliographie</title>
    
  <variablelist xmlns:xlink="http://www.w3.org/1999/xlink">
    <varlistentry xmlns:xlink="http://www.w3.org/1999/xlink">
      <term xmlns:xlink="http://www.w3.org/1999/xlink"><citetitle xmlns:xlink="http://www.w3.org/1999/xlink">TCP/IP : Architecture, protocoles et
      applications</citetitle></term>
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink">Douglas COMER, DUNOD. ISBN: 2-10-005384-1 (09/2001) 830 p.</para>
      </listitem>
    </varlistentry>
    <varlistentry xmlns:xlink="http://www.w3.org/1999/xlink">
      <term xmlns:xlink="http://www.w3.org/1999/xlink"><citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Le routage dans l'Internet</citetitle></term>
      <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
      <para xmlns:xlink="http://www.w3.org/1999/xlink">Christian HUITEMA, EYROLLES. ISBN: 2-212-08902-3 (10/1994) 418 p.</para>
      </listitem>
    </varlistentry>
  </variablelist>
  </sect2>

  <sect2 xmlns:xlink="http://www.w3.org/1999/xlink">
    <title xmlns:xlink="http://www.w3.org/1999/xlink">Liens</title>

  <itemizedlist xmlns:xlink="http://www.w3.org/1999/xlink">
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink"><link xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.quagga.net/">
  <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Quagga</citetitle></link></para>
    </listitem>
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink"><link xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.linuxmag-france.org/">
  <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Linux Magazine</citetitle></link></para>
    </listitem>
    <listitem xmlns:xlink="http://www.w3.org/1999/xlink">
    <para xmlns:xlink="http://www.w3.org/1999/xlink">Version originale du document et page personnelle de
    <link xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.pmassol.net/">
  <citetitle xmlns:xlink="http://www.w3.org/1999/xlink">Pacôme Massol</citetitle></link></para>
    </listitem>
  </itemizedlist>
  </sect2>
</sect1>
</article>

