Page suivantePage pr�c�denteTable des mati�res

5. Installation du mandataire ARP de sous-r�seau

J'ai install� le mandataire ARP du sous-r�seau sur un noyau Linux version 2.0.30, mais il parait que le code fonctionne avec une version 1.2.x.

La premi�re chose � noter est que le code ARP est en deux parties : une partie dans le noyau, qui envoie et re�oit les requ�tes et les r�ponses ARP et met � jour le cache ARP, etc. ; l'autre partie est constitu�e de la commande arp(8) qui permet au super-utilisateur de mettre � jour manuellement le cache ARP, et � tout le monde de le consulter.

Le premier probl�me que j'ai eu �tait que la commande arp(8) de ma distribution Slackware 3.1 �tait antique (dat�e de 1994 !) et ne communiquait pas correctement du tout avec le code ARP du noyau (``arp -a'' donnait un r�sultat �trange).

La commande arp(8) de ``net-tools-1.33a'', qui est disponible sur un grand nombre de sites, en particulier (d'apr�s le README qui lui est joint) ftp.linux.org.uk:/pub/linux/Networking/PROGRAMS/NetTools/, fonctionne correctement, et contient de nouvelles pages de manuel arp(8) qui expliquent les choses bien mieux que les anciennes.

Une fois muni d'une commande arp(8) d�cente, il ne me restait plus qu'� modifier le seul fichier /etc/rc.d/rc.inet1 (pour la Slackware - c'est probablement diff�rent pour d'autres distributions). Tout d'abord, il nous faut changer l'adresse de diffusion, le num�ro de r�seau, et le masque de eth0 :

NETMASK=255.255.255.240 # pour la partie h�te sur 4 bits
NETWORK=x.y.z.64        # notre nouveau r�seau
 #     (remplacez x.y.z par votre r�seau)
BROADCAST=x.y.z.79      # pour moi.

Il faut ensuite ajouter une ligne pour configurer la seconde interface Ethernet (apr�s les chargements de modules qui sont �ventuellement n�cessaires pour lancer le pilote) :

/sbin/ifconfig eth1 nom_sur_le_r�seau_1broadcast x.y.z.255 netmask 255.255.255.0

Puis nous ajoutons une route pour la nouvelle interface :

/sbin/route add -netx.y.z.0 netmask 255.255.255.0

Et vous aurez sans doute besoin de changer la passerelle par d�faut pour utiliser celle du r�seau 1.

Arriv�s � ce point, nous pouvons ajouter la ligne pour le mandatement ARP :

/sbin/arp -i eth1 -Ds ${NETWORK} eth1 netmask ${NETMASK} pub

Ceci demande � ARP d'ajouter au cache une entr�e statique (``s'') pour le r�seau ${NETWORK}. Le ``-D'' dit d'utiliser la m�me adresse mat�rielle que l'interface eth1 (la seconde interface), ce qui nous �vite d'avoir � chercher l'adresse mat�rielle de eth1 et de la coder directement dans la commande.

L'option netmask indique qu'il s'agit d'une entr�e ARP concernant un sous-r�seau, qui est constitu� des num�ros IP tels que

num�ro_ip & ${NETMASK} == ${NETWORK} & ${NETMASK}
L'option pub demande de publier cette entr�e ARP, c'est-�-dire qu'il s'agit d'mandatement, et qu'il faudra r�pondre au nom de ces num�ros IP. L'option ``-i eth1'' pr�cise qu'il ne faudra r�pondre qu'aux requ�tes ARP arrivant par l'interface eth1.

Normalement, � ce point, si la machine est red�marr�e, tous les machines du r�seau 0 sembleront �tre sur le r�seau 1. Vous pouvez v�rifier que l'entr�e de mandatement ARP de sous-r�seau a �t� prise en compte correctement sur la machine A. Sur ma machine (j'ai chang� les noms pour prot�ger les innocents) c'est :

#/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

Vous pouvez aussi regarder le fichier /proc/net/arp, par exemple avec cat(1).

La derni�re ligne est l'entr�e de mandatement pour le sous-r�seau. Les indicateurs CMP r�v�lent qu'il s'agit d'une donn�e statique (entr�e Manuellement) qui doit �tre Publi�e. Elle ne servira qu'� r�pondre qu'aux requ�tes ARP qui arrivent par eth1 et pour lesquelles le num�ro IP, une fois masqu�, correspond au num�ro de r�seau (�galement masqu�). Remarquez que la commande arp(8) a trouv� automatiquement l'adresse mat�rielle de eth1 et l'a employ�e comme adresse � utiliser (� cause de l'option ``-Ds'').

De la m�me fa�on il est probablement prudent de v�rifier que la table de routage a �t� remplie correctement. Voici la mienne (ici aussi, les noms ont �t� chang�s pour prot�ger les innocents) :

#/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

Vous pouvez aussi regarder le contenu du fichier /proc/net/route (par exemple avec cat(1)).

Remarquez que la premi�re entr�e concerne un sous-ensemble de la seconde, mais la table de routage les classe dans l'ordre des masques, et donc l'entr�e eth0 sera test�e avant celle de eth1.


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:38