aboutsummaryrefslogtreecommitdiff
path: root/fr_FR.ISO8859-1/articles/ip-aliasing/article.sgml
blob: da14d16e561d90c7ef5441f09b0d17c9d4f6b139 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
<?xml version="1.0" encoding="ISO8859-1" standalone="no"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
	"../../../share/sgml/freebsd42.dtd" [
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//FR" "../../share/sgml/entities.ent">
%entities;
<!ENTITY % not.published "IGNORE">
]>

<!--
     The FreeBSD Documentation Project
     The FreeBSD French Documentation Project

     $FreeBSD$
     Original revision: n.nn
-->

<article lang="fr">
  <articleinfo>
    <title>Alias IP avec FreeBSD 2.x</title>
    <authorgroup>
      <author>
        <firstname>Ben</firstname>
        <surname>Black</surname>
      </author>
    </authorgroup>
    <abstract>
      <para><email>black@cypher.net</email></para>

      &trans.a.haby;
    </abstract>

    <pubdate>$FreeBSD$</pubdate>

    <releaseinfo>$FreeBSD$</releaseinfo>
  </articleinfo>
  <sect1>
    <title>Introduction</title>
    <para>Définir des <emphasis>alias IP</emphasis> consiste &agrave; affecter plus
      d'une adresse IP &agrave; 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 &agrave; mettre &agrave; 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 &agrave; voir</emphasis> avec la notion
      de <emphasis>multi-hébergement</emphasis>&nbsp;-&nbsp;&ldquo;<foreignphrase>multi-homing</foreignphrase>&rdquo;
      (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 &agrave; 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 &agrave; votre nouvel
      alias (comme &agrave; 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 &agrave; configurer 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 &agrave; ajouter (et parfois &agrave; 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 &ldquo;en boucle&rdquo; 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
      &ldquo;en boucle&rdquo; sont les mêmes sur toutes les machines.</para>
    <para>Pour ajouter un alias &agrave; <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 &agrave; 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 &agrave; 1) pour éviter que le système d'exploitation ne proteste qu'il
      y a déj&agrave; une adresse affectée &agrave; 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'&agrave; FreeBSD 2.1.0 compris, il y a néanmoins un bogue
      qui fait que les commandes <command>ifconfig alias</command> échouent &agrave;
      la première tentative, mais réussissent &agrave; 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
      &agrave; modifier &agrave; la main la table de routage du noyau. Pour nos besoins, une
      fois que nous avons donné &agrave; 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 &agrave; FreeBSD que pour arriver &agrave; la machine
      <hostid role="ipaddr">192.168.57.10</hostid>, les paquets doivent être
      envoyés sur l'interface &ldquo;en boucle&rdquo;
      (<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 &agrave; 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
      &ldquo;en boucle&rdquo;, 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 &ldquo;crachera&rdquo; 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 &agrave; 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 &agrave; 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 &agrave; 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 &agrave; devenir assez
      rouspéteur. Néanmoins, les participants de la &a.questions; sont
      amicaux et secourables et répondront &agrave; 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>