<?xml version="1.0" encoding="ISO-8859-15"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<article id="shorewall_setup_guide_fr" lang="fr">
  <!--$Id$-->

  <articleinfo>
    <title>Guide de configuration Shorewall</title>

    <subtitle>Version Française de <foreignphrase lang="en"><ulink
    url="http://www.shorewall.net/shorewall_setup_guide.html">Shorewall Setup
    Guide</ulink></foreignphrase></subtitle>

    <authorgroup>
      <author>
        <firstname>Tom</firstname>

        <surname>Eastep</surname>
      </author>

      <othercredit role="translator">
        <firstname>Fabien</firstname>

        <surname>Demassieux</surname>

        <contrib>Traduction Française initiale</contrib>
      </othercredit>

      <othercredit role="translator">
        <firstname>Guy</firstname>

        <surname>Marcenac</surname>

        <contrib>Adaptation française version 3.0</contrib>
      </othercredit>
    </authorgroup>

    <pubdate><?dbtimestamp format="Y/m/d"?></pubdate>

    <copyright>
      <year>2002-2006</year>

      <holder>Thomas M. Eastep</holder>

      <holder>Fabien Demassieux</holder>

      <holder>Guy Marcenac</holder>
    </copyright>

    <legalnotice>
      <para>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.2 ou toute version ultérieure
      publiée par la Free Software Foundation ; sans section Invariables, sans
      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. Une
      traduction française de la licence se trouve dans la section
      <quote><ulink url="http://cesarx.free.fr/gfdlf.html">Licence de
      Documentation Libre GNU</ulink></quote>. Ce paragraphe est une
      traduction française pour aider à votre compréhension. Seul le texte
      original en anglais présenté ci-dessous fixe les conditions
      d'utilisation de cette documentation.</para>

      <para>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, with no Front-Cover, and with no Back-Cover
      Texts. A copy of the license is included in the section entitled
      <quote><ulink url="GnuCopyright.htm">GNU Free Documentation
      License</ulink></quote>.</para>
    </legalnotice>
  </articleinfo>

  <note>
    <para><emphasis role="underline">Notes du traducteur :</emphasis> Le
    traduction initiale a été réalisée par <ulink
    url="mailto:fd03x@wanadoo.fr">Fabien Demassieux</ulink>. J'ai assuré la
    révision pour l'adapter à la version 3 de Shorewall. Si vous trouvez des
    erreurs ou des améliorations à y apporter vous pouvez <ulink
    url="mailto:guy@posteurs.com">me contacter</ulink>.</para>
  </note>

  <caution>
    <para><emphasis role="bold">Cet article s'applique à Shorewall 3.0 et à
    ses versions ultérieures. Si vous utilisez une version plus ancienne de
    Shorewall, référez-vous à la documentation s'appliquant à votre
    version.</emphasis></para>
  </caution>

  <section id="Introduction">
    <title>Introduction</title>

    <para>Ce guide est destiné aux utilisateurs qui configurent Shorewall dans
    un environnement où un ensemble d'adresses IP publiques doit être pris en
    compte ainsi qu'à ceux qui souhaitent en savoir plus à propos de Shorewall
    que ce que contiennent le guides pour une utilisation avec une <ulink
    url="shorewall_quickstart_guide.htm">adresse IP unique</ulink>. Le champs
    d'application étant très large, ce guide vous donnera des indications
    générales à suivre et vous indiquera d'autres ressources si
    nécessaire.</para>

    <caution>
      <para>Shorewall a besoin que le paquetage
      <command><command>iproute</command></command>/<command><command>iproute2</command></command>
      soit installé (avec la distribution <trademark>RedHat</trademark>, le
      paquetage s'appelle <command><command>iproute</command></command>). Vous
      pouvez contrôler que le paquetage est installé en vérifiant la présence
      du programme <command><command>ip</command></command> sur votre
      firewall. En tant que <systemitem class="username">root</systemitem>,
      vous pouvez utiliser la commande <command>which</command> pour
      cela:</para>

      <programlisting>[root@gateway root]# <command>which ip</command>
/sbin/ip
[root@gateway root]#</programlisting>

      <para>Je vous recommande de commencer par une lecture complète du guide
      afin de vous familiariser avec les concepts mis en oeuvre, puis de
      recommencer la lecture et seulement alors d'appliquer vos modifications
      de configuration.</para>

      <para>Les points où des modifications s'imposent sont indiqués par
      <inlinegraphic fileref="images/BD21298_.gif" format="GIF" />.</para>
    </caution>

    <caution>
      <para>Si vous éditez vos fichiers de configuration sur un système
      <trademark>Windows</trademark>, vous devez les enregistrer comme des
      fichiers <trademark>Unix</trademark> si votre éditeur supporte cette
      option sinon vous devez les convertir avec <command>dos2unix</command>
      avant d'essayer de les utiliser. De la même manière, si vous copiez un
      fichier de configuration depuis votre disque dur
      <trademark>Windows</trademark> vers une disquette, vous devez lancer
      <command>dos2unix</command> sur la copie avant de l'utiliser avec
      Shorewall.</para>

      <simplelist>
        <member><ulink url="http://www.simtel.net/pub/pd/51438.html">Version
        Windows de dos2unix</ulink></member>

        <member><ulink
        url="http://www.megaloman.com/~hany/software/hd2u/">Version Linux de
        dos2unix</ulink></member>
      </simplelist>
    </caution>
  </section>

  <section id="Concepts">
    <title>Les Concepts de Shorewall</title>

    <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

    <para>Les fichiers de configuration pour Shorewall sont situés dans le
    répertoire /etc/shorewall -- pour de simples paramétrages, vous n'aurez à
    faire qu'avec quelques-uns d'entre eux comme décrit dans ce guide. Des
    squelettes de fichiers sont créés durant <ulink url="Install_fr.html">la
    procédure d'installation de Shorewall</ulink>.</para>

    <warning>
      <para><emphasis role="bold">Note aux utilisateurs de
      Debian</emphasis></para>

      <para>Si vous vous servez du .deb pour installer, vous vous rendrez
      compte que votre répertoire <filename
      class="directory">/etc/shorewall</filename> est vide. Ceci est voulu.
      Les squelettes des fichiers de configuration se trouvent sur votre
      système dans le répertoire <filename
      class="directory">/usr/share/doc/shorewall/default-config</filename>.
      Copiez simplement les fichiers dont vous avez besoin depuis ce
      répertoire dans <filename class="directory">/etc/shorewall</filename>,
      puis modifiez ces copies.</para>

      <para>Remarquez que vous devez copier<filename>
      /usr/share/doc/shorewall/default-config/shorewall.conf</filename> et
      <filename>/usr/share/doc/shorewall/default-config/modules</filename>
      dans <filename
      class="directory"><filename>/etc/shorewall</filename></filename> même si
      vous ne modifiez pas ces fichiers.</para>
    </warning>

    <para>Au fur et à mesure de la présentation de chaque fichier, je vous
    suggère de jeter un oeil à ceux physiquement présents sur votre système --
    chacun des fichiers contient des instructions de configuration détaillées
    et des entrées par défaut.</para>

    <para>Shorewall voit le réseau où il fonctionne, comme étant composé d'un
    ensemble de zones. Dans ce guide nous utiliserons les zones
    suivantes:</para>

    <variablelist>
      <varlistentry>
        <term>fw</term>

        <listitem>
          <para>Le firewall lui-même.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>net</term>

        <listitem>
          <para>L'internet public.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>loc</term>

        <listitem>
          <para>Un réseau local privé utilisant des adresses IP
          privées.</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>dmz</term>

        <listitem>
          <para>Une zone démilitarisée (<acronym>DMZ</acronym>) contenant les
          serveurs publiquement accessibles.</para>
        </listitem>
      </varlistentry>
    </variablelist>

    <para>Les Zones sont définies dans le fichier <filename><ulink
    url="Documentation.htm#Zones"><filename>/etc/shorewall/zones</filename></ulink></filename>.</para>

    <important>
      <para>Le fichier <filename>/etc/shorewall/zones</filename> fourni avec
      la distribution est vide. Vous pouvez créer l'ensemble de zones standard
      décrites au-dessus en copiant puis en collant ce qui suit dans le
      fichier:</para>

      <programlisting>#ZONE   TYPE             OPTIONS
fw      firewall
net     ipv4
loc     ipv4
dmz     ipv4</programlisting>
    </important>

    <para>Remarquez que Shorewall reconnaît aussi le système firewall comme sa
    propre zone - l'exemple ci-dessus suit la convention qui veut que la zone
    firewall soit nommée <emphasis role="bold">fw</emphasis>. Le nom de la
    zone firewall (<emphasis role="bold">fw</emphasis> dans l'exemple plus
    haut) est stocké dans la variable d'environnement <emphasis>$FW</emphasis>
    lorsque le fichier <filename>/etc/shorewall/zones</filename> est traité. A
    l'exception du nom attribué à la zone firewall, Shorewall n'attache aucune
    signification aux noms de zone. Le zones sont entièrement ce que VOUS en
    faites. Ceci signifie que vous ne devriez pas attendre de Shorewall qu'il
    fasse quoi que ce soit de spécial <quote>car il s'agit de la zone
    internet</quote> ou <quote>car ceci est la
    <acronym>DMZ</acronym></quote>.</para>

    <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

    <para>Éditez le fichier <filename>/etc/shorewall/zones</filename> et
    faites-y les changements nécessaires.</para>

    <para>Les règles qui concernent le trafic à autoriser ou à refuser sous
    exprimées en termes de Zones.</para>

    <itemizedlist>
      <listitem>
        <para>Vous exprimez les politiques par défaut entre une zone et une
        autre zone dans le fichier <filename><ulink
        url="Documentation.htm#Policy">/etc/shorewall/policy</ulink></filename>.</para>
      </listitem>

      <listitem>
        <para>Vous définissez les exceptions à ces politiques par défaut dans
        le fichier <filename><ulink
        url="Documentation.htm#Rules">/etc/shorewall/rules</ulink></filename>.</para>
      </listitem>
    </itemizedlist>

    <para>Shorewall est construit sur les mécanismes de <ulink
    url="http://www.netfilter.org">Netfilter</ulink>, service de filtrage du
    noyau (kernel). Netfilter fournit une <ulink
    url="http://www.cs.princeton.edu/~jns/security/iptables/iptables_conntrack.html">fonction
    de suivi de connexion</ulink> qui permet une analyse d'état des paquets
    (stateful inspection). Cette propriété permet aux règles du firewall
    d'être définies en termes de connexions plutôt qu'en termes de paquets.
    Avec Shorewall, vous:</para>

    <orderedlist>
      <listitem>
        <para>Identifiez la zone source (client).</para>
      </listitem>

      <listitem>
        <para>Identifiez la zone destination (serveur).</para>
      </listitem>

      <listitem>
        <para>Si la politique depuis la zone du client vers la zone du serveur
        est ce que vous souhaitez pour cette paire client/serveur, vous n'avez
        rien de plus à faire.</para>
      </listitem>

      <listitem>
        <para>Si la politique n'est pas ce que vous souhaitez, alors vous
        devez ajouter une règle. Cette règle est exprimée en termes de zone
        client et de zone serveur.</para>
      </listitem>
    </orderedlist>

    <para><emphasis role="bold">Autoriser les connexions d'un certain type
    depuis la zone A vers le firewall et depuis firewall vers la zone B
    <emphasis role="bold">NE SIGNIFIE PAS que ces connections sont autorisés
    de la zone A à la zone B</emphasis></emphasis> (autrement dit, les
    connexions impliquant la zone firewall ne sont pas transitives).</para>

    <para>Pour chaque connexion demandant à entrer dans le firewall, la
    requête est en premier lieu vérifiée par rapport au fichier
    <filename>/etc/shorewall/rules</filename>. Si aucune règle dans ce fichier
    ne correspond à la demande de connexion alors la première politique dans
    le fichier <filename>/etc/shorewall/policy</filename> qui y correspond
    sera appliquée. S'il y a une <ulink
    url="shorewall_extension_scripts.htm">action par défaut</ulink> définie
    pour cette politique dans <filename>/etc/shorewall/actions</filename> ou
    dans <filename>/usr/share/shorewall/actions.std</filename> cette action
    commune sera exécutée avant que l'action spécifiée dans
    <filename>/etc/shorewall/rules</filename> ne soit appliquée.</para>

    <para>Avant Shorewall 2.2.0, le fichier
    <filename>/etc/shorewall/policy</filename> avait les politiques
    suivantes:</para>

    <programlisting>#SOURCE ZONE     DESTINATION ZONE    POLICY     LOG     LIMIT:BURST
#                                               LEVEL
fw               net                 ACCEPT
net              all                 DROP       info
all              all                 REJECT     info</programlisting>

    <important>
      <para>Le fichier de politiques distribué actuellement est vide. Vous
      pouvez y copier et coller les entrées présentées ci-dessus comme point
      de départ, puis l'adapter à vos propres politiques.</para>
    </important>

    <para>Les politiques précédentes vont:</para>

    <orderedlist>
      <listitem>
        <para>Autoriser (ACCEPT) toutes les connexions de votre réseau local
        vers internet</para>
      </listitem>

      <listitem>
        <para>Ignorer (DROP) toutes les tentatives de connexions d'internet
        vers le firewall ou vers votre réseau local et enregistrer dans vos
        journaux (log) un message au niveau info (<ulink
        url="shorewall_logging.html">vous trouverez ici la description des
        niveaux de journalisation</ulink>).</para>
      </listitem>

      <listitem>
        <para>Rejeter (REJECT) toutes les autres demandes de connexion et
        générer un message de niveau info dans votre journal. Quant la requête
        est rejetée et que le protocole est TCP, le firewall retourne un
        paquet RST. Pour tous les autres protocoles, quand une requête est
        rejetée, le firewall renvoie un paquet ICMP port-unreachable.</para>
      </listitem>
    </orderedlist>

    <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

    <para>Maintenant, éditez votre <filename>/etc/shorewall/policy
    </filename>et apportez-y tous les changements que vous souhaitez.</para>
  </section>

  <section id="Interfaces">
    <title>Interfaces Réseau</title>

    <para>Dans la suite du guide, nous nous référerons au schéma ci-dessous.
    Bien qu'il puisse ne pas correspondre à votre propre réseau, il peut être
    utilisé pour illustrer les aspects importants de la configuration de
    Shorewall.</para>

    <para>Sur ce schéma:</para>

    <itemizedlist>
      <listitem>
        <para>La zone <acronym>DMZ</acronym> est composée des systèmes DMZ 1
        et DMZ 2. On utilise une <acronym>DMZ</acronym> pour isoler ses
        serveurs accessibles depuis internet de ses systèmes locaux. Ainsi si
        un des serveurs de la <acronym>DMZ</acronym> est compromis, vous avez
        encore un firewall entre le système compromis et vos systèmes
        locaux.</para>
      </listitem>

      <listitem>
        <para>La zone <quote>local</quote> est composée des systèmes Local 1,
        Local 2 et Local 3.</para>
      </listitem>

      <listitem>
        <para>Tous les systèmes à l'extérieur du firewall, y compris ceux de
        votre FAI, sont dans la zone internet.</para>
      </listitem>
    </itemizedlist>

    <graphic align="center" fileref="images/dmz3.png" />

    <para>La façon la plus simple pour définir les zones est d'associer le nom
    de la zone (définie précédemment dans
    <filename>/etc/shorewall/zones</filename>) à une interface réseau. Ceci
    est fait dans le fichier <ulink
    url="Documentation.htm#Interfaces">/etc/shorewall/interfaces</ulink>.</para>

    <para>Le firewall illustré ci-dessus à trois interfaces réseau. Lorsque la
    connexion internet passe par un <quote>modem</quote> câble
    ou<acronym><acronym> ADSL
    </acronym></acronym><emphasis><emphasis>l'Interface
    Externe</emphasis></emphasis> sera l'adaptateur ethernet qui est connecté
    à ce <quote>Modem</quote> (par exemple <filename
    class="devicefile">eth0</filename>). Par contre, si vous vous connectez
    avec <acronym>PPPoE</acronym> (Point-to-Point Protocol over Ethernet) ou
    avec <acronym><acronym>PPTP</acronym></acronym> (Point-to-Point Tunneling
    Protocol), l'interface externe sera une interface ppp (par exemple
    <filename class="devicefile"><filename
    class="devicefile">ppp0</filename></filename>). Si vous vous connectez
    avec un simple modem <acronym><acronym>RTC</acronym></acronym>, votre
    interface externe sera aussi <filename class="devicefile"><filename
    class="devicefile">ppp0</filename></filename>. Si vous vous connectez en
    utilisant l'<acronym><acronym>ISDN</acronym></acronym>, votre interface
    externe sera <filename class="devicefile"><filename
    class="devicefile">ippp0</filename></filename>.</para>

    <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

    <para><emphasis role="bold">Si votre interface vers l'extérieur est
    <filename class="devicefile">ppp0</filename> ou <filename
    class="devicefile">ippp0</filename> alors vous mettrez CLAMPMSS=yes dans
    le fichier
    <filename>/etc/shorewall/shorewall.conf</filename></emphasis>.</para>

    <para>Votre <emphasis>Interface locale</emphasis> sera un adaptateur
    ethernet (<filename class="devicefile"><filename
    class="devicefile">eth0</filename></filename>, <filename
    class="devicefile"><filename class="devicefile">eth1</filename></filename>
    or <filename class="devicefile"><filename
    class="devicefile">eth2</filename></filename>) et sera connectée à un hub
    ou à un switch. Vos ordinateurs locaux seront connectés à ce même hub ou
    switch (note : si vous n'avez qu'un seul ordinateur en local, vous pouvez
    le connecter directement au firewall par un câble croisé).</para>

    <para>Votre <emphasis>interface <acronym>DMZ</acronym></emphasis> sera
    aussi un adaptateur ethernet (<filename class="devicefile"><filename
    class="devicefile">eth0</filename></filename>, <filename
    class="devicefile"><filename class="devicefile">eth1</filename></filename>
    or <filename class="devicefile"><filename
    class="devicefile">eth2</filename></filename>) et sera connecté à un hub
    ou un à switch. Vos ordinateurs appartenant à la DMZ seront connectés à ce
    même hub ou switch (note : si vous n'avez qu'un seul ordinateur dans la
    <acronym>DMZ</acronym>, vous pouvez le connecter directement au firewall
    par un câble croisé).</para>

    <warning>
      <para><emphasis role="bold">Ne connectez pas les interfaces interne et
      externe sur le même hub ou le même switch, sauf à des fins de
      test</emphasis>. Vous pouvez tester en utilisant ce type de
      configuration si vous spécifiez l'option <emphasis
      role="bold">arp_filter</emphasis> ou l'option <emphasis
      role="bold">arp_ignore</emphasis> dans le fichier <filename
      class="directory">/etc/shorewall/</filename><filename>interfaces, et
      ce</filename> pour toutes les interfaces connectées au hub/switch
      commun. <emphasis role="bold">Il est très fortement déconseillé
      d'utiliser une telle configuration avec un firewall en
      production</emphasis>.</para>
    </warning>

    <para>Dans la suite, nous supposerons que:</para>

    <itemizedlist>
      <listitem>
        <para>L'interface externe est <filename class="devicefile"><filename
        class="devicefile">eth0</filename></filename>.</para>
      </listitem>

      <listitem>
        <para>L'interface locale est <filename class="devicefile"><filename
        class="devicefile">eth1</filename></filename>.</para>
      </listitem>

      <listitem>
        <para>L'interface <acronym>DMZ</acronym> est <filename
        class="devicefile"><filename
        class="devicefile">eth2</filename></filename>.</para>
      </listitem>
    </itemizedlist>

    <para>La configuration par défaut de Shorewall ne définit le contenu
    d'aucune zone. Pour définir la configuration présentée plus haut, le
    fichier <ulink
    url="Documentation.htm#Interfaces">/etc/shorewall/interfaces</ulink> doit
    contenir:</para>

    <programlisting>#ZONE    INTERFACE      BROADCAST     OPTIONS
net      eth0           detect        rfc1918
loc      eth1           detect
dmz      eth2           detect</programlisting>

    <para>Remarquez que la zone $FW n'a aucune entrée dans le fichier
    <filename>/etc/shorewall/interfaces.</filename></para>

    <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

    <para>Éditez le fichier <filename>/etc/shorewall/interfaces.</filename>
    Définissez les interfaces du réseau de votre firewall et associez chacune
    d'entre elles à une zone. Si vous avez une zone qui est connectée par plus
    d'une interface, incluez simplement une entrée pour chaque interface et
    répétez le nom de zone autant de fois que nécessaire.</para>

    <example>
      <title>Interfaces Multiples associées une Zone</title>

      <programlisting>#ZONE    INTERFACE      BROADCAST     OPTIONS
net      eth0           detect        rfc1918
loc      eth1           detect
loc      eth2           detect</programlisting>
    </example>

    <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

    <para>Vous pouvez définir des zones plus compliquées en utilisant le
    fichier<filename> <ulink
    url="Documentation.htm#Hosts">/etc/shorewall/hosts</ulink></filename> mais
    dans la plus part des cas, cela ne sera pas nécessaire. Vous trouverez des
    exemples dans <ulink
    url="Shorewall_and_Aliased_Interfaces.html">Shorewall_and_Aliased_Interfaces.html</ulink>
    et <ulink url="Multiple_Zones.html">Multiple_Zones.html</ulink>.</para>
  </section>

  <section id="Addressing">
    <title>Adressage, Sous-réseaux et Routage</title>

    <para>Normalement, votre <acronym>FAI</acronym> vous attribue un ensemble
    d'adresses IP publiques. Vous utiliserez une de ces adresses pour
    configurer l'interface externe de votre firewall. Vous déciderez ensuite
    comment utiliser le reste de vos adresses. Avant d'aborder ce point, il
    nous faut rappeler le contexte.</para>

    <para>Si vous êtes déjà familier de l'adressage IP et du routage, vous
    pouvez directement aller à la prochaine section.</para>

    <para>La présentation qui suit ne fait que d'effleurer les questions de
    l'adressage et du routage. Si vous vous voulez en apprendre plus sur
    l'adressage <acronym>IP</acronym> et le routage, je vous recommande
    <quote>IP Fundamentals: What Everyone Needs to Know about Addressing &amp;
    Routing</quote>, Thomas A. Maufer, Prentice-Hall, 1999, ISBN 0-13-975483-0
    (<ulink
    url="http://www.phptr.com/browse/product.asp?product_id={58D4F6D4-54C5-48BA-8EDD-86EBD7A42AF6}">lien</ulink>).</para>

    <section id="Addresses">
      <title>Adressage IP</title>

      <para>Les adresses IP version 4 (IPv4) sont codées sur 32 bits. La
      notation w.x.y.z fait référence à une adresse dont l'octet de poids fort
      a pour valeur <quote>w</quote>, le suivant a pour valeur
      <quote>x</quote>, etc. Si nous prenons l'adresse 192.0.2.14 et que nous
      l'exprimons en hexadécimal, nous obtenons</para>

      <para><programlisting>C0.00.02.0E</programlisting>et si nous la
      regardons comme un entier de 32 bits nous avons</para>

      <para><programlisting>C000020E</programlisting></para>
    </section>

    <section id="Subnets">
      <title>Sous-réseaux</title>

      <para>Vous entendrez encore aujourd'hui les termes de <quote>Réseau de
      classe A</quote>, <quote>Réseau de classe B</quote> et <quote>Réseau de
      classe C</quote>. Au début de l'existence de l'IP, les réseaux ne
      pouvaient avoir que trois tailles (il y avait aussi les réseaux de
      classe D mais il étaient utilisés différemment):</para>

      <simplelist>
        <member>Classe A - masque de sous-réseau 255.0.0.0, taille = 2 **
        24</member>

        <member>Classe B - masque de sous-réseau 255.255.0.0, taille = 2 **
        16</member>

        <member>Classe C - masque de sous-réseau 255.255.255.0, taille =
        256</member>
      </simplelist>

      <para>La classe d'un réseau était déterminée de façon unique par la
      valeur de l'octet de poids fort de son adresse, ainsi en regardant une
      adresse IP on pouvait déterminer immédiatement la valeur du masque
      réseau. Le masque réseau est un nombre qui combiné à une adresse par un
      ET logique, isole l'adresse du réseau auquel cette adresse appartient.
      Le reste de l'adresse est le <emphasis>numéro d'hôte</emphasis>. Par
      exemple, dans l'adresse de classe C 192.0.2.14, la valeur hexadécimale
      de l'adresse du réseau est C00002 et le numéro d'hôte est 0E.</para>

      <para>Comme internet se développait, il devint clair qu'un
      partitionnement aussi grossier de l'espace d'adresses de 32 bits allait
      être très limitatif (rapidement, les grandes sociétés et les universités
      s'étaient déjà attribuées leur propre réseau de classe A !). Après
      quelques faux départs, la technique courante du sous-adressage de ces
      réseaux en plus petits sous-réseaux évolua. On fait référence à cette
      technique sous l'appellation de Routage Inter-Domaine Sans Classe ou
      <emphasis>Classless InterDomain Routing</emphasis>
      (<acronym>CIDR</acronym>). Aujourd'hui, les systèmes avec lesquels vous
      travaillez sont probablement compatibles avec la notation CIDR. La
      gestion des réseaux basée sur les Classes est du domaine du
      passé.</para>

      <para>Un <emphasis>sous-réseau</emphasis> (<emphasis>subnet</emphasis>
      ou <emphasis>subnetwork</emphasis>) est un ensemble contigu d'adresses
      IP tel que:</para>

      <orderedlist>
        <listitem>
          <para>Le nombre d'adresses dans le jeu est un multiple de 2.</para>
        </listitem>

        <listitem>
          <para>La première adresse dans le jeu est un multiple de la taille
          du jeu.</para>
        </listitem>

        <listitem>
          <para>La première adresse du sous-réseau est réservée et on s'y
          réfère comme étant <emphasis>l'adresse du
          sous-réseau</emphasis>.</para>
        </listitem>

        <listitem>
          <para>La dernière adresse du sous-réseau est réservée comme
          <emphasis>adresse de diffusion (broadcast) du
          sous-réseau</emphasis>.</para>
        </listitem>
      </orderedlist>

      <para>Comme vous pouvez le constater par cette définition, dans chaque
      sous-réseau de taille n il y a (n - 2) adresses utilisables (adresses
      qui peuvent être attribuées à un hôte). La première et la dernière
      adresse du sous-réseau sont utilisées respectivement pour identifier
      l'adresse du sous-réseau et l'adresse de diffusion du sous-réseau. En
      conséquence, de petits sous-réseaux sont plus gourmands en adresses IP
      que des sous-réseaux plus étendus.</para>

      <para>Comme n est une puissance de deux, nous pouvons aisément calculer
      le <emphasis>Logarithme à base 2 de n </emphasis>(log2). La taille et le
      logarithme à base 2 pour les tailles de sous-réseau les plus communes
      sont donnés par la table suivante:</para>

      <table>
        <title>Logarithmes base 2</title>

        <tgroup cols="3">
          <tbody>
            <row>
              <entry><emphasis role="bold">n</emphasis></entry>

              <entry><emphasis role="bold">log2 n</emphasis></entry>

              <entry><emphasis role="bold">(32 - log2 n)</emphasis></entry>
            </row>

            <row>
              <entry>8</entry>

              <entry>3</entry>

              <entry>29</entry>
            </row>

            <row>
              <entry>16</entry>

              <entry>4</entry>

              <entry>28</entry>
            </row>

            <row>
              <entry>32</entry>

              <entry>5</entry>

              <entry>27</entry>
            </row>

            <row>
              <entry>64</entry>

              <entry>6</entry>

              <entry>26</entry>
            </row>

            <row>
              <entry>128</entry>

              <entry>7</entry>

              <entry>25</entry>
            </row>

            <row>
              <entry>256</entry>

              <entry>8</entry>

              <entry>24</entry>
            </row>

            <row>
              <entry>512</entry>

              <entry>9</entry>

              <entry>23</entry>
            </row>

            <row>
              <entry>1024</entry>

              <entry>10</entry>

              <entry>22</entry>
            </row>

            <row>
              <entry>2048</entry>

              <entry>11</entry>

              <entry>21</entry>
            </row>

            <row>
              <entry>4096</entry>

              <entry>12</entry>

              <entry>20</entry>
            </row>

            <row>
              <entry>8192</entry>

              <entry>13</entry>

              <entry>19</entry>
            </row>

            <row>
              <entry>16384</entry>

              <entry>14</entry>

              <entry>18</entry>
            </row>

            <row>
              <entry>32768</entry>

              <entry>15</entry>

              <entry>17</entry>
            </row>

            <row>
              <entry>65536</entry>

              <entry>16</entry>

              <entry>16</entry>
            </row>
          </tbody>
        </tgroup>
      </table>

      <para>Vous constaterez que la table ci-dessus contient aussi une colonne
      (32 - log2<emphasis role="bold"> n</emphasis>). Ce nombre est le
      <emphasis>Masque de Sous-réseau à Longueur Variable</emphasis> ou
      <emphasis>Variable Length Subnet Mask</emphasis>
      (<acronym>VLSM</acronym>) pour un sous-réseau de taille n. De la table
      ci-dessus, nous pouvons déduire la suivante, qui est plus facile à
      utiliser.</para>

      <table>
        <title>VLSM</title>

        <tgroup cols="3">
          <tbody>
            <row>
              <entry><emphasis role="bold">Taille du
              sous-réseau</emphasis></entry>

              <entry><emphasis role="bold">VLSM</emphasis></entry>

              <entry><emphasis role="bold">Masque de
              sous-réseau</emphasis></entry>
            </row>

            <row>
              <entry>8</entry>

              <entry>/29</entry>

              <entry>255.255.255.248</entry>
            </row>

            <row>
              <entry>16</entry>

              <entry>/28</entry>

              <entry>255.255.255.240</entry>
            </row>

            <row>
              <entry>32</entry>

              <entry>/27</entry>

              <entry>255.255.255.224</entry>
            </row>

            <row>
              <entry>64</entry>

              <entry>/26</entry>

              <entry>255.255.255.192</entry>
            </row>

            <row>
              <entry>128</entry>

              <entry>/25</entry>

              <entry>255.255.255.128</entry>
            </row>

            <row>
              <entry>256</entry>

              <entry>/24</entry>

              <entry>255.255.255.0</entry>
            </row>

            <row>
              <entry>512</entry>

              <entry>/23</entry>

              <entry>255.255.254.0</entry>
            </row>

            <row>
              <entry>1024</entry>

              <entry>/22</entry>

              <entry>255.255.252.0</entry>
            </row>

            <row>
              <entry>2048</entry>

              <entry>/21</entry>

              <entry>255.255.248.0</entry>
            </row>

            <row>
              <entry>4096</entry>

              <entry>/20</entry>

              <entry>255.255.240.0</entry>
            </row>

            <row>
              <entry>8192</entry>

              <entry>/19</entry>

              <entry>255.255.224.0</entry>
            </row>

            <row>
              <entry>16384</entry>

              <entry>/18</entry>

              <entry>255.255.192.0</entry>
            </row>

            <row>
              <entry>32768</entry>

              <entry>/17</entry>

              <entry>255.255.128.0</entry>
            </row>

            <row>
              <entry>65536</entry>

              <entry>/16</entry>

              <entry>255.255.0.0</entry>
            </row>

            <row>
              <entry>2 ** 24</entry>

              <entry>/8</entry>

              <entry>255.0.0.0</entry>
            </row>
          </tbody>
        </tgroup>
      </table>

      <para>Notez que le <acronym>VLSM</acronym> est écrit avec un slash
      (<quote>/</quote>) -- vous entendrez souvent nommer un réseau de taille
      64 comme étant un <quote>slash 26</quote> et un de taille 8 comme étant
      un <quote>slash 29</quote>.</para>

      <para>Le masque de sous-réseau est simplement un nombre de 32 bits avec
      les premiers bits correspondant au <acronym>VLSM</acronym> positionnés à
      <quote>1</quote> et les bits suivants à <quote>0</quote>. Par exemple,
      pour un sous-réseau de taille 64, le masque de sous-réseau débute par 26
      bits à <quote>1</quote>:</para>

      <para><programlisting>11111111111111111111111111000000 = FFFFFFC0 = FF.FF.FF.C0 = 255.255.255.192</programlisting>Le
      masque de sous-réseau a la propriété suivante: si vous appliquez un ET
      logique entre le masque de sous-réseau et une adresse dans le
      sous-réseau, le résultat est l'adresse du sous-réseau. Tout aussi
      important, si vous appliquer un ET logique entre le masque de
      sous-réseau et une adresse en dehors du sous-réseau, le résultat n'est
      PAS l'adresse du sous-réseau. Comme nous le verrons après, cette
      propriété du masque de sous-réseau est très importante dans le
      routage.</para>

      <para>Pour un sous-réseau dont l'adresse est <emphasis
      role="bold">a.b.c.d</emphasis> et dont le <acronym>VLSM</acronym> est
      <emphasis role="bold">/v</emphasis>, nous notons le sous-réseau
      <quote><emphasis role="bold">a.b.c.d/v</emphasis></quote> en utilisant
      la <emphasis><emphasis>notation CIDR</emphasis></emphasis>.</para>

      <table>
        <title>Un exemple de sous-réseau :</title>

        <tgroup cols="2">
          <tbody>
            <row>
              <entry><emphasis role="bold">Sous-réseau:</emphasis></entry>

              <entry>10.10.10.0 - 10.10.10.127</entry>
            </row>

            <row>
              <entry><emphasis role="bold">Taille du
              sous-réseau:</emphasis></entry>

              <entry>128</entry>
            </row>

            <row>
              <entry><emphasis role="bold">Adresse du
              sous-réseau:</emphasis></entry>

              <entry>10.10.10.0</entry>
            </row>

            <row>
              <entry><emphasis role="bold">Adresse de
              diffusion:</emphasis></entry>

              <entry>10.10.10.127</entry>
            </row>

            <row>
              <entry><emphasis role="bold">Notation CIDR:</emphasis></entry>

              <entry>10.10.10.0/25</entry>
            </row>
          </tbody>
        </tgroup>
      </table>

      <para>Il existe deux sous-réseaux dégénérés qui doivent être mentionnés:
      le sous-réseau avec un seul membre et le sous-réseau avec 2 ** 32
      membres.</para>

      <table>
        <title>/32 and /0</title>

        <tgroup cols="4">
          <tbody>
            <row>
              <entry><emphasis role="bold">Taille du
              sous-réseau</emphasis></entry>

              <entry><emphasis role="bold">Longueur VLSM</emphasis></entry>

              <entry><emphasis role="bold">Masque de
              sous-réseau</emphasis></entry>

              <entry><emphasis role="bold">Notation CIDR</emphasis></entry>
            </row>

            <row>
              <entry>1</entry>

              <entry>32</entry>

              <entry>255.255.255.255</entry>

              <entry>a.b.c.d/32</entry>
            </row>

            <row>
              <entry>32</entry>

              <entry>0</entry>

              <entry>0.0.0.0</entry>

              <entry>0.0.0.0/0</entry>
            </row>
          </tbody>
        </tgroup>
      </table>

      <para>Ainsi, chaque adresse <emphasis role="bold">a.b.c.d</emphasis>
      peut aussi être écrite <emphasis role="bold">a.b.c.d/32</emphasis> et
      l'ensemble des adresses possibles est écrit <emphasis
      role="bold">0.0.0.0/0</emphasis>.</para>

      <para>Un utilisateur de Shorewall a proposé cette très utile <ulink
      url="http://shorewall.net/pub/shorewall/contrib/IPSubNetMask.html">représentation
      graphique</ulink> de ces informations.</para>

      <para>Dans la suite, nous utiliserons la notation <emphasis
      role="bold">a.b.c.d/v</emphasis> pour décrire la configuration IP d'une
      interface réseau (l'utilitaire <command>ip</command> utilise aussi cette
      syntaxe). Dans cette notation l'interface est configurée avec une
      adresse ip <emphasis role="bold">a.b.c.d</emphasis> avec le masque de
      sous-réseau qui correspond au VLSM /<emphasis
      role="bold">v</emphasis>.</para>

      <example>
        <title>192.0.2.65/29</title>

        <para>L'interface est configurée avec l'adresse IP 192.0.2.65 et le
        masque de sous-réseau 255.255.255.248.</para>
      </example>

      <para>/sbin/shorewall propose une commande <command>ipcalc</command> qui
      calcule automatiquement les informations d'un [sous-]réseau.</para>

      <example>
        <title>Utiliser la commande
        <command><command>ipcalc</command></command>.</title>

        <programlisting>shorewall ipcalc 10.10.10.0/25
   CIDR=10.10.10.0/25
   NETMASK=255.255.255.128
   NETWORK=10.10.10.0
   BROADCAST=10.10.10.127</programlisting>
      </example>

      <example>
        <title>Utiliser la commande
        <command><command>ipcalc</command></command>.</title>

        <programlisting>shorewall ipcalc 10.10.10.0 255.255.255.128
   CIDR=10.10.10.0/25
   NETMASK=255.255.255.128
   NETWORK=10.10.10.0
   BROADCAST=10.10.10.127</programlisting>
      </example>
    </section>

    <section id="Routing">
      <title>Routage</title>

      <para>L'un des objectifs de la gestion en sous-réseaux est qu'elle pose
      les bases pour le routage. Ci-dessous se trouve la table de routage de
      mon firewall:</para>

      <programlisting>[root@gateway root]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flgs MSS Win irtt Iface
192.168.9.1     0.0.0.0         255.255.255.255 UH   40  0      0 texas
206.124.146.177 0.0.0.0         255.255.255.255 UH   40  0      0 eth1
206.124.146.180 0.0.0.0         255.255.255.255 UH   40  0      0 eth3
192.168.3.0     0.0.0.0         255.255.255.0   U    40  0      0 eth3
192.168.2.0     0.0.0.0         255.255.255.0   U    40  0      0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U    40  0      0 eth2
206.124.146.0   0.0.0.0         255.255.255.0   U    40  0      0 eth0
192.168.9.0     192.0.2.223     255.255.255.0   UG   40  0      0 texas
127.0.0.0       0.0.0.0         255.0.0.0       U    40  0      0 lo
0.0.0.0         206.124.146.254 0.0.0.0         UG   40  0      0 eth0
[root@gateway root]#</programlisting>

      <para>L'interface <emphasis>texas</emphasis> est un tunnel GRE vers un
      site pair à Dallas, au Texas.</para>

      <para>Les trois premières routes sont des routes vers des hôtes
      (<emphasis>host routes)</emphasis> puisqu'elles indiquent comment aller
      vers un hôte unique. Dans la sortie de <command>netstat</command>, cela
      se voit très bien au masque de sous-réseau (Genmask) à 255.255.255.255,
      ou bien au drapeau à <quote>H</quote> dans la colonne
      <quote>Flags</quote> . Les autres routes sont des routes réseau car
      elles indiquent au noyau comment router des paquets à un sous-réseau. La
      dernière route est <emphasis>la route par défaut</emphasis>. La
      passerelle mentionnée dans cette route est appelée <emphasis>la
      passerelle par défaut (default gateway).</emphasis></para>

      <para>Quant le noyau essaye d'envoyer un paquet à une adresse IP
      <emphasis role="bold">A</emphasis>, il commence au début de la table de
      routage et:</para>

      <itemizedlist>
        <listitem>
          <para><emphasis role=""><emphasis>Il réalise un ET logique entre
          A</emphasis></emphasis> et la valeur du masque de sou-réseau pour
          cette entrée de la table.</para>
        </listitem>

        <listitem>
          <para>Ce résultat est comparé avec la valeur de la
          <quote>Destination</quote> dans cette entrée de la table.</para>
        </listitem>

        <listitem>
          <para>Si le résultat et la valeur de la <quote>Destination</quote>
          sont identiques, alors:</para>

          <itemizedlist>
            <listitem>
              <para>Si la colonne <quote>Gateway</quote> n'est pas nulle, le
              paquet est envoyé à la passerelle par l'interface nommée dans la
              colonne <quote>Iface</quote>.</para>
            </listitem>

            <listitem>
              <para>Sinon, le paquet est directement envoyé à <emphasis
              role="bold">A</emphasis> à travers l'interface nommée dans la
              colonne <quote>iface</quote>.</para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para>Sinon, les étapes précédentes sont répétées sur l'entrée
          suivante de la table.</para>
        </listitem>
      </itemizedlist>

      <para>Puisque la route par défaut correspond à toutes les adresses IP
      (<emphasis role="bold">A </emphasis>ET 0.0.0.0 = 0.0.0.0), les paquets
      qui ne correspondent à aucune des autres entrées de la table de routage
      sont envoyés à la passerelle par défaut qui est généralement un routeur
      de votre <acronym>FAI</acronym>.</para>

      <para>Prenons un exemple. Supposons que vous souhaitiez router un paquet
      à 192.168.1.5. Cette adresse ne correspond à aucune route d'hôte dans la
      table mais lorsque nous faisons le ET logique de cette adresse avec
      255.255.255.0, le résultat est 192.168.1.0 qui correspond à cette entrée
      de la table:</para>

      <para><programlisting>192.168.1.0   0.0.0.0       255.255.255.0   U     40  0         0 eth2</programlisting></para>

      <para>Donc, pour router ce paquet à 192.168.1.5, il faudra le
      transmettre directement à l'interface eth2.</para>

      <para>Un point important doit être souligné -- tous les paquets sont
      envoyés en utilisant la table de routage et les paquets en réponse ne
      sont pas un cas particulier. Il semble exister une idée fausse comme
      quoi les paquets réponses seraient comme les saumons et contiendraient
      une sorte de code génétique qui leur permettrait suivre la même route
      empruntée par les paquets de requête (request) à l'aller. Ce n'est pas
      le cas. Les réponses peuvent prendre un chemin totalement différent de
      celui pris par les paquets de la requête client à l'aller -- Ces routes
      sont totalement indépendantes.</para>
    </section>

    <section>
      <title id="ARP">Protocole de Résolution d'Adresse (ARP)</title>

      <para>Quant on envoie des paquets sur ethernet, les adresses IP ne sont
      pas utilisées. L'adressage ethernet est basé sur les adresses
      <acronym>MAC</acronym> (<emphasis>Media Access Control)</emphasis>.
      Chaque carte ethernet à sa propre adresse <acronym>MAC</acronym> unique
      qui est gravée dans une <acronym>PROM</acronym> lors de sa fabrication.
      Vous pouvez obtenir l'adresse <acronym>MAC</acronym> d'une carte
      ethernet grâce à l'utilitaire
      <quote><command>ip</command></quote>:</para>

      <programlisting>[root@gateway root]# <command>ip addr show eth0</command>
2: eth0: &lt;BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc htb qlen 100
link/ether 02:00:08:e3:fa:55 brd ff:ff:ff:ff:ff:ff
inet 206.124.146.176/24 brd 206.124.146.255 scope global eth0
inet 206.124.146.178/24 brd 206.124.146.255 scope global secondary eth0
inet 206.124.146.179/24 brd 206.124.146.255 scope global secondary eth0
[root@gateway root]#
</programlisting>

      <para>Comme vous pouvez le constater, l'adresse <acronym>MAC</acronym>
      est codée sur 6 octets (48 bits). L'adresse <acronym>MAC</acronym> est
      généralement imprimée sur la carte elle-même.</para>

      <para>Comme IP utilise les adresses IP et ethernet les adresses MAC, il
      faut un mécanisme pour transcrire une adresse IP en adresse MAC. C'est
      ce dont est chargé le protocole de résolution d'adresse
      (<emphasis>Address Resolution Protocol
      </emphasis><acronym>ARP</acronym>). Voici <acronym>ARP</acronym> en
      action:</para>

      <programlisting>[root@gateway root]# <command>tcpdump -nei eth2 arp</command>
tcpdump: listening on eth2
09:56:49.766757 2:0:8:e3:4c:48 0:6:25:aa:8a:f0 arp 42:
                arp who-has 192.168.1.19 tell 192.168.1.254
09:56:49.769372 0:6:25:aa:8a:f0 2:0:8:e3:4c:48 arp 60:
                arp reply 192.168.1.19 is-at 0:6:25:aa:8a:f0

2 packets received by filter
0 packets dropped by kernel
[root@gateway root]#</programlisting>

      <para>Dans cet échange , 192.168.1.254 (MAC 2:0:8:e3:4c:48) veut
      connaître l'adresse MAC du périphérique qui a l'adresse IP 192.168.1.19.
      Le système ayant cette adresse IP répond que l'adresse MAC du
      périphérique avec l'adresse IP 192.168.1.19 est 0:6:25:aa:8a:f0.</para>

      <para>Afin de ne pas avoir à échanger des information
      <acronym>ARP</acronym> chaque fois qu'un paquet doit être envoyé, le
      système maintient un cache des correspondances IP&lt;-&gt; MAC. Vous
      pouvez voir le contenu du cache <acronym>ARP</acronym> sur votre système
      (y compris sur les systèmes <trademark>Windows</trademark>) en utilisant
      la commande <command>arp</command></para>

      <programlisting>[root@gateway root]# <command>arp -na</command>
? (206.124.146.177) at 00:A0:C9:15:39:78 [ether] on eth1
? (192.168.1.3) at 00:A0:CC:63:66:89 [ether] on eth2
? (192.168.1.5) at 00:A0:CC:DB:31:C4 [ether] on eth2
? (206.124.146.254) at 00:03:6C:8A:18:38 [ether] on eth0
? (192.168.1.19) at 00:06:25:AA:8A:F0 [ether] on eth2</programlisting>

      <para>Les points d'interrogation au début des lignes sont le résultat de
      l'utilisation de l'option <quote>n</quote> qui empêche le programme
      <command>arp</command> de résoudre le noms <acronym>DNS</acronym> pour
      les adresses IP (la commande <command>arp</command> <trademark>de
      Windows</trademark> n'accepte pas cette option) . Si je n'avais pas
      utilisé pas cette option, les points d'interrogation seraient remplacés
      par les noms pleinement qualifiés (FQDN) correspondant à chaque adresse
      IP. Remarquez que la dernière information dans le cache correspond à
      celle que nous avons vue en utilisant <command>tcpdump</command> à
      l'instant.</para>
    </section>

    <section id="RFC1918">
      <title>RFC 1918</title>

      <para>Les adresses IP sont allouées par l'<acronym>IANA</acronym>
      (<ulink url="http://www.iana.org/">Internet Assigned Number
      Authority</ulink>) qui délégue les allocations sur une base géographique
      aux Registres Internet Régionaux (<acronym>RIR</acronym>). Par exemple,
      les allocations pour les Etats-Unis et l'Afrique sub-Saharienne sont
      déléguées à l'<acronym>ARIN</acronym> (<ulink
      url="http://www.arin.net/">American Registry for Internet
      Numbers</ulink>). Ces RIRs peuvent à leur tour déléguer à des bureaux
      nationaux. La plupart d'entre nous ne traite pas avec ces autorités mais
      obtient plutôt ses adresse IP de son <acronym>FAI</acronym>.</para>

      <para>Dans la réalité, on ne peut en général pas se permettre d'avoir
      autant d'adresses IP publiques que l'on a de périphériques en
      nécessitant une. C'est cette raison qui nous amène à utiliser des
      adresses IP privées. La RFC 1918 réserve plusieurs plages d'adresses à
      cette fin :</para>

      <programlisting>10.0.0.0    - 10.255.255.255
172.16.0.0  - 172.31.255.255
192.168.0.0 - 192.168.255.255</programlisting>

      <para>Les adresses réservées par la RFC 1918 sont parfois appelées
      non-routables car les routeurs d'infrastructure internet ne feront pas
      suivre (forward) les paquets qui ont une adresse de destination de la
      RFC 1918. Cela est compréhensible puisque chacun peut choisir n'importe
      laquelle ces adresses pour son usage privé. Mais le terme de
      non-routable est quelque peu malencontreux car il peut amener à conclure
      de manière erronée que le trafic destiné à une de ces adresses ne peut
      être envoyé à travers un routeur. Ceci est faux et les routeurs privés,
      dont votre firewall Shorewall, peuvent parfaitement faire suivre du
      trafic avec des adresses conformes à la RFC 1918.</para>

      <para>Quant on choisit des adresses dans ces plages, il faut bien avoir
      à l'esprit les choses suivantes:</para>

      <itemizedlist>
        <listitem>
          <para>Comme l'espace des adresses IPv4 s'épuise, de plus en plus
          d'organisation (y compris les FAI) commencent à utiliser les
          adresses RFC 1918 dans leurs infrastructures.</para>
        </listitem>

        <listitem>
          <para>Vous ne devez pas utiliser d'adresse IP qui soit utilisée par
          votre <acronym>FAI</acronym> ou une autre organisation avec laquelle
          vous souhaitez établir une liaison <acronym>VPN</acronym></para>
        </listitem>
      </itemizedlist>

      <para>C'est pourquoi c'est une bonne idée de vérifier après de votre FAI
      s'il n'utilise pas (ou ne prévoie pas d'utiliser) des adresses privées
      avant de décider quelles adresses que vous allez utiliser.</para>

      <note>
        <para><emphasis role="bold">Dans ce document, les adresses IP externes
        <quote>réelles</quote> sont dans la plage 192.0.2.x. Les adresses du
        réseau 192.0.2.0/24 sont réservées par RFC 3330 pour l'utilisation
        d'adresses IP publiques dans les exemples imprimés ainsi que dans les
        réseaux de test. Ces adresses ne doivent pas être confondues avec les
        adresses 192.168.0.0/16, qui comme décrit ci-dessus, sont réservées
        par la RFC 1918 pour une utilisation privée.</emphasis></para>
      </note>
    </section>
  </section>

  <section id="Options">
    <title>Configurer votre Réseau</title>

    <para>Le choix d'une configuration pour votre réseau dépend d'abord du
    nombre d'adresses IP publiques dont vous disposez et du nombre d'adresses
    IP dont vous avez besoin. Quel que soit le nombre d'adresses dont vous
    disposez, votre <acronym>FAI</acronym> peut vous servir ce jeu d'adresses
    de deux manières:</para>

    <itemizedlist>
      <listitem>
        <para><emphasis role="bold">Routées</emphasis> - Le trafic vers
        chacune de vos adresses publiques sera routé à travers une seule
        adresse de passerelle. Cela sera généralement fait si votre FAI vous
        attribue un sous-réseau complet (/29 ou plus). Dans ce cas, vous
        affecterez l'adresse de cette passerelle comme étant l'adresse de
        l'interface externe de votre firewall/routeur.</para>
      </listitem>

      <listitem>
        <para><emphasis role="bold">Non routées</emphasis> - Votre FAI enverra
        le trafic à chacune de vos adresses directement.</para>
      </listitem>
    </itemizedlist>

    <para>Dans les paragraphes qui suivent, nous étudierons chacun de ces cas
    séparément.</para>

    <para>Avant de commencer, il y a une chose que vous devez vérifier:</para>

    <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

    <para>Si vous utilisez un paquetage Debian, vérifiez votre fichier
    <filename>shorewall.conf</filename> afin de vous assurer que les
    paramètres suivants sont convenablement fixés. Si ce n'est pas le cas,
    appliquez les changements nécessaires:</para>

    <itemizedlist>
      <listitem>
        <para>IP_FORWARDING=On</para>
      </listitem>
    </itemizedlist>

    <section id="Routed">
      <title>Routé</title>

      <para>Supposons que votre fournisseur d'accès vous ait assigné le
      sous-réseau 192.0.2.64/28 routé par 192.0.2.65. Vous avez les adresses
      IP 192.0.2.64 - 192.0.2.79 et l'adresse externe de votre firewall est
      192.0.2.65. Votre FAI vous a aussi dit que vous devez utiliser le masque
      de sous-réseau 255.255.255.0 (ainsi, votre /28 est un sous-ensemble du
      /24, plus grand). Avec autant d'adresses IP, vous pouvez scinder votre
      réseau /28 en deux sous-réseaux /29 et configurer votre réseau comme
      l'indique le diagramme suivant.</para>

      <graphic align="center" fileref="images/dmz4.png" />

      <para>Dans l'exemple, la zone démilitarisé <acronym>DMZ</acronym> est
      dans le sous-réseau 192.0.2.64/29 et le réseau local est dans
      192.0.2.72/29. La passerelle par défaut pour les hôtes dans la
      <acronym>DMZ</acronym> doit être configurée à 192.0.2.66 et la
      passerelle par défaut pour ceux du réseau local doit être configurée à
      192.0.2.73.</para>

      <para>Notez que cette solution est plutôt gourmande en adresses
      publiques puisqu'elle utilise 192.0.2.64 et 192.0.2.72 pour les adresses
      de sous-réseau, 192.0.2.71 et 192.0.2.79 pour les adresses de diffusion
      (broadcast) du réseau, et 192.0.2.66 et 168.0.2.73 pour les adresses
      internes sur le firewall/routeur. Elle montre néammoins comment la
      gestion en sous-réseaux peut fonctionner. Et si nous avions un réseau
      /24 plutôt qu'un /28, l'utilisation de 6 adresses IP parmi les 256
      disponibles serait largement justifiée par la simplicité du
      paramétrage.</para>

      <para>Le lecteur attentif aura peut-être remarqué que l'interface
      externe du firewall/Routeur est en fait incluse dans le sous-réseau
      <acronym>DMZ</acronym> (192.0.2.64/29). On peut se demander ce qui se
      passe quand l'hôte DMZ 1 (192.0.2.67) essaye de communiquer avec
      192.0.2.65. La table de routage sur l'hôte DMZ 1 doit ressembler à
      cela:</para>

      <programlisting format="linespecific">Kernel IP routing table
Destination    Gateway     Genmask         Flags MSS Window irtt Iface
192.0.2.64     0.0.0.0     255.255.255.248 U     40  0         0 eth0
0.0.0.0        192.0.2.66  0.0.0.0         UG    40  0         0 eth0</programlisting>

      <para>Donc, lorsque l'hôte DMZ 1 voudra communiquer avec 192.0.2.65, il
      enverra une requête <acronym>ARP</acronym> "qui-a 192.0.2.65" alors
      qu'aucune interface sur le segment ethernet DMZ n'a cette adresse IP.
      Assez bizarrement, le firewall répondra à la requête avec
      <emphasis><emphasis role="underlined"><emphasis
      role="underline">l'adresse MAC de sa propre interface
      DMZ</emphasis></emphasis> </emphasis>! DMZ 1 peut alors envoyer des
      trames ethernet adressées à cette adresse <acronym>MAC</acronym> et les
      trames seront reçues correctement par le firewall/routeur.</para>

      <para>L'avertissement fait plus haut qui déconseille très fortement la
      connexion de plusieurs interfaces du firewall/routeur à un même hub ou
      switch est une conséquence directe de ce comportement plutôt inattendu
      d'<acronym>ARP</acronym> de la part du noyau Linux. Quant une requête
      ARP destinée à une des adresses du firewall/routeur est envoyée par un
      autre système connecté au même hub ou switch, toutes les interfaces du
      firewall qui y sont connectées peuvent répondre ! C'est alors la course
      à savoir quelle réponse <quote>c'est-ici</quote> atteindra la première
      l'émetteur de la requête.</para>
    </section>

    <section id="NonRouted">
      <title>Non routé</title>

      <para>Si vous êtes dans la situation précédente mais que votre trafic
      n'est pas routé par votre <acronym>FAI</acronym>, vous pouvez configurer
      votre réseau exactement comme décrit plus haut, au prix d'une légère
      contorsion supplémentaire: spécifiez simplement l'option
      <quote><command>proxyarp</command></quote> sur les trois interfaces du
      firewall dans le fichier
      <filename>/etc/shorewall/interfaces</filename>.</para>

      <para>La plupart d'entre nous n'ont pas le luxe d'avoir suffisamment
      d'adresses publiques IP pour configurer leur réseau comme indiqué dans
      l'exemple précédent (même si la configuration est routée).</para>

      <para><emphasis role="bold">Dans le reste de cette section, supposons
      que notre FAI nous ait assigné la plage d'adresses IP 192.0.2.176-180,
      qu'il nous ait dit d'utiliser le masque de sous-réseau 255.255.255.0 et
      que la passerelle par défaut soit 192.0.2.254.</emphasis></para>

      <para>De toute évidence, ce jeu d'adresses ne comprend pas de
      sous-réseau et n'a pas suffisamment d'adresses pour toutes les
      interfaces de notre réseau. Nous pouvons utiliser quatre techniques
      différentes pour contourner ce problème.</para>

      <itemizedlist>
        <listitem>
          <para>La traduction d'adresses source (<emphasis>Source Network
          Address Translation</emphasis> <emphasis
          role="bold">SNAT</emphasis>).</para>
        </listitem>

        <listitem>
          <para>La traduction d'adresses destination <emphasis>(Destination
          Network Address Translation</emphasis> <emphasis
          role="bold">DNAT</emphasis>) nommée aussi transfert ou suivi de port
          <emphasis>(Port Forwarding</emphasis>).</para>
        </listitem>

        <listitem>
          <para><emphasis role="bold"><emphasis>Le </emphasis>Proxy
          ARP</emphasis>.</para>
        </listitem>

        <listitem>
          <para>La traduction d'adresses réseau <emphasis>(Network Address
          Translation</emphasis> <acronym>NAT</acronym>) à laquelle on fait
          aussi référence sous l'appellation de un-à-un NAT (one-to-one
          NAT).</para>
        </listitem>
      </itemizedlist>

      <para>Souvent, une combinaison de ces techniques est utilisée. Chacune
      d'entre elles sera détaillée dans la section suivante.</para>

      <section id="SNAT">
        <title>SNAT</title>

        <para>Avec la <acronym>SNAT</acronym>, un segment interne du réseau
        local est configuré en utilisant des adresses de la RFC 1918. Quant un
        hôte <emphasis role="bold">A</emphasis> sur ce segment interne initie
        une connexion vers un hôte <emphasis role="bold">B</emphasis> sur
        internet, le firewall/routeur réécrit les entêtes IP de la requête
        pour utiliser une de vos adresses publiques IP en tant qu'adresse
        source. Quant <emphasis role="bold">B</emphasis> répond et que la
        réponse est reçue par le firewall, le firewall change l'adresse
        destination par celle de la RFC 1918 de <emphasis
        role="bold">A</emphasis> et transfère la réponse à <emphasis
        role="bold">A.</emphasis></para>

        <para>Supposons que vous décidiez d'utiliser la SNAT sur votre zone
        locale. Supposons également que vous utilisiez l'adresse publique
        192.0.2.176 à la fois comme adresse externe du firewall et comme
        adresse source des requêtes internet envoyées depuis cette
        zone.</para>

        <graphic align="center" fileref="images/dmz5.png" />

        <para>On a assigné à la zone locale le sous-réseau 192.168.201.0/29
        (masque de sous-réseau 255.255.255.248).</para>

        <simplelist>
          <member><inlinegraphic fileref="images/BD21298_.gif" /></member>

          <member>Dans ce cas, les systèmes de la zone locale seraient
          configurés avec 192.168.201.1 comme passerelle par défaut (adresse
          IP de l'interface local du firewall).</member>

          <member><inlinegraphic fileref="images/BD21298_.gif" /></member>

          <member>La SNAT est configurée dans Shorewall avec le fichier
          <filename><ulink
          url="Documentation.htm#Masq">/etc/shorewall/masq</ulink></filename>.</member>
        </simplelist>

        <programlisting>#INTERFACE     SUBNET               ADDRESS
eth0           192.168.201.0/29     192.0.2.176</programlisting>

        <para>Cet exemple utilise la technique normale qui assigne la même
        adresse publique IP pour l'interface externe du firewall et pour la
        SNAT. Si vous souhaitez utiliser une adresse IP différente, vous
        pouvez soit utiliser les outils de configuration réseau de votre
        distribution Linux pour ajouter cette adresse IP, soit mettre la
        variable ADD_SNAT_ALIASES=Yes dans
        <filename>/etc/shorewall/shorewall.conf</filename> et Shorewall
        ajoutera l'adresse pour vous.</para>
      </section>

      <section id="dnat">
        <title>DNAT</title>

        <para>Quand la SNAT est utilisée, il est impossible pour les hôtes sur
        internet d'initialiser une connexion avec un des systèmes internes
        puisque ces systèmes n'ont pas d'adresses publiques IP. La DNAT
        fournit une méthode pour autoriser des connexions sélectionnées depuis
        internet.</para>

        <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

        <para>Supposons que votre fille souhaite héberger un serveur Web sur
        son système "Local 3". Vous pourriez autoriser les connexions
        d'internet à son serveur en ajoutant l'entrée suivante dans le fichier
        <filename><ulink
        url="Documentation.htm#Rules">/etc/shorewall/rules</ulink></filename>:</para>

        <programlisting>#ACTION  SOURCE  DEST               PROTO  DEST    SOURCE    ORIGINAL
#                                          PORT(S) PORT(S)   DEST
DNAT     net     loc:192.168.201.4  tcp    www</programlisting>

        <para>Si une des amies de votre fille avec une adresse <emphasis
        role="bold">A</emphasis> veut accéder au serveur de votre fille, elle
        peut se connecter à http://192.0.2.176 (l'adresse IP externe de votre
        firewall). Le firewall réécrira l'adresse IP de destination à
        192.168.201.4 (le système de votre fille) et lui fera suivre la
        requête. Quand le serveur de votre fille répondra, le firewall
        remettra l'adresse source à 192.0.2.176 et retournera la réponse à
        <emphasis role="bold">A</emphasis>.</para>

        <para>Cet exemple utilise l'adresse externe IP du firewall pour la
        <acronym>DNAT</acronym>. Vous pouvez utiliser une autre de vos
        adresses IP publiques. Pour cela, mettez-la dans la colonne ORIGINAL
        DEST de la règle ci-dessus. Par contre, Shorewall n'ajoutera pas à
        votre place cette adresse à l'interface externe du firewall.</para>

        <important>
          <para>Quand vous testez des règles <acronym>DNAT</acronym> comme
          celles présentée plus haut, vous devez le faire depuis un client A
          L'EXTÉRIEUR DE VOTRE FIREWALL (depuis la zone <quote>net</quote>).
          Vous ne pouvez pas tester ces règles de l'intérieur !</para>

          <para>Pour quelques astuces sur la résolution de problèmes avec la
          DNAT, <ulink url="FAQ_fr.html#faq1a">voyez les FAQ 1a et
          1b</ulink>.</para>
        </important>
      </section>

      <section id="ProxyARP">
        <title>Proxy ARP</title>

        <para>Le principe du proxy <acronym>ARP</acronym> est:</para>

        <itemizedlist>
          <listitem>
            <para>On attribue à un hôte <emphasis role="bold">H</emphasis>
            derrière notre firewall une de nos adresses publiques <emphasis
            role="bold">A</emphasis> et on lui donne le même masque de
            sous-réseau <emphasis role="bold">M</emphasis> que celui de
            l'interface externe du firewall.</para>
          </listitem>

          <listitem>
            <para>Le firewall répond aux requêtes ARP
            <quote>qui-a-l'adresse</quote> <emphasis
            role="bold">A</emphasis><emphasis> </emphasis>émises par les hôtes
            à l'extérieur du firewall.</para>
          </listitem>

          <listitem>
            <para>Lorsque c'est l'hôte <emphasis role="bold">H</emphasis> qui
            émet une requête <quote>qui-a-l'adresse</quote><emphasis>
            </emphasis><emphasis><emphasis>pour un hôte
            </emphasis></emphasis>situé à l'extérieur du firewall et
            appartenant au sous-réseau défini par <emphasis
            role="bold">A</emphasis> et <emphasis role="bold">M</emphasis>,
            c'est le firewall qui répondra à <emphasis
            role="bold">H</emphasis> avec l'adresse MAC de l'interface du
            firewall à laquelle est raccordé <emphasis
            role="bold">H</emphasis>.</para>
          </listitem>
        </itemizedlist>

        <para>Pour une description plus complète du fonctionnement du Proxy
        ARP, vous pouvez vous référer à la <ulink
        url="ProxyARP.htm">Documentation du Proxy Shorewall</ulink>.</para>

        <para>Supposons que nous décidions d'utiliser le Proxy ARP sur la DMZ
        de notre exemple de réseau.</para>

        <graphic align="center" fileref="images/dmz6.png" />

        <para>Ici, nous avons assigné les adresses IP 192.0.2.177 au système
        DMZ 1 et 192.0.2.178 au système DMZ 2. Remarquez que nous avons
        assigné une adresse RFC 1918 et un masque de sous-réseau arbitraires à
        l'interface DMZ de notre firewall. Cette adresse et ce masque ne sont
        pas pertinents - vérifiez juste que celle-ci n'est en conflit avec
        aucun autre sous-réseau déjà défini.</para>

        <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

        <para>La configuration du Proxy ARP est faite dans le fichier <ulink
        url="ProxyARP.htm"><filename>/etc/shorewall/proxyarp</filename></ulink>.</para>

        <programlisting>#ADDRESS     INTERFACE    EXTERNAL      HAVE ROUTE        PERSISTANT
192.0.2.177  eth2         eth0          No
192.0.2.178  eth2         eth0          No</programlisting>

        <para>La variable HAVE ROUTE étant à No, Shorewall ajoutera les routes
        d'hôte pour 192.0.2.177 et 192.0.2.178 par <filename
        class="devicefile">eth2</filename>. Les interfaces ethernet des
        machines DMZ 1 et DMZ 2 devront être configurées avec les adresses IP
        données plus haut, mais elles devront avoir la même passerelle par
        défaut que le firewall lui-même (192.0.2.254 dans notre exemple).
        Autrement dit, elles doivent être configurées exactement comme si
        elles étaient parallèles au firewall plutôt que derrière lui.</para>

        <caution>
          <para><emphasis role="bold">Ne pas ajouter le(s) adresse(s) traitées
          par le proxy ARP (192.0.2.177 et 192.0.2.178 dans l'exemple
          ci-dessus) à l'interface externe du firewall (eth0 dans cet
          exemple).</emphasis></para>
        </caution>

        <para>Un mot de mise en garde. En général, les <acronym>FAI</acronym>
        configurent leurs routeurs avec un timeout de cache
        <acronym>ARP</acronym> assez élevé. Si vous déplacez un système
        parallèle à votre firewall derrière le Proxy ARP du firewall, cela
        peut mettre des HEURES avant que ce système ne puisse communiquer avec
        internet. Il y a deux choses que vous pouvez essayer de faire:</para>

        <orderedlist>
          <listitem>
            <para>(Salutations à Bradey Honsinger) Une lecture de
            <quote>TCP/IP Illustrated, Vol 1</quote> de Richard Stevens révèle
            qu'un paquet ARP <quote>gratuit</quote> (gratuitous) peut amener
            le routeur de votre FAI à rafraîchir son cache (section 4.7). Un
            paquet ARP <quote>gratuit</quote> est simplement une requête d'un
            hôte demandant l'adresse MAC associée à sa propre adresse
            IP.</para>

            <para>En plus de garantir que cette adresse IP n'est pas
            dupliquée, <quote>si l'hôte qui envoie la commande ARP
            <quote>gratuit</quote> vient juste de changer son adresse
            matérielle ..., ce paquet force tous les autres hôtes...qui ont
            une entrée dans leur cache ARP pour l'ancienne adresse matérielle
            à mettre leurs caches à jour</quote></para>

            <para>Ce qui est exactement, bien sûr, ce que vous souhaitez faire
            lorsque vous basculez un hôte qui était directement exposé sur
            internet vers l'arrière de votre firewall Shorewall en utilisant
            le proxy ARP (ou en faisant du NAT un-à-un pour la même raison).
            Heureusement, les versions récentes du paquetage
            <command>iputils</command> de <trademark>Redhat</trademark>
            comprennent <command>arping</command>, dont l'option "-U" fait
            cela:</para>

            <para><programlisting><command>arping -U -I &lt;net if&gt; &lt;newly proxied IP&gt;</command><command>

arping -U -I eth0 66.58.99.83</command> # for example</programlisting>Stevens
            continue en mentionnant que certains systèmes ne répondent pas
            correctement à la commande ARP <quote>gratuit</quote>, mais une
            recherche sur google pour <quote>arping -U</quote> semble
            démontrer que cela fonctionne dans la plupart des cas.</para>
          </listitem>

          <listitem>
            <para>Vous pouvez appeler votre <acronym>FAI</acronym> et lui
            demander de purger l'entrée obsolète de son cache
            <acronym>ARP</acronym>, mais la plupart ne voudront ou ne pourront
            le faire.</para>
          </listitem>
        </orderedlist>

        <para>Vous pouvez vérifier si le cache ARP de votre FAI est obsolète
        en utilisant <command>ping</command> et <command>tcpdump</command>.
        Supposez que vous pensez que la passerelle routeur a une entrée ARP
        obsolète pour 192.0.2.177. Sur le firewall, lancez
        <command>tcpdump</command> de cette façon:</para>

        <para><programlisting><command>tcpdump -nei eth0 icmp</command></programlisting></para>

        <para>Maintenant depuis 192.0.2.177, <command>ping</command>ez la
        passerelle de votre FAI (que nous supposons être 192.0.2.254):</para>

        <para><programlisting><command>ping 192.0.2.254</command></programlisting></para>

        <para>Nous pouvons maintenant observer le résultat de
        <command>tcpdump</command>:</para>

        <para><programlisting>13:35:12.159321 <emphasis role="bold">0:4:e2:20:20:33</emphasis> 0:0:77:95:dd:19 ip 98:
                192.0.2.177 &gt; 192.0.2.254: icmp: echo request (DF)
13:35:12.207615 0:0:77:95:dd:19 <emphasis role="bold">0:c0:a8:50:b2:57</emphasis> ip 98:
                192.0.2.254 &gt; 192.0.2.177 : icmp: echo reply</programlisting>Remarquez
        que l'adresse source <acronym>MAC</acronym> dans la requête echo est
        différente de l'adresse <acronym>MAC</acronym> de destination dans la
        réponse echo ! Dans ce cas, 0:4:e2:20:20:33 était l'adresse
        <acronym>MAC</acronym> de l'interface réseau <filename
        class="devicefile">eth0</filename> du firewall tandis que
        0:c0:a8:50:b2:57 était l'adresse <acronym>MAC</acronym> de la carte
        réseau de DMZ 1. En d'autre termes, le cache <acronym>ARP</acronym> de
        la passerelle associe encore 192.0.2.177 avec la carte réseau de DMZ 1
        plutôt qu'avec l'interface <filename class="devicefile"><filename
        class="devicefile">eth0</filename></filename> du firewall.</para>
      </section>

      <section>
        <title id="NAT">NAT un-à-un</title>

        <para>Avec le NAT un-à-un (one-to-one NAT), vous attribuez des
        adresses RFC 1918 à vos systèmes puis vous établissez une
        correspondance un pour un de ces adresses avec les adresses IP
        publiques. Pour les occurrences des connexions sortantes, la
        traduction d'adresses sources (<acronym>SNAT</acronym>) sera alors
        effectuée. Pour les occurrences des connexions entrantes, c'est la
        traduction d'adresses destination (<acronym>DNAT</acronym>) qui sera
        réalisée.</para>

        <para>Voyons avec l'exemple précédent du serveur web de votre fille
        tournant sur le système Local 3.</para>

        <graphic align="center" fileref="images/dmz6.png" />

        <para>Souvenons-nous que dans cette configuration, le réseau local
        utilise la <acronym>SNAT</acronym> et qu'il partage l'IP externe du
        firewall (192.0.2.176) pour les connexions sortantes. On obtient ce
        résultat grâce à l'entrée suivante dans le fichier
        <filename><filename>/etc/shorewall/masq</filename></filename>:</para>

        <programlisting>#INTERFACE     SUBNET               ADDRESS
eth0           192.168.201.0/29     192.0.2.176</programlisting>

        <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

        <para>Supposons maintenant que vous ayez décidé d'allouer à votre
        fille sa propre adresse IP (192.0.2.179) pour l'ensemble des
        connexions entrantes et sortantes. Vous pouvez faire cela en ajoutant
        cette entrée dans le fichier<filename><ulink url="NAT.htm">
        /etc/shorewall/nat</ulink></filename>.</para>

        <programlisting>#EXTERNAL   INTERFACE   INTERNAL       ALL INTERFACES   LOCAL
192.0.2.179 eth0        192.168.201.4  No               No</programlisting>

        <para>Avec cette entrée active, votre fille a sa propre adresse IP et
        les deux autres systèmes locaux partagent l'adresse IP du
        firewall.</para>

        <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

        <para>Une fois que la relation entre 192.0.2.179 et192.168.201.4 est
        établie avec l'entrée ci-dessus dans le fichier
        <filename>nat</filename>, l'utilisation d'une règle d'une règle DNAT
        pour le serveur Web de votre fille n'est plus appropriée -- vous
        devriez plutôt utiliser une simple règle ACCEPT:</para>

        <programlisting>#ACTION  SOURCE  DEST               PROTO  DEST    SOURCE    ORIGINAL
#                                          PORT(S) PORT(S)   DEST
ACCEPT   net     loc:192.168.201.4  tcp    www</programlisting>

        <para>Un mot de mise en garde. En général, les <acronym>FAI</acronym>
        configurent leurs routeurs avec un timeout de cache
        <acronym>ARP</acronym> assez élevé. Si vous déplacez un système
        parallèle à votre firewall derrière le Proxy ARP du firewall, cela
        peut mettre des HEURES avant que ce système ne puisse communiquer avec
        internet. Il y a deux choses que vous pouvez essayer de faire:</para>

        <orderedlist>
          <listitem>
            <para>(Salutations à Bradey Honsinger) Une lecture de
            <quote>TCP/IP Illustrated, Vol 1</quote> de Richard Stevens révèle
            qu'un paquet ARP <quote>gratuit</quote> (gratuitous) peut amener
            le routeur de votre FAI à rafraîchir son cache (section 4.7). Un
            paquet ARP <quote>gratuit</quote> est simplement une requête d'un
            hôte demandant l'adresse MAC associée à sa propre adresse
            IP.</para>

            <para>En plus de garantir que cette adresse IP n'est pas
            dupliquée, <quote>si l'hôte qui envoie la commande ARP
            <quote>gratuit</quote> vient juste de changer son adresse
            matérielle ..., ce paquet force tous les autres hôtes...qui ont
            une entrée dans leur cache ARP pour l'ancienne adresse matérielle
            à mettre leurs caches à jour</quote></para>

            <para>Ce qui est exactement, bien sûr, ce que vous souhaitez faire
            lorsque vous basculez un hôte qui était directement exposé sur
            internet vers l'arrière de votre firewall Shorewall en utilisant
            le proxy ARP (ou en faisant du NAT un-à-un pour la même raison).
            Heureusement, les versions récentes du paquetage
            <command>iputils</command> de <trademark>Redhat</trademark>
            comprennent <command>arping</command>, dont l'option "-U" fait
            cela:</para>

            <para><programlisting><command>arping -U -I &lt;net if&gt; &lt;newly proxied IP&gt;</command><command>

arping -U -I eth0 66.58.99.83</command> # for example</programlisting>Stevens
            continue en mentionnant que certains systèmes ne répondent pas
            correctement à la commande ARP <quote>gratuit</quote>, mais une
            recherche sur google pour <quote>arping -U</quote> semble
            démontrer que cela fonctionne dans la plupart des cas.</para>
          </listitem>

          <listitem>
            <para>Vous pouvez appeler votre <acronym>FAI</acronym> et lui
            demander de purger l'entrée obsolète de son cache
            <acronym>ARP</acronym>, mais la plupart ne voudront ou ne pourront
            le faire.</para>
          </listitem>
        </orderedlist>

        <para>Vous pouvez vérifier si le cache ARP de votre FAI est obsolète
        en utilisant <command>ping</command> et <command>tcpdump</command>.
        Supposez que vous pensez que la passerelle routeur a une entrée ARP
        obsolète pour 192.0.2.177. Sur le firewall, lancez
        <command>tcpdump</command> de cette façon:</para>

        <para><programlisting><command>tcpdump -nei eth0 icmp</command></programlisting></para>

        <para>Maintenant depuis 192.0.2.177, <command>ping</command>ez la
        passerelle de votre FAI (que nous supposons être 192.0.2.254):</para>

        <para><programlisting><command>ping 192.0.2.254</command></programlisting></para>

        <para>Nous pouvons maintenant observer le résultat de
        <command>tcpdump</command>:</para>

        <para><programlisting>13:35:12.159321 <emphasis role="bold">0:4:e2:20:20:33</emphasis> 0:0:77:95:dd:19 ip 98:
                192.0.2.177 &gt; 192.0.2.254: icmp: echo request (DF)
13:35:12.207615 0:0:77:95:dd:19 <emphasis role="bold">0:c0:a8:50:b2:57</emphasis> ip 98:
                192.0.2.254 &gt; 192.0.2.177 : icmp: echo reply</programlisting>Remarquez
        que l'adresse source <acronym>MAC</acronym> dans la requête echo est
        différente de l'adresse <acronym>MAC</acronym> de destination dans la
        réponse echo ! Dans ce cas, 0:4:e2:20:20:33 était l'adresse
        <acronym>MAC</acronym> de l'interface réseau <filename
        class="devicefile">eth0</filename> du firewall tandis que
        0:c0:a8:50:b2:57 était l'adresse <acronym>MAC</acronym> de la carte
        réseau de DMZ 1. En d'autre termes, le cache <acronym>ARP</acronym> de
        la passerelle associe encore 192.0.2.177 avec la carte réseau de DMZ 1
        plutôt qu'avec l'interface <filename class="devicefile"><filename
        class="devicefile">eth0</filename></filename> du firewall.</para>
      </section>
    </section>

    <section id="Rules">
      <title>Règles</title>

      <para><note>
          <para>Shorewall dispose d'un mécanisme de <ulink
          url="Macros.html">macros</ulink> comprenant des macros pour de
          nombreuses applications standard. Dans cette section nous
          n'utiliserons pas de macro. mais nous définirons les règles
          directement.</para>
        </note><inlinegraphic fileref="images/BD21298_.gif" /></para>

      <para>Avec les politiques définies plus tôt dans ce document, vos
      systèmes locaux (Local 1-3) peuvent accéder à n'importe quel serveur sur
      internet alors que la <acronym>DMZ</acronym> ne peut accéder à aucun
      autre hôte, dont le firewall. A l'exception des règles
      <acronym>NAT</acronym> qui entraînent la traduction d'adresses et
      permettent aux requêtes de connexion traduites de passer à travers le
      firewall, la façon d'autoriser des requêtes à travers votre firewall est
      d'utiliser des règles ACCEPT.</para>

      <note>
        <para>Puisque les colonnes SOURCE PORT et ORIG. DEST. ne sont pas
        utilisées dans cette section, elle ne seront pas affichées.</para>
      </note>

      <para>Vous souhaiter certainement autoriser le <command>ping</command>
      entre vos zones:</para>

      <programlisting>#ACTION  SOURCE  DEST               PROTO  DEST   
#                                          PORT(S)
ACCEPT   net     dmz                icmp   echo-request
ACCEPT   net     loc                icmp   echo-request
ACCEPT   dmz     loc                icmp   echo-request
ACCEPT   loc     dmz                icmp   echo-request</programlisting>

      <para>Supposons que vous avez des serveurs mail et pop3 actifs sur le
      système DMZ 2, et un serveur Web sur le système DMZ 1. Les règles dont
      vous avez besoin sont:</para>

      <programlisting>#ACTION  SOURCE          DEST               PROTO  DEST    COMMENTS 
#                                                  PORT(S)
ACCEPT   net             dmz:192.0.2.178    tcp    smtp    #Mail from
                                                           #Internet
ACCEPT   net             dmz:192.0.2.178    tcp    pop3    #Pop3 from
                                                           #Internet
ACCEPT   loc             dmz:192.0.2.178    tcp    smtp    #Mail from local
                                                           #Network
ACCEPT   loc             dmz:192.0.2.178    tcp    pop3    #Pop3 from local
                                                           #Network
ACCEPT   $FW             dmz:192.0.2.178    tcp    smtp    #Mail from the
                                                           #Firewall
ACCEPT   dmz:192.0.2.178 net                tcp    smtp    #Mail to the
                                                           #Internet
ACCEPT   net             dmz:192.0.2.177    tcp    http    #WWW from
                                                           #Internet
ACCEPT   net             dmz:192.0.2.177    tcp    https   #Secure WWW
                                                           #from Internet
ACCEPT   loc             dmz:192.0.2.177    tcp    https   #Secure WWW
                                                           #from local
                                                           #Network</programlisting>

      <para>Si vous utilisez un serveur DNS public sur 192.0.2.177, vous devez
      ajouter les règles suivantes:</para>

      <programlisting>#ACTION  SOURCE          DEST               PROTO  DEST    COMMENTS 
#                                                  PORT(S)
ACCEPT   net             dmz:192.0.2.177    udp    domain  #UDP DNS from
                                                           #Internet
ACCEPT   net             dmz:192.0.2.177    tcp    domain  #TCP DNS from
                                                           #Internet
ACCEPT   loc             dmz:192.0.2.177    udp    domain  #UDP DNS from
                                                           #Local Network
ACCEPT   loc             dmz:192.0.2.177    tcp    domain  #TCP DNS from
                                                           #Local Network
ACCEPT   $FW             dmz:192.0.2.177    udp    domain  #UDP DNS from
                                                           #the Firewall
ACCEPT   $FW             dmz:192.0.2.177    tcp    domain  #TCP DNS from
                                                           #the Firewall
ACCEPT   dmz:192.0.2.177 net                udp    domain  #UDP DNS to
                                                           #the Internet
ACCEPT   dmz:192.0.2.177 net                tcp    domain  #TCPP DNS to
                                                           #the Internet</programlisting>

      <para>Vous souhaiterez probablement communiquer depuis votre réseau
      local avec votre firewall et les systèmes en <acronym>DMZ</acronym> --
      Je recommande <acronym>SSH</acronym> qui, grâce à son utilitaire
      <command>scp</command> peut aussi faire de la diffusion et de la mise à
      jour de logiciels.</para>

      <programlisting>#ACTION  SOURCE          DEST               PROTO  DEST    COMMENTS 
#                                           PORT(S)
ACCEPT   loc             dmz                tcp    ssh     #SSH to the DMZ
ACCEPT   net             $FW                tcp    ssh     #SSH to the
                                                           #Firewall</programlisting>
    </section>

    <section id="OddsAndEnds">
      <title>D'autres petites choses</title>

      <para>La discussion précédente reflète ma préférence personnelle pour
      l'utilisation d'un Proxy ARP associé à mes serveurs en DMZ et de
      SNAT/NAT pour les systèmes locaux. Je préfère utiliser la NAT seulement
      dans le cas ou un système qui fait partie d'un sous-réseau RFC 1918 à
      besoin d'avoir sa propre adresse IP publique.</para>

      <para><inlinegraphic fileref="images/BD21298_.gif" /></para>

      <para>Si vous ne l'avez déjà fait, ce serait une bonne idée de parcourir
      le fichier <ulink
      url="Documentation.htm#Config"><filename>/etc/shorewall/shorewall.conf</filename></ulink>
      juste pour voir si autre chose pourrait vous intéresser. Vous pouvez
      aussi regarder les autres fichiers de configuration que vous n'avez pas
      touchés pour avoir un aperçu des autres possibilités de
      Shorewall.</para>

      <para>Dans le cas ou vous auriez perdu le fil, vous trouverez ci-dessous
      un jeu final des fichiers de configuration pour le réseau de notre
      exemple. Seuls les fichiers de la configuration initiale qui ont été
      modifiés sont présentés.</para>

      <para><filename>/etc/shorewall/interfaces</filename> (Les "options" sont
      très dépendantes des sites).</para>

      <programlisting>#ZONE    INTERFACE      BROADCAST     OPTIONS
net      eth0           detect        rfc1918,routefilter
loc      eth1           detect
dmz      eth2           detect</programlisting>

      <para>La configuration décrite ici nécessite que votre réseau soit
      démarré avant que Shorewall ne puisse se lancer. Ceci laisse un petit
      intervalle de temps durant lequel vous n'avez pas la protection d'un
      firewall.</para>

      <para>Si vous remplacez le <quote>detect</quote> dans les entrées
      ci-dessus par la valeurs des adresses de diffusion (broadcoast) réelles,
      vous pouvez activer Shorewall avant de monter vos interfaces
      réseau.</para>

      <programlisting>#ZONE    INTERFACE      BROADCAST     OPTIONS
net      eth0           192.0.2.255   rfc1918
loc      eth1           192.168.201.7
dmz      eth2           192.168.202.7</programlisting>

      <para><filename>/etc/shorewall/masq</filename> - Réseau Local</para>

      <programlisting>#INTERFACE     SUBNET               ADDRESS
eth0           192.168.201.0/29     192.0.2.176</programlisting>

      <para><filename>/etc/shorewall/proxyarp</filename> - DMZ</para>

      <programlisting>#ADDRESS     EXTERNAL     INTERFACE     HAVE ROUTE
192.0.2.177  eth2         eth0          No
192.0.2.178  eth2         eth0          No</programlisting>

      <para><filename>/etc/shorewall/nat</filename>- Le système de ma
      fille</para>

      <programlisting>#EXTERNAL   INTERFACE   INTERNAL       ALL INTERFACES   LOCAL
192.0.2.179 eth0        192.168.201.4  No               No</programlisting>

      <para><filename>/etc/shorewall/rules</filename><programlisting>#ACTION  SOURCE          DEST               PROTO  DEST    COMMENTS 
#                                                  PORT(S)
ACCEPT   net             dmz                icmp   echo-request
ACCEPT   net             loc                icmp   echo-request
ACCEPT   dmz             loc                icmp   echo-request
ACCEPT   loc             dmz                icmp   echo-request
ACCEPT   net             loc:192.168.201.4  tcp    www     #Daughter's
                                                           #Server
ACCEPT   net             dmz:192.0.2.178    tcp    smtp    #Mail from
                                                           #Internet
ACCEPT   net             dmz:192.0.2.178    tcp    pop3    #Pop3 from
                                                           #Internet
ACCEPT   loc             dmz:192.0.2.178    tcp    smtp    #Mail from local
                                                           #Network
ACCEPT   loc             dmz:192.0.2.178    tcp    pop3    #Pop3 from local
                                                           #Network
ACCEPT   $FW             dmz:192.0.2.178    tcp    smtp    #Mail from the
                                                           #Firewall
ACCEPT   dmz:192.0.2.178 net                tcp    smtp    #Mail to the
                                                           #Internet
ACCEPT   net             dmz:192.0.2.177    tcp    http    #WWW from
                                                           #Internet
ACCEPT   net             dmz:192.0.2.177    tcp    https   #Secure WWW
                                                           #from Internet
ACCEPT   loc             dmz:192.0.2.177    tcp    https   #Secure WWW
                                                           #from local
                                                           #Network
ACCEPT   net             dmz:192.0.2.177    udp    domain  #UDP DNS from
                                                           #Internet
ACCEPT   net             dmz:192.0.2.177    tcp    domain  #TCP DNS from
                                                           #Internet
ACCEPT   loc             dmz:192.0.2.177    udp    domain  #UDP DNS from
                                                           #Local Network
ACCEPT   loc             dmz:192.0.2.177    tcp    domain  #TCP DNS from
                                                           #Local Network
ACCEPT   $FW             dmz:192.0.2.177    udp    domain  #UDP DNS from
                                                           #the Firewall
ACCEPT   $FW             dmz:192.0.2.177    tcp    domain  #TCP DNS from
                                                           #the Firewall
ACCEPT   dmz:192.0.2.177 net                udp    domain  #UDP DNS to
                                                           #the Internet
ACCEPT   dmz:192.0.2.177 net                tcp    domain  #TCPP DNS to
                                                           #the Internet
ACCEPT   loc             dmz                tcp    ssh     #SSH to the DMZ
ACCEPT   net             $FW                tcp    ssh     #SSH to the
                                                           #Firewall</programlisting></para>
    </section>
  </section>

  <section id="DNS">
    <title>DNS</title>

    <para>Compte tenu des adresses RFC 1918 et des adresses publiques
    utilisées dans cette configuration, la seule façon logique de faire est
    d'avoir des serveurs <acronym>DNS</acronym> interne et externe séparés.
    Vous pouvez combiner les deux dans un unique serveur BIND 9 utilisant les
    vues (Views). Si vous n'êtes pas intéressé par les vues BIND 9, vous
    pouvez allez à la section suivante.</para>

    <para>Supposons que votre domaine est foobar.net. Vous voulez que les deux
    systèmes en <acronym>DMZ</acronym> s'appellent www.foobar.net et
    mail.foobar.net, et vous voulez que les trois systèmes locaux s'appellent
    winken.foobar.net, blinken.foobar.net et nod.foobar.net. Vous voulez que
    le firewall soit connu à l'extérieur sous le nom de firewall.foobar.net,
    que son interface vers le réseau local soit nommée gateway.foobar.net et
    que son interface vers la <acronym>DMZ</acronym> soit dmz.foobar.net.
    Mettons le serveur DNS sur 192.0.2.177 qui sera aussi connu sous le nom de
    ns1.foobar.net.</para>

    <para>Le fichier <filename>/etc/named.conf</filename> devrait ressembler à
    cela:</para>

    <programlisting>

options {
        directory "/var/named";
        listen-on { 127.0.0.1 ; 192.0.2.177; };
        transfer-format many-answers;
        max-transfer-time-in 60;

allow-transfer {
        // Servers allowed to request zone tranfers 
       &lt;secondary NS IP&gt;; };
};

logging {
        channel xfer-log {
                file "/var/log/named/bind-xfer.log";
                print-category yes;
                print-severity yes;
                print-time yes;
                severity info;
};

        category xfer-in { xfer-log; };
        category xfer-out { xfer-log; };
        category notify { xfer-log; };
};

#
# This is the view presented to our internal systems
#

view "internal" {
        #
        # These are the clients that see this view
        #
        match-clients { 192.168.201.0/29;
                        192.168.202.0/29;
                        127.0.0.0/8;
                        192.0.2.176/32; 
                        192.0.2.178/32;
                        192.0.2.179/32;
                        192.0.2.180/32; };
        #
        # If this server can't complete the request, it should use
        # outside servers to do so
        #
        recursion yes;

        zone "." in {
                type hint;
                file "int/root.cache";
        };

        zone "foobar.net" in {
                type master;
                notify no;
                allow-update { none; };
                file "int/db.foobar";
        };

        zone "0.0.127.in-addr.arpa" in {
                type master;
                notify no;
                allow-update { none; };
                file "int/db.127.0.0";
        };

        zone "201.168.192.in-addr.arpa" in {
                type master;
                notify no;
                allow-update { none; };
                file "int/db.192.168.201";
        };

        zone "202.168.192.in-addr.arpa" in {
                type master;
                notify no;
                allow-update { none; };
                file "int/db.192.168.202";
        };

        zone "176.2.0.192.in-addr.arpa" in {
                type master;
                notify no;
                allow-update { none; };
                file "db.192.0.2.176";
        };
 
        zone "177.2.0.192.in-addr.arpa" in {
                type master;
                notify no;
                allow-update { none; };
                file "db.192.0.2.177";
        };

        zone "178.2.0.192.in-addr.arpa" in {
                type master;
                notify no;
                allow-update { none; };
                file "db.192.0.2.178";
        };

        zone "179.2.0.192.in-addr.arpa" in {
                type master;
                notify no;
                allow-update { none; };
                file "db.206.124.146.179";
        };

};
#
# This is the view that we present to the outside world
#
view "external" {
         match-clients { any; };
         #
         # If we can't answer the query, we tell the client so
         #
         recursion no;

         zone "foobar.net" in {
                 type master;
                 notify yes;
                 allow-update {none; };
                 file "ext/db.foobar";
         };

         zone "176.2.0.192.in-addr.arpa" in {
                 type master;
                 notify yes;
                 allow-update { none; };
                 file "db.192.0.2.176";
         };

         zone "177.2.0.192.in-addr.arpa" in {
                 type master;
                 notify yes;
                 allow-update { none; };
                 file "db.192.0.2.177";
         };

         zone "178.2.0.192.in-addr.arpa" in {
                 type master;
                 notify yes;
                 allow-update { none; };
                 file "db.192.0.2.178";
         };

         zone "179.2.0.192.in-addr.arpa" in {
                 type master;
                 notify yes;
                 allow-update { none; };
                 file "db.192.0.2.179";
         };
};</programlisting>

    <para>Voici les fichiers du répertoire <filename
    class="directory">/var/named</filename> (ceux qui ne sont pas présentés
    font en général partie de votre distribution BIND).</para>

    <para><filename>db.192.0.2.176</filename> - Zone inverse (reverse) pour
    l'interface externe du firewall</para>

    <programlisting>; ############################################################
; Start of Authority (Inverse Address Arpa) for 192.0.2.176/32
; Filename: db.192.0.2.176
; ############################################################
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
                        2001102303 ; serial
                        10800 ; refresh (3 hour)
                        3600 ; retry (1 hour)
                        604800 ; expire (7 days)
                        86400 ) ; minimum (1 day)
;
; ############################################################
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
; ############################################################
@        604800  IN NS   ns1.foobar.net.
@        604800  IN NS   &lt;name of secondary ns&gt;.
;
; ############################################################
; Iverse Address Arpa Records (PTR's) 
; ############################################################
176.2.0.192.in-addr.arpa. 86400 IN PTR firewall.foobar.net.</programlisting>

    <para><filename>db.192.0.2.177</filename> - Zone inverse pour le serveur
    www</para>

    <programlisting>; ############################################################
; Start of Authority (Inverse Address Arpa) for 192.0.2.177/32
; Filename: db.192.0.2.177
; ############################################################
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
                        2001102303 ; serial
                        10800 ; refresh (3 hour)
                        3600 ; retry (1 hour)
                        604800 ; expire (7 days)
                        86400 ) ; minimum (1 day)
;
; ############################################################
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
; ############################################################
@        604800  IN NS   ns1.foobar.net.
@        604800  IN NS   &lt;name of secondary ns&gt;.
;
; ############################################################
; Iverse Address Arpa Records (PTR's) 
; ############################################################
177.2.0.192.in-addr.arpa. 86400 IN PTR www.foobar.net.</programlisting>

    <para><filename>db.192.0.2.178</filename> - Zone inverse du serveur
    mail</para>

    <programlisting>; ############################################################
; Start of Authority (Inverse Address Arpa) for 192.0.2.178/32
; Filename: db.192.0.2.178
; ############################################################
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
                      2001102303 ; serial
                      10800 ; refresh (3 hour)
                      3600 ; retry (1 hour)
                      604800 ; expire (7 days)
                      86400 ) ; minimum (1 day)
;
; ############################################################
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
; ############################################################
@        604800  IN NS   ns1.foobar.net.
@        604800  IN NS   &lt;name of secondary ns&gt;.
;
; ############################################################
; Iverse Address Arpa Records (PTR's) 
; ############################################################
178.2.0.192.in-addr.arpa. 86400 IN PTR mail.foobar.net.</programlisting>

    <para><filename>db.192.0.2.179</filename> - Zone inverse du serveur web
    public de votre fille</para>

    <programlisting>; ############################################################
; Start of Authority (Inverse Address Arpa) for 192.0.2.179/32
; Filename: db.192.0.2.179
; ############################################################
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
                      2001102303 ; serial
                      10800 ; refresh (3 hour)
                      3600 ; retry (1 hour)
                      604800 ; expire (7 days)
                      86400 ) ; minimum (1 day)
;
; ############################################################
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
; ############################################################
@        604800  IN NS   ns1.foobar.net.
@        604800  IN NS   &lt;name of secondary ns&gt;.
;
; ############################################################
; Iverse Address Arpa Records (PTR's) 
; ############################################################
179.2.0.192.in-addr.arpa. 86400 IN PTR nod.foobar.net.</programlisting>

    <para><filename>int/db.127.0.0</filename> - Zone inverse pour
    localhost</para>

    <programlisting>; ############################################################
; Start of Authority (Inverse Address Arpa) for 127.0.0.0/8
; Filename: db.127.0.0
; ############################################################
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
                             2001092901 ; serial
                             10800 ; refresh (3 hour)
                             3600 ; retry (1 hour)
                             604800 ; expire (7 days)
                             86400 ) ; minimum (1 day)
; ############################################################
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
; ############################################################
@     604800          IN NS   ns1.foobar.net.

; ############################################################
; Iverse Address Arpa Records (PTR's)
; ############################################################
1       86400           IN PTR  localhost.foobar.net.</programlisting>

    <para><filename>int/db.192.168.201</filename> - Zone inverse pour le
    réseau local. Cela ne sera visible que depuis les clients internes</para>

    <programlisting>; ############################################################
; Start of Authority (Inverse Address Arpa) for 192.168.201.0/29
; Filename: db.192.168.201
; ############################################################
@ 604800 IN SOA ns1.foobar.net netadmin.foobar.net. (
                                2002032501 ; serial
                                10800 ; refresh (3 hour)
                                3600 ; retry (1 hour)
                                604800 ; expire (7 days)
                                86400 ) ; minimum (1 day)

; ############################################################
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
; ############################################################
@       604800          IN NS   ns1.foobar.net.
; ############################################################
; Iverse Address Arpa Records (PTR's)
; ############################################################
1       86400           IN PTR  gateway.foobar.net.
2       86400           IN PTR  winken.foobar.net.
3       86400           IN PTR  blinken.foobar.net.
4       86400           IN PTR  nod.foobar.net.</programlisting>

    <para><filename>int/db.192.168.202</filename> - Zone inverse de
    l'interface DMZ du firewall</para>

    <programlisting>; ############################################################
; Start of Authority (Inverse Address Arpa) for 192.168.202.0/29
; Filename: db.192.168.202
; ############################################################
@ 604800 IN SOA ns1.foobar.net netadmin.foobar.net. (
                                2002032501 ; serial
                                10800 ; refresh (3 hour)
                                3600 ; retry (1 hour)
                                604800 ; expire (7 days)
                                86400 ) ; minimum (1 day)

; ############################################################
; Specify Name Servers for all Reverse Lookups (IN-ADDR.ARPA)
; ############################################################
@             604800  IN NS   ns1.foobar.net.

; ############################################################
; Iverse Address Arpa Records (PTR's)
; ############################################################
1               86400 IN PTR  dmz.foobar.net.</programlisting>

    <para><filename>int/db.foobar </filename>- Forward zone pour les clients
    internes.</para>

    <programlisting>;##############################################################
; Start of Authority for foobar.net.
; Filename: db.foobar
;##############################################################
@ 604800 IN SOA ns1.foobar.net. netadmin.foobar.net. (
                        2002071501 ; serial
                        10800 ; refresh (3 hour)
                        3600 ; retry (1 hour)
                        604800 ; expire (7 days)
                        86400 ); minimum (1 day)
;############################################################
; foobar.net Nameserver Records (NS)
;############################################################
@                 604800  IN NS   ns1.foobar.net.

;############################################################
; Foobar.net Office Records (ADDRESS)
;############################################################
localhost 86400   IN A    127.0.0.1

firewall       86400   IN A    192.0.2.176
www            86400   IN A    192.0.2.177
ns1            86400   IN A    192.0.2.177
mail           86400   IN A    192.0.2.178 

gateway        86400   IN A    192.168.201.1
winken         86400   IN A    192.168.201.2
blinken        86400   IN A    192.168.201.3
nod            86400   IN A    192.168.201.4

dmz            86400   IN A    192.168.202.1</programlisting>

    <para><filename>ext/db.foobar </filename>- Forward zone pour les clients
    externes</para>

    <programlisting>;##############################################################
; Start of Authority for foobar.net.
; Filename: db.foobar
;##############################################################
@ 86400 IN SOA ns1.foobar.net. netadmin.foobar.net. (
                        2002052901 ; serial
                        10800 ; refresh (3 hour)
                        3600 ; retry (1 hour)
                        604800 ; expire (7 days)
                        86400 ); minimum (1 day)
;############################################################
; Foobar.net Nameserver Records (NS)
;############################################################
@                86400   IN NS   ns1.foobar.net.
@                86400   IN NS   &lt;secondary NS&gt;.
;############################################################
; Foobar.net        Foobar Wa Office Records (ADDRESS)
;############################################################
localhost         86400   IN A    127.0.0.1
;
; The firewall itself
;
firewall          86400   IN A    192.0.2.176
;
; The DMZ
;
ns1               86400   IN A    192.0.2.177
www               86400   IN A    192.0.2.177
mail              86400   IN A    192.0.2.178
;
; The Local Network
;
nod             86400   IN A    192.0.2.179

;############################################################
; Current Aliases for foobar.net (CNAME)
;############################################################

;############################################################
; foobar.net MX Records (MAIL EXCHANGER)
;############################################################
foobar.net.      86400   IN A    192.0.2.177
                 86400   IN MX 0 mail.foobar.net.
                 86400   IN MX 1 &lt;backup MX&gt;.</programlisting>
  </section>

  <section>
    <title>Quelques Points à Garder en Mémoire</title>

    <itemizedlist>
      <listitem>
        <para><emphasis role="bold">Vous ne pouvez pas tester votre firewall
        depuis l'intérieur de votre réseau</emphasis>. Envoyer des requêtes à
        l'adresse IP externe de votre firewall ne signifie pas qu'elle seront
        associées à votre interface externe ou à la zone <quote>net</quote>.
        Tout trafic généré par le réseau local sera associé à l'interface
        locale et sera traité comme du trafic du réseau local ver le firewall
        (loc-&gt;fw).</para>
      </listitem>

      <listitem>
        <para><emphasis role="bold">Les adresses IP sont des propriétés des
        systèmes, pas des interfaces</emphasis>. C'est une erreur de croire
        que votre firewall est capable de faire suivre
        (<emphasis>forward</emphasis>) des paquets simplement parce que vous
        pouvez faire un <command>ping</command> sur l'adresse IP de toutes les
        interfaces du firewall depuis le réseau local. La seule conclusion que
        vous puissiez faire dans ce cas est que le lien entre le réseau local
        et le firewall fonctionne et que vous avez probablement la bonne
        adresse de passerelle par défaut sur votre système.</para>
      </listitem>

      <listitem>
        <para><emphasis role="bold">Toutes les adresses IP configurées sur le
        firewall sont dans la zone $FW (fw)</emphasis>. Si 192.168.1.254 est
        l'adresse IP de votre interface interne, alors vous pouvez écrire
        <quote><emphasis role="bold">$FW:192.168.1.254</emphasis></quote> dans
        une régle mais vous ne devez pas écrire <quote><emphasis
        role="bold">loc:192.168.1.254</emphasis></quote>. C'est aussi une
        absurdité d'ajouter 192.168.1.254 à la zone <emphasis
        role="bold">loc</emphasis> en utilisant une entrée dans
        <filename>/etc/shorewall/hosts</filename>.</para>
      </listitem>

      <listitem>
        <para><emphasis role="bold">Les paquets de retour (reply) ne suivent
        PAS automatiquement le chemin inverse de la requête
        d'origine</emphasis>. Tous les paquets sont routés en se référant à la
        table de routage respective de chaque hôte à chaque étape du trajet.
        Ce problème se produit en général lorsque on installe un firewall
        Shorewall en parallèle à une passerelle existante et qu'on essaye
        d'utiliser des règles <acronym>DNAT</acronym> dans Shorewall sans
        changer la passerelle par défaut sur les systèmes recevant les
        requêtes transférées (forwarded). Les requêtes passent dans le
        firewall Shorewall où l'adresse de destination IP est réécrite, mais
        la réponse revient par l'ancienne passerelle qui, elle, ne modifiera
        pas le paquet.</para>
      </listitem>

      <listitem>
        <para><emphasis role="bold">Shorewall lui-même n'a aucune notion du
        dedans et du dehors</emphasis>. Ces concepts dépendent de la façon
        dont Shorewall est configuré.</para>
      </listitem>
    </itemizedlist>
  </section>

  <section>
    <title>Démarrer et Arrêter Votre Firewall</title>

    <para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>

    <para>La <ulink url="Install_fr.html">procédure d'installation</ulink>
    configure votre système pour lancer Shorewall dès le boot du système, mais
    le lancement est désactivé, de façon à ce que votre système ne tente pas
    de lancer Shorewall avant que la configuration ne soit terminée. Une fois
    que vous en avez fini avec la configuration du firewall, vous devez éditer
    /etc/shorewall/shorewall.conf et y mettre STARTUP_ENABLED=Yes.<important>
        <para>Les utilisateurs des paquetages .deb doivent éditer <filename
        class="directory">/etc/default/</filename><filename>shorewall</filename>
        et mettre <varname>startup=1</varname>.</para>
      </important></para>

    <para>Le firewall est activé en utilisant la commande
    <quote><command>shorewall start</command></quote> et arrêté avec la
    commande <quote><command>shorewall stop</command></quote>. Lorsque le
    firewall est arrêté, le routage est autorisé sur les hôtes qui possèdent
    une entrée dans <filename class="directory"><ulink
    url="Documentation.htm#Routestopped">/etc/shorewall/routestopped</ulink></filename>.
    Un firewall qui tourne peut être relancé en utilisant la commande
    <quote><command>shorewall restart</command></quote>. Si vous voulez
    enlever toute trace de Shorewall sur votre configuration de Netfilter,
    utilisez <quote><emphasis role="bold">shorewall
    clear</emphasis></quote></para>

    <para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>

    <para>Modifiez <filename
    class="directory">/etc/shorewall/</filename><filename><ulink
    url="Documentation.htm#Routestopped">routestopped</ulink></filename> pour
    y configurer les hôtes auxquels vous voulez accéder lorsque le firewall
    est arrêté. <warning>
        <para>Si vous êtes connecté à votre firewall depuis internet,
        n'essayez pas d'exécuter une commande <quote><command>shorewall
        stop</command></quote> tant que vous n'avez pas ajouté une entrée dans
        <filename><filename
        class="directory">/etc/shorewall/</filename><filename>routestopped</filename></filename>
        pour l'adresse IP à partir de laquelle vous êtes connecté . De la même
        manière, je vous déconseille d'utiliser <quote><command>shorewall
        restart</command></quote>; il est plus intéressant de créer <ulink
        url="configuration_file_basics.htm#Configs">une configuration
        alternative</ulink> et de la tester en utilisant la commande
        <quote><ulink url="starting_and_stopping_shorewall.htm">shorewall
        try</ulink></quote></para>
      </warning></para>
  </section>
</article>