This file is indexed.

/usr/share/doc/HOWTO/fr-html/Proxy-ARP-Subnet.html is in doc-linux-fr-html 2013.01-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>ProxyARP Subnetting HOWTO</title>
</head>
<body>
<h1>ProxyARP Subnetting HOWTO</h1>
<h2>Bob Edwards,
&lt;<code>Robert.Edwards@anu.edu.au</code>&gt;</h2>
Ao&ucirc;t 1997
<hr>
<em>Ce HOWTO explique l'utilisation d'un sous-r&eacute;seau avec
mandataire (</em>proxy) ARP (protocole de r&eacute;solution
d'adresse), pour rendre visible un petit r&eacute;seau de machines
comme si ces machines &eacute;taient reli&eacute;es directement au
r&eacute;seau principal. (traduction : Michel Billaud,
&lt;<code>billaud@labri.u-bordeaux.fr</code>&gt;).
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<p>Ce HOWTO explique l'utilisation d'un sous-r&eacute;seau avec
mandataire (<em>proxy</em>) ARP (protocole de r&eacute;solution
d'adresse), pour rendre visible un petit r&eacute;seau de machines
(nous l'appellerons <em>r&eacute;seau 0</em> dans la suite) comme
si ces machines &eacute;taient reli&eacute;es directement au
r&eacute;seau principal (<em>r&eacute;seau 1</em>).</p>
<p>Ceci n'a de sens que si les machines sont reli&eacute;es par
Ethernet ou autres dispositifs de type <em>ether</em> (autrement
dit &ccedil;a ne convient pas pour SLIP, PPP, CSLIP, etc.)</p>
<h2><a name="s2">2. Remerciements</a></h2>
<p>Ni ce document, ni mon impl&eacute;mentation du mandatement ARP,
n'auraient &eacute;t&eacute; possibles sans l'aide :</p>
<ul>
<li>d'Andrew Tridgell, qui a impl&eacute;ment&eacute; sous Linux
les options de sous-r&eacute;seau pour <em>arp</em>, et qui m'a
aid&eacute; personnellement &agrave; le faire marcher ;</li>
<li>du mini-HOWTO <em>Proxy-ARP</em> &eacute;crit par Al LongYear
;</li>
<li>du mini-HOWTO <em>Multiple-Ethernet</em> de Don Becker ;</li>
<li>du code source et de la page de manuel de la commande
<code>arp(8)</code>, de Fred N. van Kempen et Bernd Eckenfels.</li>
</ul>
<h2><a name="s3">3. Pourquoi utiliser un sous-r&eacute;seau avec
mandataire ARP ?</a></h2>
<p>Les applications d'un sous-r&eacute;seau avec mandataire ARP
sont assez sp&eacute;cifiques.</p>
<p>Dans mon cas, j'avais une carte Ethernet sans-fil ISA 8 bits. Je
voulais utiliser cette carte pour raccorder un certain nombre de
machines. Apr&egrave;s avoir &eacute;crit un pilote
(<em>driver</em>) pour cette carte ISA (c'est le sujet d'un autre
document), je pouvais l'utiliser dans une machine Linux. &Agrave;
partir de l&agrave;, il &eacute;tait seulement n&eacute;cessaire
d'ajouter une seconde interface Ethernet &agrave; la machine Linux,
et d'utiliser alors un m&eacute;canisme quelconque pour
interconnecter les deux r&eacute;seaux.</p>
<p>Dans la suite, j'appellerai <em>r&eacute;seau 0</em> le
r&eacute;seau local Ethernet reli&eacute; &agrave; la machine Linux
par une carte Ethernet (clone NE-2000) sur <em>eth0</em>. Le
<em>r&eacute;seau 1</em> est le r&eacute;seau principal
connect&eacute; par la carte Ethernet sans-fil sur <em>eth1</em>.
La <em>machine A</em> est la machine Linux avec ses deux
interfaces. La <em>machine B</em> est une station quelconque du
r&eacute;seau 0, et la <em>machine C</em> est sur le r&eacute;seau
1.</p>
<p>Normalement, pour r&eacute;aliser l'interconnexion, on pourrait
:</p>
<ul>
<li>utiliser le logiciel IP-Bridge (voir le <em>Bridge
mini-HOWTO</em>) pour r&eacute;aliser un pont entre les deux
interfaces r&eacute;seau. Malheureusement, la carte Ethernet
sans-fil ne peut pas &ecirc;tre mise en mode ``promiscuous''
(autrement dit elle ne peut pas voir tous les paquets circulant sur
le r&eacute;seau 1). C'est principalement &agrave; cause de la
faible bande passante de la carte Ethernet sans-fil (2 Mbits/sec),
ce qui implique que nous ne voulons pas supporter le trafic qui
n'est pas destin&eacute; &agrave; une autre machine sans-fil - dans
notre cas la machine A -, ou les diffusions g&eacute;n&eacute;rales
(<em>broadcasts</em>). De plus, un pont charge assez lourdement le
processeur.</li>
<li>ou bien utiliser des sous-r&eacute;seaux et un routeur pour
transmettre les paquets entre les r&eacute;seaux (voir le
<em>IP-Subnetworking mini-HOWTO</em>). C'est une solution
d&eacute;pendante du protocole, b&eacute;n&eacute;ficiant du fait
que le noyau Linux sait g&eacute;rer les paquets IP (Internet
Protocol), mais demandant du logiciel suppl&eacute;mentaire pour
router d'autres protocoles (tels qu'AppleTalk). De plus, ceci
n&eacute;cessite d'allouer un nouveau num&eacute;ro de
sous-r&eacute;seau IP, ce qui n'est pas toujours possible.</li>
</ul>
<p>Dans mon cas, il n'&eacute;tait pas possible d'obtenir un
nouveau num&eacute;ro de sous-r&eacute;seau, alors je voulais une
solution qui permette aux machines du r&eacute;seau 0
d'appara&icirc;tre comme si elles &eacute;taient sur le
r&eacute;seau 1. C'est &agrave; cela que sert le mandatement ARP.
D'autres solutions sont utilis&eacute;es pour connecter d'autres
protocoles (non-IP), comme <em>netatalk</em> pour le routage
AppleTalk.</p>
<h2><a name="s4">4. Comment marche le mandatement ARP d'un
sous-r&eacute;seau&nbsp;?</a></h2>
<p>En fait, le mandatement ARP sert uniquement &agrave; faire
passer les paquets du r&eacute;seau 1 vers le r&eacute;seau 0. Pour
faire passer les paquets dans l'autre sens, on emploie le routage
IP normal.</p>
<p>Dans mon cas, le r&eacute;seau 1 poss&egrave;de un masque de
sous-r&eacute;seau &agrave; 8 bits <code>255.255.255.0</code>. Pour
le r&eacute;seau 0, j'ai choisi un masque &agrave; 4 bits
(<code>255.255.255.240</code>), qui permet d'avoir 14 noeuds IP sur
le r&eacute;seau 0 (2^4 = 16, moins deux pour l'adresse de
r&eacute;seau remplie de z&eacute;ros et l'adresse de diffusion
remplie de uns ). Remarquez que toute taille de masque de
sous-r&eacute;seau convient, jusqu'&agrave; la taille - non
comprise - du masque de l'autre r&eacute;seau (dans notre cas : 2,
3, 4, 5, 6 ou 7 bits - pour un seul bit utilisez le mandatement ARP
normal !).</p>
<p>Les num&eacute;ros IP (au total 16) du r&eacute;seau 0
apparaissent comme un sous-ensemble du r&eacute;seau 1. Remarquez
qu'il est tr&egrave;s important, dans ce cas, de ne pas donner aux
machines qui sont connect&eacute;es directement au r&eacute;seau 1
un num&eacute;ro pris dans cet intervalle. Dans mon cas, j'ai
``r&eacute;serv&eacute;'' les num&eacute;ros IP du r&eacute;seau 1
qui se terminent par 64 &agrave; 79 pour le r&eacute;seau 0. Les
num&eacute;ros IP qui se terminent par 64 et 79 ne peuvent pas
&ecirc;tre attribu&eacute;s &agrave; des machines : 79 est
l'adresse de diffusion pour le r&eacute;seau 0.</p>
<p>La machine A a deux num&eacute;ros IP, l'un dans la plage
d'adresses du r&eacute;seau 0 pour sa vraie carte Ethernet
(<em>eth0</em>), l'autre dans la plage du r&eacute;seau 1 (mais en
dehors de la plage du r&eacute;seau 0) pour la carte Ethernet
sans-fil (<em>eth1</em>).</p>
<p>Supposons que la machine C (du r&eacute;seau 1) veuille envoyer
un paquet &agrave; la machine B (du r&eacute;seau 0). Comme le
num&eacute;ro IP de la machine B laisse croire &agrave; la machine
C que B est sur le m&ecirc;me r&eacute;seau physique, la machine C
va utiliser le protocole de r&eacute;solution d'adresse ARP pour
envoyer un message de diffusion sur le r&eacute;seau 1, demandant
&agrave; la machine qui a le num&eacute;ro IP de B de
r&eacute;pondre avec son adresse mat&eacute;rielle (adresse
Ethernet ou MAC). La machine B ne verra pas cette requ&ecirc;te,
puisqu'en r&eacute;alit&eacute; elle n'est pas sur le r&eacute;seau
1, mais la machine A, qui est sur les deux r&eacute;seaux, la
verra.</p>
<p>La premi&egrave;re chose magique se produit maintenant, lorsque
le code <em>arp</em> du noyau de la machine Linux
(configur&eacute;e en mandataire ARP avec sous-r&eacute;seau)
d&eacute;termine que la requ&ecirc;te est arriv&eacute;e sur
l'interface du r&eacute;seau 1 (<em>eth1</em>), et que le
num&eacute;ro IP &agrave; r&eacute;soudre est dans l'intervalle du
r&eacute;seau 0. La machine A envoie alors sa propre adresse
mat&eacute;rielle (adresse Ethernet) &agrave; la machine C dans un
paquet de r&eacute;ponse ARP.</p>
<p>La machine C met alors &agrave; jour son cache ARP en y ajoutant
une entr&eacute;e pour la machine B, mais avec l'adresse
mat&eacute;rielle (Ethernet) de la machine A (la carte Ethernet
sans-fil). La machine C peut alors envoyer le paquet pour B
&agrave; cette adresse mat&eacute;rielle (Ethernet), et la machine
A le re&ccedil;oit.</p>
<p>La machine A remarque que l'adresse de destination IP n'est pas
la sienne, mais celle de B. Le code de routage du noyau Linux de la
machine A essaie alors de faire suivre ce paquet vers la machine B
en cherchant dans ses tables de routage pour savoir quelle
interface contient le num&eacute;ro de r&eacute;seau de B. Quoi
qu'il en soit, le num&eacute;ro IP de B est valide aussi bien pour
le r&eacute;seau 0 (<em>eth0</em>) que pour le r&eacute;seau 1
(<em>eth1</em>).</p>
<p>C'est alors qu'un autre fait magique se produit : comme le
masque de sous-r&eacute;seau du r&eacute;seau 0 a plus de bits
&agrave; 1 (il est plus sp&eacute;cifique) que celui du
r&eacute;seau 1, le code de routage du noyau Linux va associer le
num&eacute;ro IP de B &agrave; l'interface du r&eacute;seau 0, et
ne va pas chercher &agrave; voir si il correspond &agrave;
l'interface du r&eacute;seau 1 (par laquelle le paquet est
arriv&eacute;).</p>
<p>Maintenant la machine A doit trouver la ``vraie'' adresse
mat&eacute;rielle (Ethernet) de la machine B (en supposant qu'elle
ne l'a pas d&eacute;j&agrave; dans le cache ARP). La machine A
utilise une requ&ecirc;te ARP, mais cette fois-ci le code
<code>arp</code> du noyau Linux voit que la requ&ecirc;te ne vient
pas de l'interface du r&eacute;seau 1 (<em>eth1</em>), et donc ne
renvoie pas l'adresse du mandataire ARP. &Agrave; la place, il
envoie la requ&ecirc;te ARP sur l'interface du r&eacute;seau 0
(<em>eth0</em>), o&ugrave; la machine B le verra et r&eacute;pondra
en donnant sa propre adresse mat&eacute;rielle (Ethernet). La
machine A peut alors envoyer le paquet (qui venait de C) vers la
machine B.</p>
<p>La machine B re&ccedil;oit le paquet de C (qui est pass&eacute;
par A) et veut alors envoyer une r&eacute;ponse. Cette fois, B
remarque que C est sur un sous-r&eacute;seau diff&eacute;rent (le
masque de sous-r&eacute;seau 255.255.255.240 exclut toutes les
machines qui ne sont pas dans la plage d'adresses IP du
r&eacute;seau 0). La machine B est configur&eacute;e avec une route
par d&eacute;faut vers l'adresse IP de A sur le r&eacute;seau 0, et
envoie le paquet &agrave; la machine A. Cette fois-ci, le code de
routage du noyau Linux de A trouve que l'adresse IP de la
destination (machine C) est sur le r&eacute;seau 1, et envoie le
paquet &agrave; la machine C par l'interface Ethernet
<em>eth1</em>.</p>
<p>Des choses du m&ecirc;me genre (mais moins compliqu&eacute;es)
se produisent pour les paquets &eacute;mis (ou re&ccedil;us) par la
machine A en direction (ou provenant) d'autres machines sur l'un ou
l'autre des deux r&eacute;seaux.</p>
<p>De la m&ecirc;me fa&ccedil;on, il est &eacute;vident que si une
autre machine D du r&eacute;seau 0 envoie une requ&ecirc;te ARP
concernant B sur le r&eacute;seau 0, la machine A recevra cette
requ&ecirc;te sur son interface du r&eacute;seau 0 (<em>eth0</em>)
et s'abstiendra d'y r&eacute;pondre, puisqu'elle n'est
configur&eacute;e comme mandataire que sur son interface du
r&eacute;seau 1 (<em>eth1</em>).</p>
<p>Remarquez aussi que les machines B, C (et D) n'ont de
sp&eacute;cial &agrave; faire, du point de vue IP. Dans mon cas, il
y a un m&eacute;lange de SUN, de MAC et de PC sous Windows 95 sur
le r&eacute;seau 0, qui se connectent toutes au reste du monde
&agrave; travers la machine Linux A.</p>
<p>Pour finir, notez qu'une fois que les adresses
mat&eacute;rielles (Ethernet) ont &eacute;t&eacute; trouv&eacute;es
par chacune des machines A, B, C (et D), elles sont plac&eacute;es
dans leur cache ARP, et que les paquets suivants sont
tranf&eacute;r&eacute;s sans surco&ucirc;t d&ucirc; &agrave; l'ARP.
Normalement, les caches ARP suppriment les informations au bout de
5 minutes d'inactivit&eacute;.</p>
<h2><a name="s5">5. Installation du mandataire ARP de
sous-r&eacute;seau</a></h2>
<p>J'ai install&eacute; le mandataire ARP du sous-r&eacute;seau sur
un noyau Linux version 2.0.30, mais il parait que le code
fonctionne avec une version 1.2.x.</p>
<p>La premi&egrave;re chose &agrave; noter est que le code ARP est
en deux parties : une partie dans le noyau, qui envoie et
re&ccedil;oit les requ&ecirc;tes et les r&eacute;ponses ARP et met
&agrave; jour le cache ARP, etc. ; l'autre partie est
constitu&eacute;e de la commande <code>arp(8)</code> qui permet au
super-utilisateur de mettre &agrave; jour manuellement le cache
ARP, et &agrave; tout le monde de le consulter.</p>
<p>Le premier probl&egrave;me que j'ai eu &eacute;tait que la
commande <code>arp(8)</code> de ma distribution Slackware 3.1
&eacute;tait antique (dat&eacute;e de 1994 !) et ne communiquait
pas correctement du tout avec le code ARP du noyau (``<code>arp
-a</code>'' donnait un r&eacute;sultat &eacute;trange).</p>
<p>La commande <code>arp(8)</code> de
``<code>net-tools-1.33a</code>'', qui est disponible sur un grand
nombre de sites, en particulier (d'apr&egrave;s le README qui lui
est joint)
<code>ftp.linux.org.uk:/pub/linux/Networking/PROGRAMS/NetTools/</code>,
fonctionne correctement, et contient de nouvelles pages de manuel
<code>arp(8)</code> qui expliquent les choses bien mieux que les
anciennes.</p>
<p>Une fois muni d'une commande <code>arp(8)</code> d&eacute;cente,
il ne me restait plus qu'&agrave; modifier le seul fichier
<code>/etc/rc.d/rc.inet1</code> (pour la Slackware - c'est
probablement diff&eacute;rent pour d'autres distributions). Tout
d'abord, il nous faut changer l'adresse de diffusion, le
num&eacute;ro de r&eacute;seau, et le masque de <em>eth0</em> :</p>
<pre>
NETMASK=255.255.255.240 # pour la partie h&ocirc;te sur 4 bits
NETWORK=x.y.z.64        # notre nouveau r&eacute;seau 
                        #     (remplacez x.y.z par votre r&eacute;seau)
BROADCAST=x.y.z.79      # pour moi.
</pre>
<p>Il faut ensuite ajouter une ligne pour configurer la seconde
interface Ethernet (apr&egrave;s les chargements de modules qui
sont &eacute;ventuellement n&eacute;cessaires pour lancer le
pilote) :</p>
<p><code>/sbin/ifconfig eth1</code>
<em>nom_sur_le_r&eacute;seau_1</em> <code>broadcast</code>
<em>x.y.z.255</em> <code>netmask 255.255.255.0</code></p>
<p>Puis nous ajoutons une route pour la nouvelle interface :</p>
<p><code>/sbin/route add -net</code> <em>x.y.z.0</em> <code>netmask
255.255.255.0</code></p>
<p>Et vous aurez sans doute besoin de changer la passerelle par
d&eacute;faut pour utiliser celle du r&eacute;seau 1.</p>
<p>Arriv&eacute;s &agrave; ce point, nous pouvons ajouter la ligne
pour le mandatement ARP :</p>
<pre>
/sbin/arp -i eth1 -Ds ${NETWORK} eth1 netmask ${NETMASK} pub
</pre>
<p>Ceci demande &agrave; ARP d'ajouter au cache une entr&eacute;e
statique (``<code>s</code>'') pour le r&eacute;seau
<code>${NETWORK}</code>. Le ``<code>-D''</code> dit d'utiliser la
m&ecirc;me adresse mat&eacute;rielle que l'interface <em>eth1</em>
(la seconde interface), ce qui nous &eacute;vite d'avoir &agrave;
chercher l'adresse mat&eacute;rielle de <em>eth1</em> et de la
coder directement dans la commande.</p>
<p>L'option <code>netmask</code> indique qu'il s'agit d'une
entr&eacute;e ARP concernant un <em>sous-r&eacute;seau</em>, qui
est constitu&eacute; des num&eacute;ros IP tels que</p>
<blockquote><code><em>num&eacute;ro_ip</em> &amp; ${NETMASK} ==
${NETWORK} &amp; ${NETMASK}</code></blockquote>
L'option <code>pub</code> demande de <em>publier</em> cette
entr&eacute;e ARP, c'est-&agrave;-dire qu'il s'agit
d'<em>mandatement</em>, et qu'il faudra r&eacute;pondre au nom de
ces num&eacute;ros IP. L'option ``<code>-i eth1</code>''
pr&eacute;cise qu'il ne faudra r&eacute;pondre qu'aux
requ&ecirc;tes ARP arrivant par l'interface <em>eth1</em>.
<p>Normalement, &agrave; ce point, si la machine est
red&eacute;marr&eacute;e, tous les machines du r&eacute;seau 0
sembleront &ecirc;tre sur le r&eacute;seau 1. Vous pouvez
v&eacute;rifier que l'entr&eacute;e de mandatement ARP de
sous-r&eacute;seau a &eacute;t&eacute; prise en compte correctement
sur la machine A. Sur ma machine (j'ai chang&eacute; les noms pour
prot&eacute;ger les innocents) c'est :</p>
<pre>
#/sbin/arp -an
Address                 HWtype  HWaddress           Flags Mask            Iface
x.y.z.1                 ether   00:00:0C:13:6F:17   C     *               eth1
x.y.z.65                ether   00:40:05:49:77:01   C     *               eth0
x.y.z.67                ether   08:00:20:0B:79:47   C     *               eth0
x.y.z.5                 ether   00:00:3B:80:18:E5   C     *               eth1
x.y.z.64                ether   00:40:96:20:CD:D2   CMP   255.255.255.240 eth1
</pre>
<p>Vous pouvez aussi regarder le fichier
<code>/proc/net/arp</code>, par exemple avec
<code>cat(1)</code>.</p>
<p>La derni&egrave;re ligne est l'entr&eacute;e de mandatement pour
le sous-r&eacute;seau. Les indicateurs <code>CMP</code>
r&eacute;v&egrave;lent qu'il s'agit d'une donn&eacute;e statique
(entr&eacute;e Manuellement) qui doit &ecirc;tre Publi&eacute;e.
Elle ne servira qu'&agrave; r&eacute;pondre qu'aux requ&ecirc;tes
ARP qui arrivent par <em>eth1</em> et pour lesquelles le
num&eacute;ro IP, une fois masqu&eacute;, correspond au
num&eacute;ro de r&eacute;seau (&eacute;galement masqu&eacute;).
Remarquez que la commande <code>arp(8)</code> a trouv&eacute;
automatiquement l'adresse mat&eacute;rielle de <em>eth1</em> et l'a
employ&eacute;e comme adresse &agrave; utiliser (&agrave; cause de
l'option ``<code>-Ds</code>'').</p>
<p>De la m&ecirc;me fa&ccedil;on il est probablement prudent de
v&eacute;rifier que la table de routage a &eacute;t&eacute; remplie
correctement. Voici la mienne (ici aussi, les noms ont
&eacute;t&eacute; chang&eacute;s pour prot&eacute;ger les
innocents) :</p>
<pre>
#/bin/netstat -rn
Kernel routing table
Destination     Gateway         Genmask         Flags Metric Ref Use    Iface
x.y.z.64        0.0.0.0         255.255.255.240 U     0      0       71 eth0
x.y.z.0         0.0.0.0         255.255.255.0   U     0      0      389 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        7 lo
0.0.0.0         x.y.z.1         0.0.0.0         UG    1      0      573 eth1
</pre>
<p>Vous pouvez aussi regarder le contenu du fichier
<code>/proc/net/route</code> (par exemple avec
<code>cat(1)</code>).</p>
<p>Remarquez que la premi&egrave;re entr&eacute;e concerne un
sous-ensemble de la seconde, mais la table de routage les classe
dans l'ordre des masques, et donc l'entr&eacute;e <em>eth0</em>
sera test&eacute;e avant celle de <em>eth1</em>.</p>
<h2><a name="s6">6. Autres alternatives au mandatement ARP de
sous-r&eacute;seau</a></h2>
<p>Dans la m&ecirc;me situation il y a d'autres possibilit&eacute;s
que le mandatement ARP de sous-r&eacute;seau et celles que j'ai
d&eacute;j&agrave; mentionn&eacute;es (utilisation d'un pont et
routage direct) :</p>
<ul>
<li>``<em>Masquerading IP</em>'' (voir le <em>IP-Masquerade
mini-HOWTO</em>), dans lequel le r&eacute;seau 0 est
``cach&eacute;e'' du reste du monde derri&egrave;re la machine A.
Quand les machines du r&eacute;seau 0 tentent de se connecter
&agrave; l'ext&eacute;rieur &agrave; travers la machine A, celle-ci
modifie l'adresse d'origine et le num&eacute;ro de port des paquets
pour qu'ils aient l'air d'avoir &eacute;t&eacute; envoy&eacute;s
par elle-m&ecirc;me, plut&ocirc;t que par la machine cach&eacute;e
du r&eacute;seau 0. C'est une solution &eacute;l&eacute;gante, bien
qu'elle emp&ecirc;che toute machine du r&eacute;seau 1
d'&eacute;tablir une connexion vers une machine du r&eacute;seau 0,
puisque les machines du r&eacute;seau 0 n'existent pas en dehors de
celui-ci.
<p>Ceci am&eacute;liore efficacement la s&eacute;curit&eacute; des
machines du r&eacute;seau 0, mais cela signifie aussi que les
serveurs du r&eacute;seau 1 ne peuvent pas v&eacute;rifier
l'identit&eacute; des clients du r&eacute;seau 0 en se basant sur
leur num&eacute;ros IP (les serveurs NFS, par exemple, utilisent
les noms IP pour contr&ocirc;ler l'acc&egrave;s aux syst&egrave;mes
de fichiers).</p>
</li>
<li>Une autre possibilit&eacute; serait un <em>tunnel IP sur
IP</em>, ce qui n'est pas support&eacute; par toutes les
plateformes (comme les Macs et les machines sous Windows), et je
n'ai donc pas opt&eacute; pour cette solution.</li>
<li>Utiliser le mandatement ARP sans sous-r&eacute;seau. C'est tout
&agrave; fait possible, cela signifie simplement qu'il faut
cr&eacute;er une entr&eacute;e individuelle pour chaque machine du
r&eacute;seau 0, au lieu d'une seule entr&eacute;e pour toutes les
machines (pr&eacute;sentes et futures) du r&eacute;seau 0.</li>
<li>Il se peut que l'<em>aliasing IP</em> puisse &ecirc;tre
utilis&eacute; ici (NdT: francheement &ccedil;a
m'&eacute;tonnerait), mais je n'ai pas du tout explor&eacute; cette
voie.</li>
</ul>
<h2><a name="s7">7. Autres applications du mandatement ARP de
sous-r&eacute;seau</a></h2>
<p>Je ne connais qu'une autre application du mandatement ARP de
sous-r&eacute;seau, ici &agrave; l'Australian National University
(ANU). C'est celle pour laquelle Andrew Tridgell a &eacute;crit,
&agrave; l'origine, les extensions du mandatement ARP pour les
sous-r&eacute;seaux. Quoiqu'il en soit, Andrew m'informe qu'il y a,
de fait, plusieurs autres sites dans le monde qui l'utilisent
&eacute;galement (je n'ai aucun d&eacute;tail).</p>
<p>&Aacute; l'ANU, l'autre application concerne un laboratoire
d'enseignement qui sert &agrave; apprendre aux &eacute;tudiants
comment configurer des machines pour utiliser TCP/IP, y compris
pour configurer la passerelle. Le r&eacute;seau utilis&eacute; est
un r&eacute;seau de classe C, et Andrew avait besoin de le
d&eacute;couper en sous-r&eacute;seaux pour des raisons de
s&eacute;curit&eacute;, de contr&ocirc;le du trafic et la raison
p&eacute;dagogique mentionn&eacute;e plus haut. Il l'a fait en
utilisant le mandatement ARP, et a alors d&eacute;cid&eacute;
qu'une seule entr&eacute;e dans le cache ARP pour tout le
sous-r&eacute;seau serait plus rapide et plus propre qu'une pour
chaque machine du sous-r&eacute;seau. Et voil&agrave;. Mandatement
ARP de sous-r&eacute;seau !</p>
<p>Les corrections et les suggestions sont les bienvenues !</p>
<h2><a name="s8">8. Copyright</a></h2>
<p>Copyright 1997 par Bob Edwards
&lt;<code>Robert.Edwards@anu.edu.au</code>&gt;</p>
<p>T&eacute;l&eacute;phone : (+61) 2 6249 4090</p>
<p>Sauf mention contraire, les copyrights des documents ``<em>Linux
HOWTO</em>'' sont d&eacute;tenus par leurs auteurs respectifs. Ces
documents peuvent &ecirc;tre reproduits et distribu&eacute;s en
tout ou partie, sur tout support physique ou &eacute;lectronique,
du moment que cette notice de copyright figure sur toutes les
copies. La redistribution commerciale est autoris&eacute;e et
encourag&eacute;e, cependant l'auteur souhaite en &ecirc;tre
averti. Toutes les traductions, les travaux d&eacute;riv&eacute;s,
ou ouvrages incorporant un <em>Linux HOWTO</em> doivent &ecirc;tre
soumis &agrave; cette m&ecirc;me notice de copyright. Autrement
dit, vous ne pouvez pas produire un travail d&eacute;riv&eacute;
d'un HOWTO en imposant des restrictions suppl&eacute;mentaires
&agrave; sa diffusion. Des d&eacute;rogations &agrave; cette
r&egrave;gle peuvent &ecirc;tre accord&eacute;es sous certaines
conditions, veuillez contacter le coordinateur des Linux HOWTO
&agrave; l'adresse indiqu&eacute;e ci-dessous. En
r&eacute;sum&eacute;, nous souhaitons promouvoir la diffusion de
cette information par autant de canaux que possible, tout en
conservant le copyright sur les HOWTOs, et nous voudrions
&ecirc;tre avertis de tout projet de redistribution de ces
documents. Si vous avez des questions, veuillez contacter Grek
Hankins, coordinateur des Linux HOWTOs, par courrier
&eacute;lectronique &agrave;
&lt;<code>greg@sunsie.unc.edu</code>&gt;.</p>
</body>
</html>