<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
     "http://docbook.org/xml/4.2/docbookx.dtd" []>

<article lang="fr"> 
<articleinfo>
<title>HOWTO - Réseau GNU/Linux Chez Soi</title>

<author>
<firstname>Paul</firstname>
<surname>Ramsey</surname>
<affiliation>
<address><email>pramsey@refractions.net</email></address>
</affiliation>
</author>

<othercredit role='translator'>
<firstname>Marc</firstname>
<surname>Tanguy</surname>
<affiliation>
<address><email>mtanguy@ens.uvsq.fr</email></address> 
</affiliation>
<contrib>Adaptation française</contrib>
</othercredit>

<pubdate>Version 1.4 22/06/2000</pubdate>
<pubdate>Version française 1.0 18/09/2002</pubdate>

<revhistory>
<revision>
<revnumber>1.0</revnumber>
<date>21 Déc 1999</date>
<authorinitials>pr</authorinitials>
<revremark>Première version</revremark>
</revision>

<revision>
<revnumber>1.1</revnumber>
<date>2 Jan 2000</date>
<authorinitials>pr</authorinitials>
<revremark>
Rajout des suggestions apportées par John Mellor à propos de bizarreries
pour le réseau extérieur
</revremark>
</revision>

<revision>
<revnumber>1.2</revnumber>
<date>22 Jan 2000</date>
<authorinitials>pr</authorinitials>
<revremark>
Mises à jour mineures de Chris Lea à propos des cartes réseaux identiques 
et des informations sur la dénomination d'IP (IP aliasing).
</revremark>
</revision>

<revision>
<revnumber>1.3</revnumber>
<date>16 Mar 2000</date>
<authorinitials>pr</authorinitials>
<revremark>
Précisions sur la sécurité du serveur de noms et sur le support avec Caldera
de la part de Nelson Gibbs
</revremark>
</revision>

<revision>
<revnumber>1.4</revnumber>
<date>22 Jui 2000</date>
<authorinitials>pr</authorinitials>
<revremark>
Documentation de particularités de configuration de Red Hat 6.2
Rajout d'informations sur PPPoE de Kerr First
</revremark>
</revision>
</revhistory>

<legalnotice>
<para>
Copyright © 1999-2002 par Paul Ramsey pour la version originale anglaise.
</para> <para>
Copyright © 2002 par Marc Tanguy pour la version française.
</para> <para>
Permission est accordée de copier, distribuer et/ou modifier ce document selon
les termes de la Licence de Documentation Libre GNU (<ulink
url="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation
License</ulink>), version 1.1 ou toute version ultérieure publiée par la Free
Software Foundation ; sans Sections Invariables ; sans Première de Couverture
, et sans Textes de Quatrième de Couverture. 
</para> <para>
Linux est une marque déposée de Linus Torvalds. Toutes les marques déposées
sont la propriété de propriétaires respectifs.
</para>
</legalnotice>

<abstract><para>
Ce document décrit la mise en place d'une Red Hat comme passerelle vers
Internet pour un réseau local d'entreprise ou pour chez soi. Il s'agit tout
simplement de partager une connexion Internet à travers une Red Hat. Les
points suivants seront couverts : masquage d'IP, <acronym>DNS</acronym>,
<acronym>DHCP</acronym>, et quelques principes de base de sécurité.
</para></abstract>
</articleinfo>


<sect1 id="introduction"><title>Introduction</title>
<para>
Cette page est juste un recueil de recettes de cuisine pour configurer une Red
Hat en tant que passerelle pour un réseau local. Les instructions sont très
simplifiées i.e. pas de discussion hasardeuse et on supposera les adresses
réseaux qui devront être choisies. Les pré-requis les plus importants sont :
</para> <para>
<itemizedlist>
  <listitem><para>
vous disposez d'un accès permanent à Internet via le Câble ou l'<acronym>ADSL</acronym> ;
        </para></listitem>
  <listitem><para>
vous avez installé avec succès une <ulink url="http://www.redhat.fr">Red Hat 
</ulink> sur au moins une de vos machines. Notez que c'est aussi valide
pour les distributions dérivées de Red Hat, telle que <ulink url="http://www.linux-mandrake.com/fr">Mandrake</ulink> ;
        </para></listitem>
  <listitem><para>
votre ordinateur sous <acronym>GNU</acronym>/Linux possède deux cartes réseaux installées et qui
sont compatibles avec <acronym>GNU</acronym>/Linux ;
        </para></listitem>
  <listitem><para>
vous avez un concentrateur Ethernet (concentrateur ou switch) si vous mettez en réseau 
plus d'un ordinateur ou alors un câble croisé si vous ne reliez qu'un seul 
ordinateur ;
        </para></listitem>
  <listitem><para>
vous savez éditer des fichiers textes sur votre machine <acronym>GNU</acronym>/Linux ;
        </para></listitem>
  <listitem><para>
vous pouvez vous connecter sous <command>root</command>. Et vous savez
installer des paquetages Red Hat (<acronym>RPM</acronym>) à partir du cédérom
de votre distribution.
        </para></listitem>
</itemizedlist>
</para> <para>
Si vous ne remplissez pas l'une des conditions ci-dessus, alors ce document 
ne vous est probablement pas destiné.
</para> <para>
Il n'y a rien de particulier à faire à l'installation. Choisissez simplement
l'installation qui vous convient et allez-y. Ce document donne les directions
pour installer de zéro tout ce dont vous aurez besoin pour votre réseau, 
afin d'éviter les confusions sur ce que vous avez installé ou configuré 
durant l'installation. Toutes les configurations seront effectuées 
directement sur les fichiers de configuration plutôt qu'avec les outils 
graphiques fournis par Red Hat. Cette solution a pour effet d'être d'une 
certaine façon moins facile mais certainement plus éducative et plus 
facilement applicable dans d'autres situations avec d'autres distributions.
</para>

<sect2 id="versions"><title>Versions</title>
<para>
Les versions les plus à jour de ce document (en anglais) sont accessibles 
en suivant ce lien pour la version 
<ulink url="http://www.tldp.org/HOWTO/mini/Home-Network-mini-HOWTO.html">
<acronym>HTML</acronym></ulink>
ou celui-ci pour la version 
<ulink
url="http://cvsview.tldp.org/index.cgi/LDP/howto/linuxdoc/Home-Network-mini-HOWTO.sgml">
<acronym>SGML</acronym></ulink>
</para>
</sect2>
</sect1>


<sect1 id="branchements"><title>Branchons tout ce qu'il faut</title>
<para>
Selon si vous utilisez un concentrateur ou pas, votre topologie de réseau
différera légèrement. Je ne couvrirai que le câblage avec des prises RJ45
(celles qui ressemblent à des prises de téléphones avec 8 broches) et non le
coaxial.  Avec le coaxial vous pouvez relier plusieurs machines sans
concentrateur, mais vous devez faire plus attention aux terminaisons etc.
Évidemment si vous connaissez le réseau, ces instructions sont clairement
redondantes.
</para>

<sect2><title>Avec un Concentrateur</title>
<para>
Si vous avez un concentrateur, votre réseau local devrait ressembler à quelque
chose comme ça :
        <mediaobject>
        <imageobject>
          <imagedata fileref="images/avec_concentrateur.eps" format="EPS"/>
        </imageobject> 
        <imageobject>
                <imagedata fileref="images/avec_concentrateur.png" format="PNG"/>
  </imageobject>
        </mediaobject>
</para> <para>
Reliez la carte <hardware>eth0</hardware> sur le <acronym>GNU</acronym>/Linux au modem câble ou ADSL
avec le câble fourni par votre fournisseur d'accès à Internet
(<acronym>FAI</acronym>) pendant l'installation (ou un câble que vous savez
fonctionner dans cette configuration. C'est important car parfois le câble doit
être croisé, parfois droit.)
</para> <para>
Reliez la carte <hardware>eth1</hardware> du <acronym>GNU</acronym>/Linux au
concentrateur avec un câble droit. De même, reliez tous les autres ordinateurs
au concentrateur avec des câbles droits.
</para>
</sect2>

<sect2><title>Sans Concentrateur</title>
<para>
Si vous n'avez pas de concentrateur, vous pouvez toujours relier un seul
ordinateur à votre <acronym>GNU</acronym>/Linux, à l'aide d'un câble croisé.
Votre topologie ressemblera alors à ceci :
        <mediaobject>
  <imageobject>
        <imagedata fileref="images/sans_concentrateur.eps" format="EPS"/>
  </imageobject>
        <imageobject>
        <imagedata fileref="images/sans_concentrateur.png" format="PNG"/>
  </imageobject> 
  </mediaobject>
</para> <para>
Reliez la carte <hardware>eth0</hardware> du <acronym>GNU</acronym>/Linux au modem câble ou ADSL à 
l'aide du câble fourni par votre fournisseur d'accès. Reliez la carte 
<hardware>eth1</hardware> du <acronym>GNU</acronym>/Linux à l'autre ordinateur avec un câble croisé.
</para>
</sect2>

<sect2><title>Avec une seule carte réseau</title>
<para>
Cette configuration n'est pas recommandée (dans cette configuration vos
réseaux interne et externe sont sur le même lien physique, et sont donc 
en théorie plus vulnérable aux attaques ; en pratique, le risque est 
relativement faible), mais cela est <emphasis>possible</emphasis>.
</para> <para>
Le noyau Linux inclue le support de la dénomination d'IP (IP aliasing), ce qui
permet d'associer plusieurs adresses IP à une même carte Ethernet. Les noyaux
fournis dans les distributions Red Hat et Mandrake supportent la dénomination
d'IP par défaut.  Pour configurer votre passerelle avec une seule carte
Ethernet, dans tout ce qui suit, remplacez simplement <command>eth1</command>
par <command>eth0:0</command>.
</para> <para>
<emphasis> Dans ce genre de configuration à carte unique, l'utilisation d'un
serveur <acronym>DHCP</acronym> </emphasis> n'est pas
<emphasis>recommandée.</emphasis>
</para> <para>
Branchez toutes vos machines et votre modem câble ou ADSL dans le concentrateur.
Croisez les doigts, vous pouvez continuer.
</para>
</sect2>
</sect1>


<sect1 id="conf_reseau"><title>Configuration du réseau</title>
<para>
Bien, à partir de là, vous avez installé une passerelle sous
<acronym>GNU</acronym>/Linux.  Vous avez peut-être même configuré une de vos
cartes réseaux, et mis en place la connexion vers Internet. De toutes les
manières, nous allons tout reprendre depuis le départ et faire comme si rien
n'était configuré.
</para> <para>
Connectez-vous sous <command>root</command>. Toutes les instructions données
dans ce document supposent que vous soyez connecté sous
<command>root</command>.
</para> <para>
Le noyau Linux se réfère à vos deux cartes Ethernet à travers
<hardware>eth0</hardware> et <hardware>eth1</hardware>, nous allons donc de
même utiliser ces références. Le problème est de savoir laquelle est laquelle.
Voici un moyen «simple» de savoir, garanti à 50% : poser l'ordinateur sur le
bureau avec la carte mère horizontale et le panneau arrière face à vous (comme
si vous alliez l'ouvrir pour travailler dessus). La carte la plus à gauche est
<hardware>eth0</hardware>. Maintenant, notez sur un papier le fabricant et le
modèle de <hardware>eth0</hardware> et d'<hardware>eth1</hardware>.
</para> <para>
Bien, voyons si <hardware>eth0</hardware> et <hardware>eth1</hardware> sont
correctement et automatiquement reconnues par le noyau. Tapez <command>ifconfig
eth0</command> puis <command>ifconfig eth1</command>. Dans les deux cas, si le
noyau reconnaît bien vos cartes, vous devriez voir quelque chose ressemblant à
ceci (en gardant bien à l'esprit que les nombres seront différents) :
</para> <para>
<programlisting format="linespecific">
eth0   Link encap: Ethernet   HWaddr 00:60:67:4A:02:0A 
       inet adr:0.0.0.0  Bcast:0.0.0.0  Masque:255.255.255.255
       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
       RX packets:466 errors:0 dropped:0 overruns:0 frame:0
       TX packets:448 errors:0 dropped:0 overruns:0 carrier:0
       collisions:85 lg file transmission:100 
       RX bytes:800 (0.8 Kb)  TX bytes:736 (0.7 Kb)
       Interruption:10 Adresse de base:0xe400
</programlisting>
</para> 
<para>
Si le noyau ne reconnaît pas votre carte réseau, vous devriez alors voir 
quelque chose comme :
</para>
<para>
<programlisting format="linespecific">
eth0: erreur lors de la recherche d'infos sur l'interface: Périphérique non trouvé
</programlisting>
</para> 

<sect2><title>Configurer un pilote de réseau</title>
<para>
Si les deux cartes ont été reconnues, passez directement à la prochaine 
section. Sinon lisez ce qui suit.
</para> <para>
Bien, il se peut maintenant qu'une ou que vos deux cartes ne soient pas
reconnues par le noyau. Ce n'est pas réellement un problème. Nous avons juste à
spécifier explicitement au noyau comment trouver les cartes. Il existe beaucoup
de détours et nous allons tous les couvrir. N'oubliez pas qu'en cas de grosses
difficultés, vous trouverez tout dans le <ulink
url="http://www.tldp.org/HOWTO/Ethernet-HOWTO.html">Ethernet HOWTO</ulink>.
Voici le résumé de quelques conseils :
</para> <para>
<itemizedlist>
<listitem><para>
<emphasis>vous avez une carte réseau PCI.</emphasis> Vous êtes probablement en
bonne position, en supposant qu'elle ne soit pas trop récente et excentrique
pour qu'il existe un pilote.  Vous trouverez des informations sur votre carte
réseau (et d'autres) en parcourant <command>/proc/pci</command> notamment le
fabricant et le modèle (n.d.t. : vous pouvez utiliser la commande suivante
<command>lspci</command>) ;
</para></listitem>
<listitem><para>
<emphasis>vous avez une carte réseau ISA.</emphasis> Il est possible que vous
ayez à connaître l'adresse de base E/S et l'interruption (IRQ) assignés à la
carte. Vous avez les manuels, n'est-ce pas ? N'est-ce pas ? Sinon, il est grand
temps d'aller surfer du coté du site web du fabricant et de voir s'il a les
références de votre carte. Ou si vous avez une vieille disquette de
configuration DOS, démarrez sous DOS et regardez s'il existe un programme qui
pourrait lire et positionner l'adresse et l'interruption ;
</para></listitem>
<listitem><para>
<emphasis>Vous avez une carte ISA Plug'n'Play.</emphasis> Premièrement vous 
aurez à apprendre comment la configurer -- lisez le <ulink url="http://fr.tldp.org/HOWTO/Plug-and-Play-HOWTO.html">Plug'n'Play HOWTO</ulink>. Heureusement, 
une fois que vous aurez configuré votre carte vous connaîtrez exactement 
son adresse de base E/S et son interruption.
</para></listitem>
</itemizedlist>
</para> <para>
Maintenant que vous connaissez le fabricant de <hardware>eth0</hardware> et de
<hardware>eth1</hardware>, vous pouvez aller sur la <ulink
url="http://fr.tldp.org/HOWTO/Ethernet-HOWTO-5.html">page de
compatibilité</ulink> du <ulink
url="http://fr.tldp.org/HOWTO/Ethernet-HOWTO.html">Ethernet HOWTO</ulink> et
trouver votre carte. Notez le pilote recommandé, et toute information à propos
d'options spécifiques à votre carte. Notez-les quelque part !
</para> <para>
Il est temps d'éditer le fichier de configuration ! Le fichier que vous devez
éditer est le suivant <filename>/etc/modules.conf</filename> (n.d.t. :
anciennement <filename>/etc/conf.modules</filename>). Ouvrez ce fichier avec
l'éditeur de votre choix. Sachant qu'il y a beaucoup de possibilités et de
combinaisons qui peuvent remplir ce fichier, je vais donner ma propre
passerelle comme exemple. Je possède une carte PCI 10/100Mb basé sur la puce
VIA Rhine, et une clone de NE2000 ISA 10Mb de base. J'utilise la carte 100Mb
pour le réseau interne et la carte de 10Mb pour la connexion externe. Mon
fichier <filename>/etc/modules.conf</filename> ressemble à cela : 
</para> <para>
<programlisting format="linespecific">
alias parport_lowlevel parport_pc 
alias eth0 ne 
options ne io=0x300 irq=10 
alias eth1 via-rhine 
</programlisting>
</para> <para>
Mon fichier <filename>modules.conf</filename> se décompose de la manière 
suivante :
</para> <para>
<itemizedlist>
<listitem><para>
La première ligne est ici pour configurer le port parallèle pour l'impression.
Vous avez probablement une ligne similaire. Laissez-la.
</para></listitem>
<listitem><para>
La deuxième ligne (<command>alias eth0 ne</command>) informe le noyau pour 
qu'il utilise le pilote NE pour le périphérique <hardware>eth0</hardware>.
</para></listitem>
<listitem><para>
La troisième ligne (<command>options ne io=0x300 irq=10</command>) passe au
pilote les paramètres d'adresse E/S de base et l'interruption correspondants à
l'emplacement de la carte ISA. Si vous possédez une carte ISA, vous aurez très
certainement à utiliser ce genre de directives. Remplacez juste les options de
pilote, d'adresse et d'interruption par celles de votre carte.
</para></listitem>
<listitem><para>
La dernière ligne (<command>alias eth1 via-rhine</command>) informe le noyau
pour qu'il utilise le pilote VIA-Rhine pour <hardware>eth1</hardware>. Comme ma
carte <hardware>eth1</hardware> est une carte PCI, elle ne nécessite pas de
paramètres supplémentaires (E/S, interruption) : le sous-système PCI configure
le périphérique automatiquement.
</para></listitem>
</itemizedlist>
</para> <para>
Vous vérifierez bien que vous avez des entrées d'alias dans
<filename>modules.conf</filename> pour vos deux cartes, et les lignes d'options
adéquates pour toutes vos cartes ISA. Vous avez d'ailleurs peut-être déjà des
lignes pour une carte Ethernet configurée lors de l'installation.
</para> <para>
Dès que vous aurez fini de modifier votre <filename>modules.conf</filename>,
essayez la commande <command>ifconfig eth0</command> puis <command>ifconfig
eth1</command>. Vous devrez peut-être procéder par tâtonnements si vous perdez
du temps avec les interruptions et les adresses E/S sans manuel du fabricant.
</para>

<sect3><title>Deux cartes réseaux identiques</title>
<para>
Voilà, vous avez voulu être malin, et vous avez acheté deux cartes réseaux
identiques pour votre passerelle <acronym>GNU</acronym>/Linux, et maintenant
vous n'arrivez pas à les faire fonctionner ensemble ? Ne vous inquiétez pas,
pour les faire coexister il suffit d'employer la bonne syntaxe dans votre
<filename>modules.conf</filename>.  Pour cet exemple, les adresses E/S et les
numéros d'interruptions sont fixés, et je supposerai que vous avez acheté une
paire de cartes compatibles NE2000 (un choix habituel). Alors votre fichier
<filename>modules.conf</filename> devrait ressembler à cela :
</para>
<para>
<programlisting format="linespecific">
alias eth0 ne
alias eth1 ne
options ne io=0x330,0x360 irq=7,9 
</programlisting>
</para> 
<para>
Les options d'adressage sont toutes données sur la même ligne, et le premier
nombre pour chaque adressage est pour la carte <hardware>eth0</hardware>,
le second nombre pour <hardware>eth1</hardware>.
</para>
</sect3>
</sect2>

<sect2><title>Configurer le réseau interne</title>
<para>
Le <emphasis>réseau interne</emphasis> est le réseau dans lequel toutes vos
machines personnelles communiquent entre elles. Le <emphasis>réseau
externe</emphasis> désigne le grand et effrayant Internet de l'autre côté du
<acronym>GNU</acronym>/Linux. Généralement parlant, le réseau interne sera
complètement isolé du réseau externe grâce au <acronym>GNU</acronym>/Linux, qui
opérera alors comme pare-feu de force moyenne.
</para>

<sect3><title>Le réseau</title>
<para>
Maintenant que les pilotes fonctionnent et que vous voyez vos deux cartes 
<hardware>eth0</hardware> et <hardware>eth1</hardware> dans 
<command>ifconfig</command> il est temps de mettre en place le réseau interne.
Je choisis arbitrairement de configurer le réseau interne sur la carte 
<hardware>eth1</hardware> et l'externe sur <hardware>eth0</hardware>. 
</para> <para>
Votre réseau interne va être un réseau privé et par conséquent doit utiliser
une plage d'adresse réseau spécifique pour les réseaux internes : 
<command>192.168.1.0</command>. Ceci est un 
<emphasis>réseau privé de classe C</emphasis>, au cas où vous voudriez 
impressionner vos amis (n.d.t. cela impose entre autres l'utilisation d'au
maximum 254 adresses IP différentes sur le réseau interne) ;
</para> <para>
Premièrement nous devons nous assurer que le réseau est activé. Éditez le 
fichier <filename>/etc/sysconfig/network</filename> et vérifiez que les lignes
suivantes sont présentes : 
</para> <para>
<programlisting format="linespecific">
NETWORKING=yes 
FORWARD_IPV4=yes
</programlisting>
</para> <para>
La première ligne indique au système que nous voulons que les périphériques 
réseaux démarrent au démarrage du système. La seconde ligne demande au 
système d'autoriser le transfert IP. Ceci est un pré-requis pour démarrer
la configuration du masquage d'IP à la section 4.
</para>
<note><title>Redhat 6.2</title>
<para>
Pour pouvoir supporter le masquage d'IP et le transfert IP, la Red Hat 6.2 
requiert des modifications dans le fichier 
<filename>/etc/sysctl.conf</filename>. Vérifiez que les lignes suivantes 
existent et que les valeurs sont correctes :
</para> <para>
<programlisting format="linespecific">
net.ipv4.ip_forward = 1 
net.ipv4.ip_always_defrag = 1 
</programlisting>
</para>
</note>
<para>
Tous les paramètres concernant les interfaces réseaux sont dans les fichiers
contenus dans le répertoire <filename
class="directory">/etc/sysconfig/network-scripts</filename>.  Entrez dans ce
répertoire, et créez un nouveau fichier <filename>ifcfg-eth1</filename>. Puis
rentrez ce qui suit dans le fichier <filename>ifcfg-eth1</filename> :
</para> <para>
<programlisting format="linespecific">
DEVICE=eth1 
IPADDR=192.168.1.1 
ONBOOT=yes
</programlisting>
</para> <para>
Ces lignes permettent aux scripts gérant le réseau de configurer
<hardware>eth1</hardware> au démarrage du système et de lui assigner une
adresse IP particulière. Activez votre réseau avec les nouveaux paramètres avec
la commande suivante : <command>/etc/rc.d/init.d/network restart</command>.
</para>
</sect3>

<sect3><title>Le serveur <acronym>DHCP</acronym> (Dynamic Host Configuration Protocol)</title>
<para>
Un serveur <acronym>DHCP</acronym> (Protocole de Configuration Dynamique d'Hôte)
configurera automatiquement les périphériques de votre 
réseau interne avec des adresses IP. Ceci est très utile pour les personnes
munis d'ordinateur portable : ils n'ont qu'à brancher leurs machines et 
tout se configure immédiatement proprement. Si vous ne voulez pas de serveur
DHCP sur votre réseau interne, passez à la section suivante.
</para> <para>
Premièrement vous devez vous assurer que le serveur <acronym>DHCP</acronym> est installé. Montez
votre cédérom <acronym>GNU</acronym>/Linux et installez le paquetage RPM <filename>dhcp</filename>. Ceci fait, 
éditez le fichier <filename>/etc/dhcpd.conf</filename> et mettez les lignes 
suivantes (et seulement celles-ci) dedans :
</para> <para>
<programlisting format="linespecific">
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.2 192.168.1.60;
  default-lease-time 86400;
  max-lease-time 86400;
  option routers 192.168.1.1;
  option ip-forwarding off;
  option broadcast-address 192.168.1.255;
  option subnet-mask 255.255.255.0;
}
</programlisting>
</para> <para>
Si vous allez configurer votre <acronym>GNU</acronym>/Linux en tant que cache <acronym>DNS</acronym> (serveur de nom de 
domaine), insérez alors l'option suivante :
</para> <para>
<programlisting format="linespecific">
option domain-name-servers 192.168.1.1;
</programlisting>
</para> <para>
Si vous savez que ni vous ni vos adresses <acronym>DNS</acronym> externes n'allez utiliser votre 
GNU/Linux comme <acronym>DNS</acronym>, insérez l'option suivante, où x.x.x.x et y.y.y.y représentent
les adresses IP des serveurs <acronym>DNS</acronym> :
</para> <para>
<programlisting format="linespecific">
option domain-name-servers x.x.x.x, y.y.y.y;
</programlisting>
</para> <para>
Si vous voulez utiliser le partage de fichier Samba sur votre
<acronym>GNU</acronym>/Linux pour vos ordinateurs MS-Windows, ajoutez les
options suivantes pour utiliser le GNU/Linux par défaut comme serveur WINS
(Windows Name Server) :
</para> <para>
<programlisting format="linespecific">
option netbios-name-servers 192.168.1.1; 
option netbios-dd-server 192.168.1.1; 
option netbios-node-type 8; 
option netbios-scope "";
</programlisting>
</para> <para>
Configurer Samba et WINS est bien au-delà de la portée de ce document. Si vous
avez besoin d'aide, commencez par lire le <ulink
url="http://fr.tldp.org/HOWTO/a-jour/html/SMB-HOWTO.html">SMB HOWTO</ulink> et
continuez à partir de là.
</para> <para>
Il y a encore quelques petites choses à rajouter. Éditez le fichier 
<filename>/etc/rc.d/init.d/dhcpd</filename> et cherchez la ligne suivante :
</para> <para>
<programlisting format="linespecific">
/sbin/route add -host 255.255.255.255 dev eth1
</programlisting>
</para> <para>
Les clients <acronym>DHCP</acronym> MS-Windows requièrent une adresse de
diffusion particulière (Broadcast Adress) dans les réponses
<acronym>DHCP</acronym>, et cette commande force la pile
<acronym>TCP/IP</acronym> du <acronym>GNU</acronym>/Linux à la reproduire. Si
vous ne trouvez pas cette ligne dans ce fichier,
<emphasis>ajoutez-la</emphasis>. Si vous en trouvez une ressemblante, vérifiez
que la carte référencée soit bien <hardware>eth1</hardware>.
</para> <para>
L'étape suivante est de modifier le fichier
<filename>/etc/sysconfig/dhcpd</filename> afin d'utiliser
<hardware>eth1</hardware> comme carte par défaut. Remplacez la ligne :
</para> <para>
<programlisting format="linespecific">
DHCPDARGS=
</programlisting>
</para> <para>
Par :
</para> <para>
<programlisting format="linespecific">
DHCPDARGS=eth1
</programlisting>
</para> <para>
Bien, nous sommes maintenant prêts à démarrer le <acronym>DHCP</acronym>. Tout
d'abord démarrez le serveur <acronym>DHCP</acronym> avec la commande :
<command>/etc/rc.d/init.d/dhcpd start</command>.
</para> <para>
Puis dans un deuxième temps, nous devons nous assurer que le serveur
<acronym>DHCP</acronym> démarrera au prochain réarmorçage du système. Certains
paquetages RPM pour le serveur <acronym>DHCP</acronym> n'incluent pas les
directives pour assurer le démarrage du service à chaque fois, donc nous devons
le faire en invoquant la commande <command>chkconfig dhcpd on</command>.
</para> <para>
Cette commande force la RedHat à ajouter le script de démarrage du dhcp aux
différents répertoires de niveaux de démarrage dans <filename
class="directory">/etc/rc.d</filename>. Dans les niveaux 3 et 5 (console
multi-utilisateur et X multi-utilisateur) le serveur <acronym>DHCP</acronym>
est démarré.  Dans les niveaux 0, 1 et 6 (arrêt, unique utilisateur et
redémarrage) le serveur <acronym>DHCP</acronym> est arrêté.
</para>
</sect3>

<sect3><title>Les ordinateurs clients</title>
<para>
Si vous avez mis en route le <acronym>DHCP</acronym>, configurer les
ordinateurs clients est très simple : choisissez juste la configuration par
<acronym>DHCP</acronym>. Pour les ordinateurs sous Windows, cela implique
d'ouvrir le <quote>Panneau de configuration</quote> puis l'option
<quote>Réseaux</quote>. Trouvez le protocole <acronym>TCP/IP</acronym> et
cliquez sur <quote>Configurer</quote>.  Cochez la case <quote>Obtenir
automatiquement une adresse IP</quote>, appliquez les changements, puis
redémarrez.
</para> <para>
Avant de redémarrer votre Windows, vous pourriez avoir besoin de taper cette
commande : <command>tail -f /var/log/messages</command>. Ceci vous permettra de
regarder en continue le système de log du <acronym>GNU</acronym>/Linux. Si
tout va bien, quand vous redémarrez votre Windows, vous le verrez demander une
adresse IP et le serveur <acronym>DHCP</acronym> lui répondre. Il suffit d'un
Ctrl+C pour sortir de la commande <command>tail -f</command>.
</para> <para>
Si vous n'avez pas mis en route le <acronym>DHCP</acronym>, la configuration
est tout de même très simple. De même, dans la rubrique <quote>Réseau</quote>
du <quote>Panneau de configuration</quote>, sélectionnez le protocole
<acronym>TCP/IP</acronym> puis cliquez sur <quote>Paramètres</quote>. Vous
pouvez alors lui spécifier une adresse IP comprise dans le réseau 192.168.1.0
sauf 192.168.1.0 (l'adresse de réseau) 192.168.1.255 (l'adresse de diffusion du
réseau) ou 192.168.1.1 (l'adresse du serveur <acronym>GNU</acronym>/Linux). Ne
donnez jamais à deux ordinateurs clients la même adresse IP. Ajoutez la
passerelle à l'adresse 192.168.1.1, ce qui permettra au trafic sortant d'être
routé à travers votre passerelle <acronym>GNU</acronym>/Linux.
</para> <para>
Le <ulink url="http://fr.tldp.org/HOWTO/a-jour/html/IPMasq-HOWTO.html">HOWTO IP
Masquerade</ulink> détaille très précisément la configuration du client
dans le <ulink url="http://fr.tldp.org/HOWTO/a-jour/html/IPMasq-HOWTO-4.html">
Section Configuration</ulink>.
</para> <para>
En général, pour configurer un ordinateur client, soit par
<acronym>DHCP</acronym>, soit par assignation d'une IP fixe dans le réseau
192.168.1.0 avec une passerelle en 192.168.1.1, positionnez l'adresse du
serveur <acronym>DNS</acronym> à 192.168.1.1 si vous avez un serveur de cache
<acronym>DNS</acronym> (voir ci-dessous) ou fixez les DNS aux adresses fournies
par votre fournisseur d'accès à Internet. 
</para>
</sect3>

<sect3><title>Le Serveur de Noms de Domaine (DNS)</title>
<para>
La mise en place d'un serveur de cache <acronym>DNS</acronym> améliorera
légèrement la vitesse de navigation sur le net, car les adresses
<acronym>DNS</acronym> les plus demandées seront mis en cache dans le réseau et
n'auront pas à être récupérées à l'extérieur.
</para> <para>
Si vous êtes intéressés par la mise en place d'un <acronym>DNS</acronym> complet
et efficace, il y a énormément de détails complexes à apprendre. Il existe un
<ulink url="http://fr.tldp.org/HOWTO/a-jour/html/DNS-HOWTO.html">DNS
HOWTO</ulink> disponible, et le livre <ulink
url="http://www.oreilly.fr/catalogue/dns-bind-4ed.html">DNS et Bind</ulink> est
une bonne (et très détaillée) référence papier. 
</para> <para>
Afin que vos machines clientes profitent du serveur de cache, elles doivent
être configurées pour utiliser la passerelle <acronym>GNU</acronym>/Linux comme
serveur <acronym>DNS</acronym> primaire. Les directives <acronym>DHCP</acronym>
données à la section 3.2.2 sont une manière pour accomplir cela. Si vous
configurez vos ordinateurs clients à la main, vous pouvez changer les
configurations <acronym>DNS</acronym> dans les mêmes onglets de configuration
que ceux utilisés pour affecter l'adresse IP de la machine.
</para> <para>
Pour installer le serveur <acronym>DNS</acronym>, installez simplement le
paquetage RPM <command>bind</command>. À présent, vous êtes presque prêt.
</para> <para>
Avec cette installation, le serveur de cache fonctionnera correctement, mais si
vous connaissez les adresses <acronym>IP</acronym> des serveurs DNS de votre
fournisseur d'accès à Internet vous pouvez légèrement améliorer les
performances en éditant le fichier <filename>/etc/named.conf</filename> et en
ajoutant la ligne suivante après la ligne <command>directory</command> (où
x.x.x.x et y.y.y.y désignent les serveurs <acronym>DNS</acronym> primaire et
secondaire) : 
</para> <para>
<programlisting format="linespecific">
forwarders { x.x.x.x; y.y.y.y; };
</programlisting>
</para> <para>
Cette modification imposera à votre serveur <acronym>DNS</acronym> de d'abord
questionner les serveurs <acronym>DNS</acronym> de votre <acronym>FAI</acronym>
avant de traverser Internet à la recherche d'une adresse donnée. Les serveurs
de votre <acronym>FAI</acronym> possèdent souvent un cache riche d'information
<acronym>DNS</acronym> et peuvent alors fournir la réponse plus vite que votre
serveur.
</para> <para>
Le démon <command>named</command> a régulièrement des problèmes de sécurité, il
est donc important d'installer la dernière version, et de modifier certains
paramètres par défaut afin d'améliorer la sécurité.
</para> <para>
<orderedlist>
        <listitem><para>
Vérifiez votre version de <command>bind</command> afin qu'elle soit au moins
égale à 8.2.2. Puis allez sur le site de <ulink
url="ftp://updates.redhat.com">mise à jour Red Hat</ulink> afin de trouver la
dernière version.
        </para></listitem>
        <listitem><para>
Restreignez l'accès à votre serveur de noms à votre réseau local en ajoutant la
ligne <command>allow-query { 192.168.1/24; 127.0.0.1/32; } ; </command> à votre
fichier <filename>/etc/named.conf</filename> après la ligne
<command>forwarders</command>.
        </para></listitem>
        <listitem><para>
Évitez d'exécuter le serveur de noms sous <command>root</command>. Si votre
serveur s'exécute sous <command>root</command>, une faille dans le serveur
donnera à celui qui l'exploite les privilèges de l'administrateur. Si, par
contre vous l'exécutez sous un utilisateur moins privilégié, comme
l'utilisateur <command>nobody</command>, vous pouvez minimiser le risque de
faille dans le serveur de nom. Pour exécuter votre serveur de nom sous
<command>nobody</command>, éditez le fichier
<filename>/etc/rc.d/init.d/named</filename> et changez la ligne <command>daemon
named</command> par <command>daemon named -u nobody</command>.
  <note><title>Redhat 7.x</title>
  <para>
Dans les versions récentes de Red Hat, le démon de serveur de noms s'exécute
déjà sous un utilisateur non privilégié.
  </para>
  </note>
        </para></listitem>
</orderedlist>
</para>
<para>
Vérifiez que votre serveur <acronym>DNS</acronym> démarrera au démarrage de <acronym>GNU</acronym>/Linux à l'aide 
de la commande suivante : <command>chkconfig named on</command>. Une fois 
encore, ceci nous assure que le serveur démarrera dans les niveaux de 
chargements habituels (3 et 5) au démarrage de <acronym>GNU</acronym>/Linux.
</para> <para>
Bien, maintenant vous pouvez démarrer votre serveur <acronym>DNS</acronym> : 
<command>/etc/rc.d/init.d/named start</command>.
</para>
</sect3>

<sect3><title>Tester le réseau interne</title>
<para>
Tant que nous n'aurons pas configurer le réseau externe, le service de <acronym>DNS</acronym>
ne fonctionnera pas (car il doit pouvoir communiquer avec les autres serveurs
DNS sur Internet), cependant nous pouvons tester la connectabilité interne 
basique avec le programme <command>ping</command>.
</para> <para>
Sur l'un de vos ordinateurs clients, ouvrez une fenêtre de commandes MSDOS, 
et tapez <command>ping 192.168.1.1</command>. Ceci émettra des paquets vers 
votre machine <acronym>GNU</acronym>/Linux à des intervalles réguliers, et votre machine GNU/Linux 
répondra aux paquets. Si les choses se passent bien, vous devriez voir les
temps de retour des paquets.
</para>
</sect3>
</sect2>

<sect2><title>Configurer le réseau externe</title>
<para>
Maintenant nous sommes prêts à configurer le réseau externe. Parfois cela sera
difficile, cela dépend la façon dont votre <acronym>FAI</acronym> supporte
<acronym>GNU</acronym>/Linux. Si vous rencontrez des difficultés, il existe un
<ulink url="http://www.tldp.org/HOWTO/DSL-HOWTO/index.html">mini-HOWTO
DSL</ulink> qui couvre en détails les problèmes d'<acronym>ADSL</acronym>. Il
existe aussi un <ulink
url="http://fr.tldp.org/HOWTO/a-jour/mini/html/Cable-Modem.html">mini-HOWTO
Modem Câble</ulink> pour l'Internet par le câble.
</para> <para>
Le principal problème avec la plupart des connexions externes est
<emphasis>l'obtention d'une adresse IP</emphasis>. Certains
<acronym>FAI</acronym> distribuent des adresses IP statiques à leurs abonnés
câble ou ADSL, et dans ce cas la configuration est facilitée. Cependant,
la plupart des <acronym>FAI</acronym> ont maintenant choisi des configurations
dynamiques via (vous l'avez deviné) <acronym>DHCP</acronym> (n.d.t. : la
tendance actuelle est plutôt de se tourner vers le protocole PPPoE, aussi bien
pour le câble que pour l'<acronym>ADSL</acronym>). Ceci signifie que votre
machine <acronym>GNU</acronym>/Linux sera vraisemblablement
<emphasis>serveur</emphasis> <acronym>DHCP</acronym> pour l'interface
<hardware>eth1</hardware>, et <emphasis>client</emphasis>
<acronym>DHCP</acronym> pour l'interface <hardware>eth0</hardware>. 
</para> <para>
De plus, beaucoup de <acronym>FAI</acronym> se sont mis à fournir leurs
services à travers des protocoles non standards spécialisés ce qui oblige leurs
abonnés à rester sous MS-Windows. Certains de ces cas de figures seront
discutés à la fin de la section 3.3.2.
</para>

<sect3><title>Avec une IP fixe</title>
<para>
Si votre <acronym>FAI</acronym> vous a assigné une adresse IP statique, vous
êtes en bonne voie.  Premièrement, créez un fichier pour une nouvelle
interface, <filename>/etc/sysconfig/network-scripts/ifcfg-eth0</filename> et
insérez y les lignes suivantes : 
</para> <para>
<programlisting format="linespecific">
DEVICE=eth0
IPADDR=x.x.x.x
NETMASK=y.y.y.y
ONBOOT=yes
</programlisting>
</para> <para>
Remplacez juste les x.x.x.x et y.y.y.y par les valeurs données par votre
<acronym>FAI</acronym>.  Puis éditez le fichier
<filename>/etc/resolv.conf</filename> et entrez les informations suivantes : 
</para> <para>
<programlisting format="linespecific">
search domaine_du_FAI
nameserver n.n.n.n
nameserver m.m.m.m
</programlisting>
</para> <para>
Le <emphasis>domaine_du_FAI</emphasis> devrait vous être fourni par votre
<acronym>FAI</acronym>.  De même, entrez les adresses des serveurs
<acronym>DNS</acronym> primaire et secondaire aux lignes n.n.n.n et m.m.m.m. Si
vous avez mis en place votre machine <acronym>GNU</acronym>/Linux en tant que
serveur <acronym>DNS</acronym>, vous pouvez ajouter une ligne avant les autres
entrées <command>nameserver 127.0.0.1</command>. Ceci forcera votre serveur
<acronym>GNU</acronym>/Linux à utiliser en priorité le serveur de cache
<acronym>DNS</acronym> avant de demander l'information aux serveurs
<acronym>DNS</acronym> extérieurs.
</para>
</sect3>

<sect3><title>Avec un <acronym>DHCP</acronym></title>
<para>
Si votre <acronym>FAI</acronym> utilise une configuration basée sur un
<acronym>DHCP</acronym>, vous devez alors créer un fichier de configuration
pour une nouvelle interface
<filename>/etc/sysconfig/network-scripts/ifcfg-eth0</filename> avec les lignes
suivantes :
</para> <para>
<programlisting format="linespecific">
DEVICE=eth0 
BOOTPROTO=dhcp 
ONBOOT=yes
</programlisting>
</para> <para>
Maintenant vérifiez que le démon client <command>dhcpcd</command> est installé
sur votre système. Prenez votre cédérom d'installation de
<acronym>GNU</acronym>/Linux et installez le paquetage RPM
<command>dhcpcd</command>.
</para> <para>
C'est le moment de tester notre nouvelle configuration réseau. Utilisez 
juste la commande <command>/etc/rc.d/init.d/network restart</command>. 
Maintenant testez votre connexion vers le réseau externe avec le programme
<command>ping</command>. Pingez un ordinateur sur Internet, comme par exemple
<command>www.yahoo.com</command> et observez le retour.
</para>
</sect3>

<sect3><title>Bizarreries et Anomalies</title>
<para>
Votre situation peut différer d'une des situations simplistes décrites 
ci-dessus. Voici quelques courtes remarques sur les diverses difficultés et des
liens vers des ressources de référence auxquelles les adresser. Merci à 
John Mellor pour avoir fourni les liens et l'impulsion nécessaire à l'ajout 
de cette section.
</para>

<sect4><title>PPP Over Ethernet (PPPoE)</title>
<para>
Plusieurs <acronym>FAI</acronym> ADSL (France Télécom, par exemple) obligent
leurs abonnés à se connecter au service via le protocole "Point à Point à
travers Ethernet" (PPPoE). À cette fin, ils fournissent un programme client
MS-Windows : ce qui n'est pas très utile pour les utilisateurs
<acronym>GNU</acronym>/Linux. Heureusement, PPPoE est un protocole simple et
qui a fait l'objet de développements sous <acronym>GNU</acronym>/Linux.
</para> <para>
<itemizedlist>
  <listitem><para>
Le <ulink url="http://www.roaringpenguin.com/pppoe.html">Client PPPoE de 
Roaring Penguin</ulink> est très fortement recommandé par Kerr First ;
        </para></listitem>
        <listitem><para>
<ulink url="http://www.rhapsodyk.net/adsl/HOWTO/">PPPoE sous
<acronym>GNU</acronym>/Linux avec France Télécom</ulink> ;
        </para></listitem>
        <listitem><para>
PPPoE sous <acronym>GNU</acronym>/Linux avec Sympatico (<ulink
url="http://www2.sympatico.ca/Aidez/local/bell/ehvdownloadGNU/Linux.bell.html">
Informations Générales</ulink>).
        </para></listitem>
</itemizedlist>
</para>
</sect4>

<sect4><title>Trucs idiots à propos du <acronym>DHCP</acronym></title>
<para>
Un des tours favoris auxquels les <acronym>FAI</acronym> jouent est de
restreindre votre service à un nom de machine unique, ou même à une unique
carte d'interface réseau.  Ceci en général afin de vous empêcher de brancher de
multiples ordinateurs sur le port Internet d'un concentrateur (bien sûr, avec
<acronym>GNU</acronym>/Linux et le masquage d'IP vous obtiendrez le même effet
avec une sécurité accrue et sans que votre <acronym>FAI</acronym> puisse le
deviner!).
</para> <para>
Si votre <acronym>FAI</acronym> vous a donné un nom de machine et insiste pour
que vous configuriez votre Windows avec ce nom afin d'utiliser leur service,
alors vous devez vous assurer que votre machine <acronym>GNU</acronym>/Linux
renvoie ce nom de machine quand il requiert une adresse au serveur
<acronym>DHCP</acronym>.
</para> <para>
Le client <acronym>DHCP</acronym> de Red Hat est lancé quand vous positionnez
la variable BOOTPROTO à dhcp dans le fichier de configuration d'interface, mais
il est lancé sans référence à un nom de machine particulier. Pour le lancer
avec un nom de machine donné, sous Red Hat 6.x ou 7.x, éditez le fichier
<filename>/etc/sysconfig/network</filename>, en changeant la ligne : 
</para> <para>
<command>HOSTNAME=</command>
</para> <para>
Par ceci : 
</para> <para>
<command>HOSTNAME=votre_nom_de_machine_assignée_par_votre_FAI</command>
</para> <para>
Cette opération peut ne pas fonctionner sur certaines dérivées de Red Hat.
Si tel est le cas, ouvrez le script <filename>/sbin/ifup</filename> pour voir
si l'appel à dhcpcd et pump inclue le paramètre -h $HOSTNAME. S'il ne l'inclue 
pas, ajoutez-le, de façon à ce que l'appel ressemble à <command>/sbin/dhcpcd 
-i $DEVICE -h $HOSTNAME</command> et <command>/sbin/pump -i $DEVICE -h 
$HOSTNAME</command>.
</para>
</sect4>
<!--
dépassé : voir http://people.qualcomm.com/karn/rr/

<sect4><title>Road Runnerw</title>
<para>
The Road Runner câble service has a special login process which must be
 run before the server can be used. Fortunately, a detailed <ulink url="http://usmcug.usm.maine.edu/~kpesce/rr">GNU/Linux Road Runner HOWTO</ulink> is available.
</para>
</sect4>
-->
</sect3>

<sect3><title>Vue d'ensemble des entrées réseaux</title>
<para>
Maintenant vous pouvez admirer le travail. Tapez <command>ifconfig</command>
pour voir tous les périphériques réseaux configurés. Sur ma machine passerelle,
cela ressemble à ceci : 
</para> <para>
<programlisting format="linespecific">
eth0  Lien encap:Ethernet  HWaddr 00:60:67:4A:02:0A 
      inet adr:24.65.182.43  Bcast:24.65.182.255  Masque:255.255.255.0 
      UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1 
      RX packets:2054256 errors:0 dropped:0 overruns:1 frame:0 
      TX packets:1316599 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:89 lg file transmission:100 
      RX bytes:1478576846 (1410.0 Mb)  TX bytes:203407515 (193.9 Mb)
      Interruption:10 Adresse de base:0xe400
eth1  Lien encap:Ethernet  HWaddr 00:80:C8:D3:30:2C 
      inet adr:192.168.1.1  Bcast:192.168.1.255  Masque:255.255.255.0 
      UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1 
      RX packets:81652 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:116131 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:37938 lg file transmission:100 
      RX bytes:26228293 (25.0 Mb)  TX bytes:109197036 (104.1 Mb)
      Interruption:5 Adresse de base:0xe800
lo    Lien encap:Boucle locale
      inet adr:127.0.0.1  Masque:255.0.0.0 
      UP LOOPBACK RUNNING  MTU:3924  Metric:1 
      RX packets:359890 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:359890 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 lg file transmission:0
      RX bytes:145538898 (138.7 Mb)  TX bytes:145538898 (138.7 Mb)
</programlisting>
</para> <para>
Notez que l'interface <hardware>eth0</hardware> a une adresse IP fantaisiste,
alors que l'adresse d'<hardware>eth1</hardware> est une adresse de réseau 
privé interne.
</para> <para>
Vous pouvez regarder les routes de réseaux en tapant la commande 
<command>route</command>. Sur ma passerelle, cela ressemble à ceci :
</para> <para>
<programlisting format="linespecific">
  Table de routage IP du noyau
  Destination     Passerelle   Genmask         Indic Metric Ref Use Iface 
  255.255.255.255 *            255.255.255.255 UH    0      0     0 eth1 
  192.168.1.0     *            255.255.255.0   U     0      0     0 eth1 
  24.65.182.0     *            255.255.255.0   U     0      0     0 eth0 
  127.0.0.0       *            255.0.0.0       U     0      0     0 lo 
  default         24.65.182.1  0.0.0.0         UG    0      0     0 eth0
</programlisting>
</para> <para>
Ici nous pouvons voir que le réseau externe est configuré, que le réseau 
interne aussi, ainsi que la boucle locale, l'adresse spéciale de diffusion 
255.255.255.255 est configurée, et la route par défaut pointe vers la 
passerelle du <acronym>FAI</acronym>. Parfait !
</para> <para>
À ce point vous avez l'extérieur, et l'intérieur. Il ne reste qu'à ouvrir 
les portes entre les deux. Avant toute chose, nous devons nous assurer 
qu'aucun monstre ne puisse rentrer de l'extérieur.
</para>
</sect3>
</sect2>

<sect2><title>Sécurité</title>
<para>
Un des inconvénients d'avoir une connexion permanente vers Internet via
l'<acronym>ADSL</acronym> ou le câble est que votre ordinateur est exposé aux
menaces de trous de sécurité potentiels 24 heures sur 24, 7 jours sur 7.
Utiliser GNU/Linux comme passerelle réduit les risques, car il cache les autres
ordinateurs : ainsi en ce qui concerne le reste d'Internet, seul votre machine
<acronym>GNU</acronym>/Linux est disponible pour des connexions. Ceci signifie
que votre réseau interne est au mieux aussi sécurisé que votre machine
<acronym>GNU</acronym>/Linux, c'est pourquoi je vais vous donner quelques
astuces basiques pour améliorer cette sécurité.
</para> <para>
Premièrement, il est nécessaire de bloquer les personnes malintentionnées.
Pour cela, éditez le fichier <filename>/etc/hosts.deny</filename> et  
vérifiez qu'il ressemble exactement à cela : 
</para> <para>
<programlisting format="linespecific">
# 
# hosts.deny  This file describes the names of the hosts which are 
#             *not* allowed to use the local INET services, as decided 
#             by the '/usr/sbin/tcpd' server. 
# 
#            The portmap line is redundant, but it is left to remind you that 
#        the new secure portmap uses hosts.deny and hosts.allow. In particular 
#             you should know that NFS uses portmap! 
ALL: ALL 
</programlisting>
</para> <para>
Ceci demande au "TCP wrappers" -- qui contrôle 95% des connexions entrantes --
de refuser toutes les connexions de tous les hôtes. C'est plutôt une bonne 
règle ! Malheureusement, elle vous empêchera aussi de vous connecter à votre
GNU/Linux à partir de votre réseau interne, ce qui est gênant, donc nous allons 
rajouter une exception. Éditez le fichier <filename>/etc/hosts.allow</filename>
et vérifiez qu'il ressemble exactement à cela :
</para> <para>
<programlisting format="linespecific">
# 
# hosts.allow  This file describes the names of the hosts which are 
#              allowed to use the local INET services, as decided 
#              by the '/usr/sbin/tcpd' server. 
# 
ALL: 127.0.0.1 
ALL: 192.168.1.
</programlisting>
</para> <para>
Ceci indique au "TCP wrappers" qu'il doit autoriser les connexions à tous les
services à partir de la machine locale (127.0.0.1) et à partir du réseau 
interne (192.168.1.).
</para> <para>
Bien, vous avez maintenant bloqués les méchants à l'extérieur, avec un bon 
cadenas. Si vous voulez utiliser des systèmes de blocage et d'alarmes, vous 
allez devoir être beaucoup plus sophistiqués. Le 
<ulink url="http://www.tldp.org/HOWTO/Security-HOWTO.html">Security HOWTO
</ulink> est une bonne lecture pour commencer si vous voulez en apprendre plus
pour sécuriser votre machine <acronym>GNU</acronym>/Linux.
</para>
</sect2>
</sect1>


<sect1 id="conf_masq"><title>Configurer le Masquage d'IP</title>
<para>
Ça y est ! Les préliminaires sont terminés, c'est ici que la magie commence.
Le masquage d'IP est un des services vraiment magique que
<acronym>GNU</acronym>/Linux propose.  Il existe des produits commerciaux pour
MS-Windows qui font la même chose, mais ils sont loin d'approcher la même
efficacité : un vieux 386 peut joyeusement fournir des services de masquage
d'IP à un bureau entier de taille moyenne, alors qu'il ne pourrait même pas
lancer MS-Windows 95", sans parler du support ajouté du masquage d'IP." (Il
est aujourd'hui possible d'utiliser le "partage de connexion" de MS-Windows
pour faire du masquage d'IP mais il toujours impossible de faire tourner
MS-Windows 2000 sur un 386.)
</para> <para>
<acronym>GNU</acronym>/Linux a des capacités de pare-feu extrêmement variées,
et nous allons les utiliser dans leur manière la plus simple et la plus
rudimentaire. Si vous voulez apprendre comment maîtriser les pare-feux, vous
devriez lire à la fois le <ulink
url="http://fr.tldp.org/HOWTO/a-jour/html/Firewall-HOWTO.html"> HOWTO du
pare-feu et des serveurs mandataires</ulink> pour une compréhension de la
théorie et le <ulink
url="http://fr.tldp.org/HOWTO/a-jour/html/IPCHAINS-HOWTO.html"> HOWTO
IPCHAINS</ulink> pour les instructions à propos de l'outil de pare-feux
<command>ipchains</command> fourni avec le noyau Linux 2.2.X (et par extension
avec la Red Hat 6.X). (n.d.t. : un nouvel outil <command>iptables</command> est
fourni avec le noyau Linux 2.4.x, sa documentation peut être trouvé <ulink
url="http://www.iptables.org/documentation/index.html#HOWTO">ici</ulink>) Il y
a aussi un très bon <ulink
url="http://fr.tldp.org/HOWTO/a-jour/html/IPMasq-HOWTO.html"> HOWTO IP
Masquerade</ulink> disponible qui donne beaucoup de détails pour ajuster le
masquage d'IP.
</para> 
<note><title>n.d.t. : Attention à votre version de noyau/distribution</title>
<para> Afin d'utiliser au mieux les ressources disponibles, une lecture
attentive du <ulink
url="http://fr.tldp.org/HOWTO/a-jour/html/IPMasq-HOWTO.html"> HOWTO IP
Masquerade</ulink> est nécessaire. En effet, les différentes versions de noyaux
Linux impliquent l'utilisation d'outils adaptés. De plus en plus de
distributions récentes fournissent des outils graphiques de configuration pour
le pare-feu.
</para>
</note>
<para>
Configurer un simple masquage d'IP est très très facile une fois que les
réseaux interne et externe sont opérationnels. Éditez le fichier
<filename>/etc/rc.d/rc.local</filename> et ajoutez les lignes suivantes à la
fin :
</para> <para>
<programlisting format="linespecific">
# 1) Remettre les règles des tables à zéro
/sbin/ipchains -F input 
/sbin/ipchains -F forward 
/sbin/ipchains -F output 
# 2) Configurer les temporisations du MASQ et autoriser les paquets entrants 
#    pour la du <acronym>DHCP</acronym>. 
/sbin/ipchains -M -S 7200 10 60 
/sbin/ipchains -A input -j ACCEPT -i eth0 -s 0/0 68 -d 0/0 67 -p udp 
# 3) Refuser tous les paquets transférés à part ceux provenant du réseau local.
#    Camoufler ces derniers.
/sbin/ipchains -P forward DENY 
/sbin/ipchains -A forward -s 192.168.1.0/24 -j MASQ 
# 4) Charger les modules pour des services spécifiques. 
/sbin/modprobe ip_masq_ftp 
/sbin/modprobe ip_masq_raudio
</programlisting>
</para> <para>
Les deux dernières lignes insèrent des modules noyaux qui autorisent le FTP
et le RealAudio pour les ordinateurs dans le réseau interne. Il existe d'autres
modules pour des services spéciaux que vous pouvez ajouter ensuite si vous en 
avez besoin : 
</para> <para>
<itemizedlist>
  <listitem><para>
CUSeeMe (<command>/sbin/modprobe ip_masq_cuseeme</command>) 
        </para></listitem>
  <listitem><para>
Internet Relay Chat (<command>/sbin/modprobe ip_masq_irc</command>) 
        </para></listitem>
  <listitem><para>
Quake (<command>/sbin/modprobe ip_masq_quake</command>) 
        </para></listitem>
  <listitem><para>
VDOLive (<command>/sbin/modprobe ip_masq_vdolive</command>) 
        </para></listitem>
</itemizedlist>
</para>
<para>
Maintenant vous êtes prêts à essayer le masquage d'IP ! Lancez le script
<filename>rc.local</filename> avec la commande
<command>/etc/rc.d/rc.local</command> et ça devrait aller. Asseyez-vous devant
un autre ordinateur et essayez le surfer sur la toile. Avec un peu de chance,
tout devrait aller comme sur des roulettes.
</para>
</sect1>


<sect1 id="problemes"><title>Problèmes</title>
<para>
Il y a beaucoup de choses qui peuvent mal se passer en utilisant un document
comme celui-ci, car il existe plein de cas spéciaux. La majorité des problèmes
viennent de la configuration des périphériques réseaux interne et externe.
J'essaierai de répondre à ceux qui rencontrent des problèmes, en essayant de
voir ce qui ne va pas et en ajoutant des liens ici pour que les personnes avec
des problèmes liés à des cas spéciaux puissent trouver de l'aide. Vous pouvez
me joindre sans problème à l'adresse suivante <ulink
url="mailto:pramsey@refractions.net"> pramsey@refractions.net</ulink>.
</para>

<sect2><title>ICQ ne fonctionne pas</title>
<para>
Reportez vous tout simplement au <ulink
url="http://fr.tldp.org/HOWTO/a-jour/html/IPMasq-HOWTO-6.html#ss6.10">HOWTO IP
Masquerade</ulink>.
</para>
</sect2>

<sect2><title>J'ai une Caldera 2.X et pas une Red Hat 6.X</title>
<para>
Bien, tout d'abord félicitations pour aller à contre-courant ! Deuxièmement,
Nelson Gibbs (ngibbs@pacbell.net) a envoyé de bonnes nouvelles, car la 
plupart de ces instructions fonctionneront pour vous. Il y a des changements
importants à noter cependant : 
</para> <para>
<orderedlist>
  <listitem><para>
Une spécification de passerelle <command>GATEWAY=xxx.xxx.xxx.xxx</command> dans
<filename>/etc/sysconfig/network-scripts/ifcfg-eth0</filename> et
<filename>eth1</filename> pour les interfaces (l'interface locale utilise
l'adresse IP distante et l'interface distante utilise l'adresse IP de la
passerelle du <acronym>FAI</acronym>) ;
        </para></listitem>
  <listitem><para>
Vérifiez que le script <filename>/etc/sysconfig/daemons/dhcpd</filename>
positionne la variable <command>ROUTE_DEVICE</command> à
<hardware>eth1</hardware> et <emphasis>non</emphasis> <hardware>eth0</hardware>
;
        </para></listitem>
  <listitem><para>
Le fichier <filename>/etc/dhcpd.conf</filename> requiert un paramètre de
sous-réseau pour chaque interface (Je ne suis pas trop sûr du pourquoi et du
comment lorsque j ai fait mon deuxième test : subnet 213.102.154.201 netmask
255.255.255.255 { } sans aucune autre option le dhcp écoutait et envoyait aussi
bien sur <hardware>eth0</hardware> que <hardware>eth1</hardware>). Le serveur
<acronym>DHCP</acronym> renvoie des erreurs si un seul des 2 sous-réseaux est
listé ;
        </para></listitem>
  <listitem><para>
n'ajoutez <emphasis>pas</emphasis> de route vers
<command>255.255.255.255</command>, le script
<filename>/etc/rc.d/init.d/dhcpd</filename> fourni par Caldera fixe déjà le
problème. <emphasis>Changez</emphasis> chaque référence de
<hardware>eth0</hardware> à <hardware>eth1</hardware> dans ce script.
        </para></listitem>
 </orderedlist>
</para> 
</sect2>

<sect2><title>Je veux qu'une de mes machines interne soit mon serveur Web 
</title>
<para>
C'est du gâteau ! En revanche, <emphasis>vous aurez besoin d'une adresse IP 
statique</emphasis> pour que la liste de recommandations suivantes fonctionne.
Si vous avez une adresse IP dynamique, vous devrez rajouter des scripts pour
vous assurer que l'adresse IP soit mise à jour dans les commandes de transfert
de port quand l'adresse change.
</para> <para>
Gardez à l'esprit que transférer un port externe vers une machine interne
rend votre machine interne 'moins' interne qu'avant, heureusement ceci peut
être fait de manière totalement transparente et sans réelle dégradation de
performance. Un des effets de bord de l'implémentation du masquage d'IP dans le
noyau Linux est la possibilité de faire des choses plutôt géniales avec les
paquets quand il passe à travers la couche réseau, et l'utilitaire
<command>ipmasqadm</command> est construit de manière à en tirer avantage.
</para> <para>
Pour certaines raisons <command>ipmasqadm</command> n'est pas fourni avec
toutes les dérivées de Red Hat ou de Mandrake, donc vous aurez probablement à
le télécharger sur le <ulink
url="http://www.e-infomax.com/ipmasq/juanjox/">site du mainteneur</ulink> -- il
existe aussi un <ulink
url="http://www.e-infomax.com/ipmasq/juanjox/ipmasqadm-0.4.2-2.i386.rpm">
paquetage RPM</ulink> de disponible ainsi que le code source.
</para> <para>
Une fois que vous avez le paquetage Red Hat, installez-le, et ajoutez les lignes
suivantes à votre fichier <filename>/etc/rc.d/rc.local</filename> :
</para> <para>
<programlisting format="linespecific">
/usr/sbin/ipmasqadm portfw -f 
/usr/sbin/ipmasqadm portfw -a -P tcp -L x.x.x.x 80 -R 192.168.1.x 80 
</programlisting>
</para> <para>
La première commande efface les règles de transfert de port, la seconde ajoute
un transfert du port 80 externe vers le port 80 du machine en interne. Notez
que l'adresse IP statique tient dans l'espace d'adresse x.x.x.x et l'adresse
IP interne dans l'espace 192.168.1.x.
</para> <para>
À partir de là, les requêtes externes vers le port 80 seront envoyées de
manière transparente au port 80 de la machine interne. Notez que vous ne
pourrez tester à l'aide de telnet ou en vous connectant au port 80 de la 
passerelle d'une machine interne : le transfert de port honore seulement les
requêtes en provenance de l'interface <emphasis>externe</emphasis>.
</para>
</sect2>
</sect1>
</article>
<!--
vim:ts=2:sw=2 
-->
Heberge par Ikoula