Pourquoi avez-vous besoin de la sollicitation de voisins IPv6 pour obtenir l'adresse MAC?

12

Je suis développeur de logiciels et je viens de recevoir un livre gratuit sur IPv6 aux Techdays, que je lis pour le plaisir. Ils l'ont donné parce que c'est un peu un vieux livre (W2008), donc peut-être que les choses sont différentes pour d'autres systèmes d'exploitation / plus récents, mais je ne comprends pas la nécessité pour le voisin Discovery d'obtenir l'adresse MAC.

Selon le livre, chaque nœud obtient automatiquement une adresse IP de liaison locale, qui est construite à partir de l'adresse MAC en insérant FF-FEentre le 3e et le 4e octets et en inversant le bit U / L, de sorte que l'IP de liaison locale pour un nœud avec une adresse MAC de 00-AA-00-3F-2A-1Cdevient FE80::2AA:FF:FE:3F:2A1C.

Pour déterminer l'adresse MAC de la couche liaison, un message de sollicitation de voisin est envoyé à l'adresse IP de liaison locale, qui répond par un message contenant son adresse MAC ... Mais l'expéditeur le sait déjà, car le MAC est codé dans la liaison - adresse IP locale. Cela ressemble donc à l'envoi d'une carte postale à quelqu'un qui demande son adresse.

Edwin
la source

Réponses:

20

Chaque nœud génère automatiquement une adresse de lien local, mais:

  • Cette adresse peut ne pas être générée avec le format EUI-64 spécifié dans RFC 2464 . Les adresses IPv6 peuvent également être des adresses générées par cryptographie ( RFC 3972 ), des adresses de confidentialité temporaires ( RFC 4941 ) ou, dans les systèmes d'exploitation modernes, des adresses de confidentialité stables ( RFC 7217 ).

  • Une adresse qui semble avoir un ID d'interface EUI-64 peut ne pas correspondre à l'adresse MAC indiquée en raison d'une configuration explicite par un administrateur.

Parce que vous ne pouvez pas simplement "reconvertir l'adresse" en une adresse MAC, vous devez envoyer une sollicitation de voisin pour déterminer l'adresse MAC.

Il y a d'autres raisons pour lesquelles les sollicitations de voisins sont également nécessaires. Certains d'entre eux sont:

  • Détection d'adresse en double ( RFC 4862 ). Il est possible qu'un autre hôte ait (à tort ou à raison) revendiqué une adresse qu'un hôte souhaite utiliser.
  • Détection d'inaccessibilité du voisin. Un manque de réponse à une sollicitation de voisin est un indicateur que le voisin est inaccessible.

Les livres sont tous beaux et bons, mais les livres très obsolètes peuvent ne pas être si utiles. Même IPv6 a subi des révisions importantes au cours des dix dernières années. La meilleure source de vérité est les RFC pertinents, à la fois les originaux et ceux qui sont marqués comme les ayant mis à jour ou obsolètes. Les RFC sont spécifiés de manière suffisamment détaillée pour permettre l'écriture d'implémentations conformes. Vous pouvez apprendre tous les détails de la découverte des voisins en lisant la RFC 4861 .

Michael Hampton
la source
Merci pour les corrections; si vous n'utilisez pas un format EUI-64, il est en effet nécessaire de découvrir le MAC autrement. Mais en fait, je ne comprends pas les problèmes de confidentialité avec le format EUI-64 pour les adresses de lien local, car l'adresse de lien local est limitée au lien et sur ce lien, l'adresse MAC devra être (et peut être ) connu de toute façon (par la sollicitation de voisins) pour la communication Ethernet, donc pour de mauvaises intentions, l'adresse MAC peut être enregistrée le long de l'adresse de confidentialité stable sur le lien local, n'est-ce pas?
Edwin
@Edwin, SLAAC était à l'origine utilisé pour tous les adressages IPv6, pas seulement pour les adresses Link-Local, de sorte qu'un hôte pouvait être suivi. SLAAC n'est qu'une méthode pour attribuer des adresses Link-Local. Ils pourraient également être attribués manuellement, et cela ne vous donnerait pas l'adresse MAC dans l'adresse Link-Local. Je connais certaines personnes qui souhaitent attribuer manuellement toutes les adresses, y compris Link Local. Cela semble beaucoup de travail pour peu ou pas de gain, mais cela les rend heureux, et tous les IID de toutes les adresses sur une interface sont les mêmes, dans un ordre qu'ils préfèrent.
Ron Maupin
@Edwin Et, chaque hôte conservera en effet un cache de destination (voir RFC 4861), qui est analogue à la table IPv4 ARP que les hôtes gèrent.
Michael Hampton
CGA aurait pu être plus simple et plus sûr si les adresses avaient deux fois la taille. La moitié de la spécification est une solution de contournement pour avoir seulement 64 bits dans l'identifiant d'interface où ils auraient idéalement voulu environ 162 bits. C'est une chose à retenir chaque fois que l'idée que 128 bits est trop surgit.
kasperd
Que considérez-vous comme non standard sur ce document Microsoft? Pour moi, il semble qu'il résume simplement les RFC que vous avez liés.
kasperd
9

Donc, soit vous vous méprenez, soit vous avez été mal informé sur certaines choses.

En utilisant SLAAC, un hôte peut construire son propre adressage IPv6 en utilisant son adresse MAC, mais beaucoup de gens pensaient que c'était dangereux, donnant trop d'informations et permettant de suivre un hôte particulier. Sur cette base, des extensions de confidentialité et un adressage aléatoire ont été développés, et ils sont utilisés par les systèmes d'exploitation pour assurer la confidentialité / sécurité. Cela signifie qu'un hôte peut créer son propre adressage, non basé sur son adresse MAC.

Lorsqu'un hôte doit découvrir l'adresse MAC d'un voisin dans IPv4, il utilise ARP. ARP diffuse une demande, mais IPv6 n'a pas diffusé. Au lieu de cela, chaque hôte doit rejoindre un groupe de multidiffusion de nœud sollicité. Ce groupe est basé sur les 24 derniers bits de son adresse IPv6. Étant donné que les interfaces IPv6 peuvent avoir un nombre quelconque d'adresses IPv6, un hôte peut rejoindre plusieurs groupes de multidiffusion de nœuds sollicités. Un hôte IPv6 recherchant l'adresse MAC d'un autre hôte enverra une demande de multidiffusion au groupe de multidiffusion du nœud sollicité de l'adresse IPv6 cible.

Cela offre un avantage sur IPv4 ARP. Étant donné qu'ARP utilise une diffusion pour les demandes, il interrompt tous les hôtes du domaine de diffusion de couche 2. Étant donné que le groupe de multidiffusion du nœud sollicité utilise les 24 derniers bits de l'adresse IPv6 cible, la demande de multidiffusion ND n'interrompra probablement que l'hôte cible, ou éventuellement un ou deux autres hôtes sur le domaine de diffusion de couche 2.

Ron Maupin
la source