4. Reconnaître le voisinage réseau

Couches liaison de données et réseau

Dans un réseau IPv4, le protocole ARP ou Address Resolution Protocol a pour but de faire la correspondance entre une adresse MAC inconnue (celle de l'hôte destinataire) et une adresse IPv4 connue (encore celle de l'hôte destinataire). Ce protocole fait le «lien» entre les mécanismes d'adressage de la couche réseau et de la couche liaison de données.

Dans un réseau IPv6, le protocole NDP ou Neighbor Discovery Protocol se substitue au protocole ARP pour faire la correspondance entre les adresses MAC et les adresses IPv6 de lien local appartenant au réseau fe80/10.

Si le routage assuré au niveau réseau permet d'acheminer le trafic utilisateur d'un réseau à l'autre, il ne permet pas de joindre directement un hôte dans un réseau local de diffusion comme Ethernet. Au niveau liaison de données les adresses MAC servent à repérer un hôte unique dans le réseau local de diffusion. Il faut donc établir une correspondance entre des adresses dont la portée ne dépasse pas le réseau local et d'autres adresses dont la portée recouvre de multiples réseaux.

Dans cette section, le principal outil utilisé est la commande ip du paquet iproute2.

Comment visualiser la table des voisins ?

Le sous-système réseau du noyau Linux maintient une table «table des hôtes voisins» contenant les correspondances avec les adresses IPv4 et IPv6.

La commande ip nei ls fait apparaître toutes les adresses de voisins connus dans un affichage commun. Ces résultats sont obtenus via ARP pour les adresses IPv4 et NDP pour les adresses IPv6.

$ ip nei ls dev eth0
192.0.2.11 dev eth02 lladdr ba:f1:b6:e4:a0:bd3 STALE4
fe80::b8f1:b6ff:fee4:a0bd5 dev eth0 lladdr ba:f1:b6:e4:a0:bd router REACHABLE
2001:db8:8083:c41e::16 dev eth0 lladdr ba:f1:b6:e4:a0:bd router STALE

1

L'hôte avec l'adresse IPv4 192.0.2.1 est un voisin appartenant au même domaine de diffusion.

2

L'interface Ethernet eth0 désigne le domaine de diffusion. Les voisins joignables via cette interface appartiennent tous au même domaine de diffusion.

3

Cette adresse MAC a été obtenue grâce au protocole ARP. Dès qu'un paquet est émis à destination de l'hôte 192.0.2.1 ou à destination d'un autre réseau si ce même hôte est un routeur, la trame sera composée avec l'adresse MAC destination ba:f1:b6:e4:a0:bd.

4

Les indicateurs d'état informent sur la validité de la correspondance entre les adresses de couche liaison de données et les adresses de couche réseau.

5

La correspondance avec l'adresse IPv6 de lien local fe80::b8f1:b6ff:fee4:a0bd a été établie grâce au protocole NDP. Les adresses IPv6 de lien local sont composées automatiquement à partir du préfixe fe80::/10 et de l'adresse MAC au format EUI-64. Voir Types d'adresses MAC.

6

Cette ligne correspond au même hôte voisin et donne son adresse IPv6 publique ou globale.

Tableau 2. Indicateurs d'état de la table des hôtes voisins

Indicateur Description
INCOMPLETE La résolution d'adresse de l'hôte voisin est en cours
REACHABLE La correspondance entre les adresses IP et MAC a bien été établie et l'hôte voisin est apparemment joignable
STALE La correspondance entre les adresses IP et MAC a bien été établie mais l'hôte voisin n'est probablement plus joignable et une vérification sera lancée dès la première émission.
DELAY Un paquet a été émis à destination d'un voisin dans l'état STALE et une confirmation de correspondance d'adresses est en attente
PROBE La temporisation de l'état DELAY est expirée et la correspondance d'adresses n'a pas été confirmée ; une nouvelle résolution d'adresse a été initiée
FAILED La résolution d'adresse a échoué
NOARP Le voisin est validé ; aucune vérification ne doit être faite.
PERMANENT Identique à NOARP ; seul le super utilisateur a la possibilité de supprimer l'entrée de la table

Les voisins IPv6 peuvent apparaître avec un indicateur router supplémentaire ; ce qui signifie que ce voisin se présente comme un routeur IPv6.

Comment effacer tout ou partie de la table des voisins ?

Pour tester le fonctionnement du mécanisme de résolution d'adresses, il peut être utile d'effacer une ou plusieurs entrées dans le but de provoquer une nouvelle résolution lors des prochains échanges réseau.

Suppression d'une entrée particulière
$ sudo ip nei del 192.168.1.2 dev eth0
Suppression de toutes les entrées relatives à l'interface eth0
$ sudo ip neighbor flush dev eth0

Pour découvrir les autres manipulations possibles, il est conseillé de consulter les pages de manuels : $ man ip-neighbour.