773ff743ed
There's a reason we have catalogs, and it isn't to use inodes.
277 lines
16 KiB
Text
Executable file
277 lines
16 KiB
Text
Executable file
<!--
|
|
The FreeBSD Documentation Project
|
|
The FreeBSD French Documentation Project
|
|
|
|
$FreeBSD: doc/fr_FR.ISO8859-1/articles/ip-aliasing/article.sgml,v 1.4 2001/07/13 15:48:39 nik Exp $
|
|
Original revision: n.nn
|
|
-->
|
|
|
|
<!DOCTYPE ARTICLE PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
|
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN"> %man;
|
|
<!ENTITY % urls PUBLIC "-//FreeBSD//ENTITIES Common Document URL Entities//FR"> %urls;
|
|
<!ENTITY % abstract PUBLIC "-//FreeBSD//ENTITIES DocBook Abstract Entities//FR"> %abstract;
|
|
<!ENTITY % artheader PUBLIC "-//FreeBSD//ENTITIES DocBook ArtHeader Entities//FR"> %artheader;
|
|
<!ENTITY % translators PUBLIC "-//FreeBSD//ENTITIES DocBook Translator Entities//FR"> %translators;
|
|
|
|
<!ENTITY % authors PUBLIC "-//FreeBSD//ENTITIES DocBook Author Entities//EN"> %authors;
|
|
<!ENTITY % mailing-lists PUBLIC "-//FreeBSD//ENTITIES DocBook Mailing List Entities//FR"> %mailing-lists;
|
|
<!ENTITY rel.current CDATA "3.2">
|
|
]>
|
|
|
|
<article lang="fr">
|
|
<articleinfo>
|
|
<title>Alias IP avec FreeBSD 2.x</title>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Ben</firstname>
|
|
<surname>Black</surname>
|
|
</author>
|
|
</authorgroup>
|
|
&artheader.copyright;
|
|
<abstract>
|
|
<para><email>black@cypher.net</email></para>
|
|
&abstract.license;
|
|
&abstract.disclaimer;
|
|
&trans.a.haby;
|
|
</abstract>
|
|
</articleinfo>
|
|
<sect1>
|
|
<title>Introduction</title>
|
|
<para>Définir des <emphasis>alias IP</emphasis> consiste à affecter plus
|
|
d'une adresse IP à une interface réseau. Les alias IP sont typiquement
|
|
employés pour héberger des serveurs Web et FTP virtuels et pour
|
|
réorganiser ses serveurs sans avoir à mettre à jour d'autres machines
|
|
(ce dernier usage est particulièrement utile avec les serveurs de noms
|
|
de domaines). Voyez un alias IP comme un petit enfant perché sur le
|
|
dos de son interface parente (qui est l'adresse primaire de l'interface
|
|
physique).</para>
|
|
<para>Les alias IP <emphasis>n'ont rien à voir</emphasis> avec la notion
|
|
de <emphasis>multi-hébergement</emphasis> - “<foreignphrase>multi-homing</foreignphrase>”
|
|
(lorsqu'une machine dispose de plus d'une interface réseau active), sauf
|
|
au cas où une machine sur plusieurs réseaux fournit des services tels que
|
|
ceux listés plus haut. La confusion entre les deux notions est une erreur
|
|
propagée du monde Macintosh et vous seriez avisé de ne pas les suivre sur
|
|
ce point.</para>
|
|
<para>Il y a deux commandes essentielles à la mise en place d'alias IP sur
|
|
FreeBSD (et sur tous les autres systèmes Unix que j'aie jamais utilisés),
|
|
ce sont <command>ifconfig</command> et <command>route</command>.
|
|
L'utilisation correcte de ces commandes est décrite ci-dessous. Pour
|
|
connaître toutes les subtilités de leur emploi, reportez-vous aux pages de
|
|
manuel correspondantes. Il y a deux autres commandes utiles pour vérifier
|
|
que tout fonctionne comme il se doit et pour mettre les choses au point
|
|
si ce n'est pas le cas. <command>netstat</command> vous permet de
|
|
consulter la table de routage du noyau (entre autres choses utiles), et
|
|
ping est un appréciable petit outil pour tester l'accès à votre nouvel
|
|
alias (comme à toute autre adresse IP).</para>
|
|
<important>
|
|
<para>Vous <emphasis>devez</emphasis> être en session sous le compte
|
|
super-utilisateur <username>root</username> pour pouvoir exécuter la
|
|
plupart des commandes décrites dans ce qui suit.</para>
|
|
</important>
|
|
</sect1>
|
|
<sect1>
|
|
<title>Utiliser <command>ifconfig</command></title>
|
|
<para><citerefentry><refentrytitle>ifconfig</refentrytitle></citerefentry>
|
|
sert à configuer les différentes caractéristiques d'une interface réseau
|
|
(adresse, protocole, masque de réseau, etc.).
|
|
<citerefentry><refentrytitle>ifconfig</refentrytitle></citerefentry> nous
|
|
servira ici à ajouter (et parfois à supprimer) les adresses des alias des
|
|
interfaces.</para>
|
|
<para>Dans l'exemple ci-dessous, nous supposerons que notre machine n'a
|
|
qu'une seule interface Ethernet 3Com 3C509 (<devicename>ep0</devicename>)
|
|
d'adresse <hostid role="ipaddr">192.168.57.82</hostid> avec comme masque
|
|
de sous-réseau <hostid role="netmask">255.255.255.0</hostid>, en plus
|
|
de l'interface “en boucle” standard
|
|
<hostid role="ipaddr">127.0.0.1</hostid>. Vous devrez bien sûr remplacer
|
|
ces valeurs par l'adresse et le masque de sous-réseau de votre(vos)
|
|
interface(s). L'adresse et le masque de sous-réseau de l'interface
|
|
“en boucle” sont les mêmes sur toutes les machines.</para>
|
|
<para>Pour ajouter un alias à <devicename>ep0</devicename>, nous passons
|
|
simplement une commande du style:</para>
|
|
<informalexample>
|
|
<screen>&prompt.root; <userinput>ifconfig ep0 inet 192.168.57.10 netmask 255.255.255.255 alias</userinput></screen>
|
|
</informalexample>
|
|
<para>Ce qui dit à FreeBSD que nous définissons une adresse IP
|
|
(<literal>inet</literal>) pour la carte 3Com
|
|
(<devicename>ep0</devicename>) avec comme adresse
|
|
<hostid role="ipaddr">192.168.57.10</hostid>, comme masque de
|
|
sous-réseau (<literal>netmask</literal>)
|
|
<hostid role="netmask">255.255.255.255</hostid> (i.e., tous
|
|
les bits à 1) pour éviter que le système d'exploitation ne proteste qu'il
|
|
y a déjà une adresse affectée à cette interface, et que c'est un alias
|
|
pour cette interface (<literal>alias</literal>).</para>
|
|
<para>Vous pouvez aussi omettre le masque de sous-réseau (ou lui donner une
|
|
autre valeur). Jusqu'à FreeBSD 2.1.0 compris, il y a néanmoins un bogue
|
|
qui fait que les commandes <command>ifconfig alias</command> échouent à
|
|
la première tentative, mais réussissent à la seconde, si vous n'indiquez
|
|
pas <hostid role="netmask">255.255.255.255</hostid> comme masque de
|
|
sous-réseau. Si vous ne donnez pas ce masque de sous-réseau de
|
|
<hostid role="netmask">255.255.255.255</hostid>, vous devrez aussi ajouter
|
|
une route manuellement, comme décrit ci-dessous.</para>
|
|
<para>Pour supprimer l'alias, nous exécutons une commande très
|
|
similaire:</para>
|
|
<informalexample>
|
|
<screen>&prompt.root; <userinput>ifconfig ep0 inet 192.168.57.10 -alias</userinput></screen>
|
|
</informalexample>
|
|
<para>Il n'y a pas besoin de paramètres supplémentaires, tels que le masque
|
|
de sous-réseau, parce que l'alias est entièrement défini par l'adresse IP,
|
|
de sorte que FreeBSD peut supprimer toutes les ressources associées en se
|
|
basant sur cette adresse.</para>
|
|
</sect1>
|
|
<sect1>
|
|
<title>Utiliser <command>route</command></title>
|
|
<para><citerefentry><refentrytitle>route</refentrytitle></citerefentry> sert
|
|
à modifier à la main la table de routage du noyau. Pour nos besoins, une
|
|
fois que nous avons donné à FreeBSD l'alias pour l'interface, nous devons
|
|
définir une route IP vers cet alias. Si vous avez précisé le masque de
|
|
sous-réseau de <hostid role="netmask">255.255.255.255</hostid> avec la
|
|
commande précédente, vous pouvez vous dispenser de cette étape.</para>
|
|
<para>Pour ajouter une route vers notre nouvelle interface, nous
|
|
exécutons:</para>
|
|
<informalexample>
|
|
<screen>&prompt.root; <userinput>route add -host 192.168.57.10 127.0.0.1 0</userinput></screen>
|
|
</informalexample>
|
|
<para>Cela dit à FreeBSD que pour arriver à la machine
|
|
<hostid role="ipaddr">192.168.57.10</hostid>, les paquets doivent être
|
|
envoyés sur l'interface “en boucle”
|
|
(<hostid role="ipaddr">127.0.0.1</hostid> aussi appelée
|
|
<hostid role="hostname">localhost</hostid> et que la distance (décompte
|
|
de noeuds intermédiaires) est de <literal>0</literal>, ce qui signifie
|
|
que c'est la machine locale.</para>
|
|
<para>Pour supprimer cette route, nous exécutons:</para>
|
|
<informalexample>
|
|
<screen>&prompt.root; <userinput>route delete -host 192.168.57.10</userinput></screen>
|
|
</informalexample>
|
|
<para>De nouveau, comme la route est entièrement définie par les paramètres
|
|
indiqués, nous pouvons laisser de côté les autres données telles que
|
|
le masque de sous-réseau et la distance. Pour des informations complètes
|
|
sur la commande
|
|
<citerefentry><refentrytitle>route</refentrytitle></citerefentry>,
|
|
voyez les pages de manuel.</para>
|
|
</sect1>
|
|
<sect1>
|
|
<title>Tester notre travail</title>
|
|
<para>Maintenant que nous avons (espérons-le) un alias défini et accessible,
|
|
nous devons vérifier qu'il fonctionne correctement. Nous examinerons
|
|
d'abord la table de routage du noyau, pour vérifier que la route vers
|
|
l'alias est bien présente, puis nous utiliserons
|
|
<citerefentry><refentrytitle>ping</refentrytitle></citerefentry> pour
|
|
nous assurer que des paquets peuvent l'atteindre.</para>
|
|
<para>Pour voir la table de routage du noyau, sous forme numérique,
|
|
tapons:</para>
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>netstat -nr</userinput></screen>
|
|
</informalexample>
|
|
<para>Dans notre exemple, voici à quoi ressemblerait le résultat:</para>
|
|
<programlisting>
|
|
Routing tables
|
|
|
|
Internet:
|
|
Destination Gateway Flags Refs Use Netif Expire
|
|
default 192.168.57.1 UGSc 4 964 ep0
|
|
127.0.0.1 127.0.0.1 UH 1 39 lo0
|
|
192.168.57 link#2 UC 0 0
|
|
192.168.57.10/32 link#2 UC 0 0
|
|
192.168.57.82 127.0.0.1 UGHS 0 0 lo0
|
|
224/4 link#2 UCS 0 0
|
|
</programlisting>
|
|
<para>Nous y voyons la route par défaut, la route vers l'interface
|
|
“en boucle”, la route vers notre réseau local et une curieuse
|
|
route vers notre alias. Le <literal>/32</literal> qui suit l'adresse de
|
|
l'alias donne la longueur du masque de sous-réseau (le nombre de 1, en
|
|
partant de la gauche). Comme nous avons utilisé un masque de sous-réseau
|
|
de <hostid role="netmask">255.255.255.255</hostid>, la longueur de
|
|
celui-ci (le nombre de 1) est de 32.</para>
|
|
<para>Maintenant que nous avons vérifié que la route est bien dans la table
|
|
de routage du noyau, nous pouvons effectuer un contrôle rapide pour nous
|
|
assurer que cette route fonctionne bien. Exécutons une commande
|
|
<citerefentry><refentrytitle>ping</refentrytitle></citerefentry> comme
|
|
ci-dessous:</para>
|
|
<informalexample>
|
|
<screen>&prompt.user; <userinput>ping 192.168.57.10</userinput></screen>
|
|
</informalexample>
|
|
<para>Si tout va bien, voici ce que nous verrions:</para>
|
|
<programlisting>
|
|
PING 192.168.57.10 (192.168.57.10): 56 data bytes
|
|
64 bytes from 192.168.57.10: icmp_seq=0 ttl=255 time=0.313 ms
|
|
64 bytes from 192.168.57.10: icmp_seq=1 ttl=255 time=0.197 ms
|
|
64 bytes from 192.168.57.10: icmp_seq=2 ttl=255 time=0.190 ms
|
|
</programlisting>
|
|
<para>Appuyons simplement sur
|
|
<keycombo><keycap>Ctrl</keycap><keycap>C</keycap></keycombo> pour arrêter
|
|
<citerefentry><refentrytitle>ping</refentrytitle></citerefentry> si tout
|
|
paraît satisfaisant. Il nous “crachera” alors quelques
|
|
statistiques, que nous pouvons normalement ignorer. S'il n'y a pas de
|
|
retour ou s'il y a des messages d'erreur, quelque chose ne va pas.
|
|
Reprenez tout du début et lisez les pages de manuel (non, vraiment,
|
|
<emphasis>allez lire les pages de manuel</emphasis>), et, finalement,
|
|
posez vos questions sur la &a.questions;.</para>
|
|
</sect1>
|
|
<sect1>
|
|
<title>Tout mettre en place</title>
|
|
<para>Maintenant que nous avons compris comment utiliser les commandes
|
|
<citerefentry><refentrytitle>ifconfig</refentrytitle></citerefentry> et
|
|
<citerefentry><refentrytitle>route</refentrytitle></citerefentry> pour
|
|
ajouter et supprimer des alias IP, faisons en sorte que la machine
|
|
exécute les commandes voulues au démarrage de façon à ce que l'alias soit
|
|
toujours actif.</para>
|
|
<para>Vers la fin de notre fichier <filename>/etc/rc.local</filename>, nous
|
|
ajouterons la ligne:</para>
|
|
<programlisting>
|
|
ifconfig ep0 inet 192.168.57.10 netmask 255.255.255.255 alias
|
|
</programlisting>
|
|
<para>Si nous utilisons un autre masque de sous-réseau que
|
|
<hostid role="netmask">255.255.255.255</hostid>, nous devrons aussi
|
|
utiliser la commande
|
|
<citerefentry><refentrytitle>route</refentrytitle></citerefentry> comme
|
|
expliqué plus haut. Il est possible d'ajouter de cette façon autant
|
|
d'alias que l'on veut (en supposant que nous disposons de suffisamment
|
|
d'adresses allouées). Il suffit de mettre plusieurs commandes comme
|
|
la précédente dans <filename>/etc/rc.local</filename>, avec les adresses
|
|
appropriées. Il est même possible de définir comme alias des adresses
|
|
d'un autre réseau IP, si ce réseau est aussi routé sur nous. C'est une
|
|
situation différente de celle d'une machine avec plusieurs interfaces
|
|
<emphasis>physiques</emphasis> qui doivent <emphasis>toujours</emphasis>
|
|
avoir des adresses sur des réseaux IP différents.</para>
|
|
<para>Il y a un certains nombre de points à connaître lorsque l'on utilise
|
|
un grand nombre d'alias (plus de ~10), que je citerai.</para>
|
|
<para>Tout d'abord, il y a un bogue dans toutes les distributions de
|
|
<application>bind</application> (le serveur DNS
|
|
<application>named</application> fait partie de
|
|
<application>BIND</application>) qui empêche le démarrage correct de
|
|
<application>named</application> lorsqu'il y a plus de 64 alias sur
|
|
une interface. Il n'y a pas de palliatif particulièrement simple, je ne
|
|
les mentionnerai donc pas ici.</para>
|
|
<para>En second lieu, pour éviter de truffer votre fichier
|
|
<filename>/etc/rc.local</filename> de quantité
|
|
d'<citerefentry><refentrytitle>ifconfig</refentrytitle></citerefentry>, je
|
|
vous suggère d'utiliser un fichier à part dans <filename>/etc</filename>
|
|
pour les y mettre. Créez par exemple un fichier
|
|
<filename>ifconfig.ep0</filename> et mettez-y tous les
|
|
<literal>ifconfig alias</literal>. Puis dans
|
|
<filename>/etc/rc.local</filename>, ajoutez les lignes suivantes:</para>
|
|
<programlisting>
|
|
if [ -x /sbin/ifconfig ]; then
|
|
echo -n 'Adding local ifconfigs '
|
|
. /etc/ifconfig.ep0
|
|
echo ' done.'
|
|
fi
|
|
</programlisting>
|
|
<para>Ce fragment de procédure provient d'un fichier
|
|
<filename>/etc/rc.local</filename> fourni par Neil Fowler Wright
|
|
<email>neil@corpex.com</email>. Le bricoleur trouvera moyen d'y mettre
|
|
des boucles s'il y a plusieurs interfaces dont les alias sont définis
|
|
dans différents fichiers <filename>ifconfig.*</filename>.</para>
|
|
</sect1>
|
|
<sect1>
|
|
<title>Où trouver plus d'aide</title>
|
|
<para>M'envoyer directement un courrier électronique n'est probablement pas
|
|
le meilleur moyen d'obtenir de l'aide sur les problèmes d'alias IP. Je
|
|
suis assez occupé la plupart du temps, et ai tendance à devenir assez
|
|
rouspéteur. Néanmoins, les participants de la &a.questions; sont
|
|
amicaux et secourables et répondront à vos questions plus rapidement que
|
|
je ne le ferais.</para>
|
|
<para>Cette page a grandement bénéficié des suggestions de Neil Fowler
|
|
Wright, Paul DuBois, Gabe Schuyler, et de Brodie le chat.</para>
|
|
</sect1>
|
|
</article>
|