<?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 -->