On Thu, 29 Nov 2001, Alexandre Galletet wrote:

> De plus mes pi�tres connaisances des r�seaux ne me permettent pas
> de savoir pourquoi "c'est encore pire". Si tu pouvais d�tailler leg�rement
> je t'en saurais reconnaissant.

L'acheminement de paquets IP sur un r�seau Ethernet fonctionne comme suit
(en simplifi�): 

   si l'adresse destination (p.ex. 192.168.1.10) est comprise dans le
   masque de sous-r�seau de l'interface Ethernet consid�r� (p.ex.
   192.168.1.0/24, soit 192.168.1.0-192.168.1.255), le paquet est
   envoy� `sur le r�seau Ethernet'

   sinon on utilise p.ex. la route par d�faut: on envoie le paquet via
   une machine du r�seau Ethernet (un routeur), donc reprendre au d�but
   mais avec l'adresse IP du routeur.

Maintenant, comment envoyer un paquet sur le r�seau Ethernet ?  On
pourrait l'envoyer en broadcast Ethernet (� toutes les machines du r�seau
Ethernet). Cela causerait une perte de performance pour toutes les
machines qui devraient prendre le paquet, voir qu'il n'est pas pour elles,
et le jeter (voire le re-router, voire g�n�rer un paquet ICMP de
redirection).

Le mieux est de l'envoyer � la bonne carte, via son adresse Ethernet (ou
adresse MAC). Cette adresse est fix�e, par le fabricant, et est unique
pour toutes les cartes du monde (en g�n�ral elle comporte 6 octets,
group�s en 6 blocs de 2 caract�res hexad�cimaux, soit p.ex.
00:C0:0C:03:6F:50, et le d�but indique en g�n�ral le fabriquant, le reste
est un num�ro de s�rie p.ex.). Parfois on peut la modifier par logiciel,
mais cela est une autre histoire.

Mais comment savoir sur quel adresse Ethernet doit �tre achemin� un paquet
portant une adresse IP donn�e ? On consulte la table arp (cf /usr/sbin/arp
-a). Si cette table ne contient pas l'entr�e d�sir�e, on:

   �met un paquet Ethernet sur l'adresse broadcast Ethernet `where-is'
   avec en question l'adresse IP demand�e

   si une machine se reconna�t elle r�pond en broadcast avec `is-at' et
   comme le paquet contient en adresse source l'adresse MAC Ethernet le
   tour est jou�, la table ARP de la machine initiante (voire de toutes
   les machines --- mais je ne crois pas que cela se fasse comme �a)
   peut �tre renseign�e.

Au bout d'un certain temps, les entr�es non manuelles ARP disparaissent: 
cela signifie que si l'on change la carte Ethernet d'un serveur NFS, il
faut attendre un certain temps pour que cela remarche depuis les clients
(Linux: tr�s agressif, peut-�tre 20 secondes; Solaris: 5 minutes,
confgiurable). Ajoutons qu'une machine ne devrait jamais utiliser *sa*
table ARP pour r�pondre � des requ�tes ne la concernant pas.

Revenons � nos moutons: la configuration d'adresse IP d'un bo�tier
d'impression.

   M�thode 1 (correcte)
      Configuration mat�rielle de l'adresse IP (EPROM, panneau frontal)

   M�thode 2 (correcte)
      Demande en broadcast via DHCP ou BOOTP d'une adresse � un serveur
      DHCP/BOOTP (p.ex. Linux).

   M�thode 3 (incorrecte et farfelue)
      Allocation al�atoire d'une adresse dans le m�me domaine qu'un
      paquet vu pr�c�demment, et tentative de ARP `where-is' pour voir
      si personne ne l'a.

         M�thode incorrecte car contient une fen�tre de vuln�rabilit�.
         En plus, le netmask sera probablement faux.

         M�thode apparemment utilis�e par certaines versions de Windows 98
         lorsqu'un serveur DHCP ne r�pond pas (!).

   M�thode 4 (correcte, mais magouille)
      Le premier paquet IP re�u sur une adresse non broadcast est utilis�
      pour d�terminer l'adresse IP (avec l'adresse destination).

         Principe: forcer l'adresse (ARP, IP) dans le cache ARP d'une des
                   machines Linux. Envoyer un paquet IP � l'adresse IP
                   (un ping suffit). Ensuite l'appareil r�pondra aux
                   ARP `where-is' des autres.

      N'est pas une m�thode compl�tement stupide, mais bon. Je devine
      que c'est ce que le bo�tier utilise.

   M�thode 5 (incorrecte, violation de protocole)
      La premi�re r�ponse where-is re�ue dont l'adresse Ethernet est la
      m�me que celle du bo�tier informe de l'adresse IP � utiliser.

         N�cessite l'envoi d'un paquet ARP r�ponse sans question,
         violation du protocole qui n�cessite probablement un acc�s
         raw socket sur le serveur.

Voil�. Il faut maintenant tcpdump-er pour voir ce qui se passe r�ellement :)

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se d�sabonner aussi.

Répondre à