arp(7) Miscellaneous Information Manual arp(7) NOM arp - Module ARP du noyau Linux DESCRIPTION Ce module du noyau implemente le protocole de resolution d'adresse ARP tel qu'il est decrit dans le document RFC 826. Il sert a la conversion entre les adresses materielles de niveau 2 et les adresses du protocole IPv4 sur les reseaux connectes en direct. L'utilisateur n'a normalement pas d'interactions avec ce module sauf pour le configurer. En fait, ce module fournit des services aux autres protocoles du noyau. Un processus utilisateur peut recevoir les paquets ARP en utilisant les sockets de type packet(7). Il y a aussi un mecanisme pour gerer le cache ARP dans l'espace utilisateur avec des sockets netlink(7). La table ARP peut etre controlee par le biais d'un ioctl(2) sur n'importe quel socket AF_INET. Le module ARP maintient un cache des correspondances entre les adresses materielles et les adresses logiques. Le cache a une taille limitee, ainsi les entrees anciennes et utilisees moins frequemment sont recuperees. Les entrees qui sont marquees comme permanentes ne sont jamais effacees. Le cache peut etre manipule directement par l'intermediaire des ioctls et son comportement peut etre ajuste a l'aide des interfaces /proc decrites plus bas. Lorsqu'il n'y a pas de retour positif pour une correspondance existante apres un certain temps (voir les interfaces /proc ci-dessous), l'entree est consideree comme gelee. Un retour positif peut etre obtenu d'un niveau superieur, par exemple un ACK TCP reussi. D'autres protocoles peuvent signaler des avancees en utilisant l'attribut MSG_CONFIRM de sendmsg(2). Pour envoyer a nouveau des donnees a cette cible, l'ARP essaye d'abord d'interroger un demon arp local au maximum app_solicit fois, afin d'obtenir une adresse MAC a jour. Si cela echoue, et si une ancienne adresse MAC est connue, une tentative unicast est envoyee ucast_solicit fois. Si cela echoue encore, il enverra une requete ARP en broadcast sur le reseau. Les requetes ne sont envoyees que s'il y a des donnees en attente d'emission. Linux ajoutera automatiquement une entree arp proxy non permanente lorsqu'il recoit une requete pour une adresse a laquelle il envoie des donnees, si le proxy arp est valide sur l'interface receptrice. Aucune entree n'est ajoutee s'il y a une route de rejet pour la cible. Ioctls Trois ioctls sont disponibles pour les sockets AF_INET. Elles prennent un pointeur sur une struct arpreq comme parametre. struct arpreq { struct sockaddr arp_pa; /* adresse protocole */ struct sockaddr arp_ha; /* adresse materielle */ int arp_flags; /* attributs */ struct sockaddr arp_netmask; /* masque reseau du protocole */ char arp_dev[16]; }; SIOCSARP, SIOCDARP et SIOCGARP ajoutent, suppriment et consultent respectivement une correspondance ARP. L'ajout et la suppression de correspondance ARP sont des operations privilegiees ne pouvant etre realisees que par un processus avec la capacite CAP_NET_ADMIN ou un UID effectif nul. arp_pa doit etre une adresse AF_INET et arp_ha doit etre du meme type que le peripherique indique dans arp_dev. arp_dev est une chaine terminee par un caractere nul, contenant le nom d'un peripherique. +----------------------------------------------+ | arp_flags | +----------------+-----------------------------+ |attribut | signification | +----------------+-----------------------------+ |ATF_COM | Recherche complete | +----------------+-----------------------------+ |ATF_PERM | Entree permanente | +----------------+-----------------------------+ |ATF_PUBL | Entree publiee | +----------------+-----------------------------+ |ATF_USETRAILERS | Demande de trailer | +----------------+-----------------------------+ |ATF_NETMASK | Utiliser un masque reseau | +----------------+-----------------------------+ |ATF_DONTPUB | Ne pas repondre | +----------------+-----------------------------+ Si l'attribut ATF_NETMASK est active, alors le membre arp_netmask doit etre valable. Linux 2.2 ne prend pas en charge les entrees ARP proxy reseau. Ainsi, il doit etre configure avec 0xFFFFFFFF ou 0 pour supprimer une entree arp proxy existante. ATF_USETRAILERS est obsolete et ne doit pas etre utilise. /proc interfaces ARP prend en charge une serie d'interfaces /proc pour configurer les parametres sur une base globale ou interface par interface. Les interfaces sont accessibles en lisant ou en ecrivant dans les fichiers /proc/sys/net/ipv4/neigh/*/*. Chaque interface dans le systeme a son propre repertoire dans /proc/sys/net/ipv4/neigh/. La configuration dans le repertoire << default >> sert pour tous les nouveaux peripheriques. Sauf mention contraire, les durees sont en secondes. anycast_delay (depuis Linux 2.2) Le nombre maximal de jiffies a attendre avant de repondre a un message de sollicitation IPv6 du voisinage. La prise en charge anycast n'est pas encore implementee. Par defaut, le delai est 1 seconde. app_solicit (depuis Linux 2.2) Le nombre maximal d'essais d'envoi au demon ARP de l'espace utilisateur par netlink avant de basculer en tentatives multicast (consultez mcast_solicit). La valeur par defaut est 0. base_reachable_time (depuis Linux 2.2) Une fois qu'un voisin a ete trouve, l'entree est consideree comme valable pendant, au moins, une duree aleatoire entre base_reachable_time/2 et 3*base_reachable_time/2. La validite d'une entree sera etendue si un retour positif est recu des protocoles de plus haut niveau. La valeur par defaut est de 30 secondes. Ce fichier est maintenant obsolete et remplace par base_reachable_time_ms. base_reachable_time_ms (depuis Linux 2.6.12) Comme pour base_reachable_time, mais le temps est mesure en millisecondes. La valeur par defaut est de 30 000 millisecondes. delay_first_probe_time (depuis Linux 2.2) Delai avant la premiere tentative multicast apres avoir decide qu'un voisin est gele. La valeur par defaut est de 5 secondes. gc_interval (depuis Linux 2.2) Frequence d'execution du ramasse-miettes des entrees de voisinage. La valeur par defaut est de 30 secondes. gc_stale_time (depuis Linux 2.2) Frequence de verification d'une entree de voisinage gelee. Lorsqu'une correspondance est consideree comme gelee, elle sera a nouveau redeterminee avant d'y envoyer des donnees. La valeur par defaut est de 60 secondes. gc_thresh1 (depuis Linux 2.2) Le nombre minimal d'entrees a conserver dans le cache ARP. Le recuperateur ne sera pas declenche s'il y a moins d'entrees que cette valeur. La valeur par defaut est 128. gc_thresh2 (depuis Linux 2.2) La limite maximale souple d'entrees a conserver dans le cache ARP. Le recuperateur autorisera un depassement de cette valeur pendant 5 secondes avant de lancer une veritable recuperation. La valeur par defaut est de 512 entrees. gc_thresh3 (depuis Linux 2.2) La limite maximale d'entrees a conserver dans le cache ARP. Le recuperateur sera immediatement declenche si cette valeur est depassee. La valeur par defaut est 1024. locktime (depuis Linux 2.2) Le nombre minimal de jiffies pendant lesquels une entree ARP est conservee dans le cache. Cela evite la degradation du cache s'il y a plusieurs correspondances possibles (generalement a cause d'une mauvaise configuration du reseau). La valeur par defaut est de 1 seconde. mcast_solicit (depuis Linux 2.2) Le nombre maximal de tentatives de resolution d'une adresse par le multicast et le broadcast avant de marquer l'entree comme inaccessible. La valeur par defaut est 3. proxy_delay (depuis Linux 2.2) Lorsqu'une requete arrive pour une adresse proxy-ARP, proxy_delay jiffies sont attendues avant de repondre. Cela permet d'eviter des saturations du reseau dans certains cas. La valeur par defaut est de 0,8 secondes. proxy_qlen (depuis Linux 2.2) Le nombre maximal de paquets qui peuvent etre gardes en file d'attente pour des adresses proxy-ARP. La valeur par defaut est 64. retrans_time (depuis Linux 2.2) Le nombre de jiffies a attendre avant de retransmettre une requete. La valeur par defaut est de 1 seconde. Ce fichier est maintenant obsolete et remplace par retrans_time_ms. retrans_time_ms (depuis Linux 2.6.12) Le nombre de millisecondes a attendre avant de retransmettre une requete. La valeur par defaut est de 1000 millisecondes. ucast_solicit (depuis Linux 2.2) Le nombre maximal de tentatives d'envoi unicast avant d'interroger le demon ARP (consultez app_solicit). La valeur par defaut est 3. unres_qlen (depuis Linux 2.2) Le nombre maximal de paquets qui peuvent etre gardes en file d'attente pour chaque adresse non resolue par les autres couches reseau. La valeur par defaut est 3. VERSIONS La structure arpreq a change dans Linux 2.0 pour inclure le membre arp_dev et les numeros d'ioctl ont change en meme temps. La prise en charge pour les anciens ioctl a ete abandonnee dans Linux 2.2. La prise en charge pour les entrees proxy ARP concernant des reseaux (netmask different de 0xFFFFFFF) a ete supprimee de Linux 2.2. Elle est remplacee par une configuration proxy ARP automatique dans le noyau pour tous les hotes accessibles sur les autres interfaces (en faisant du forwarding avec le proxy ARP active sur l'interface). Les interfaces neigh/* n'existaient pas avant Linux 2.2. BOGUES Certaines temporisations sont exprimees en jiffies, qui dependent de l'architecture et de la version du noyau ; consultez time(7). Il n'y a pas de moyen d'envoyer une reponse positive de l'espace utilisateur. Cela signifie que les protocoles orientes connexion implementes dans l'espace utilisateur engendreront un trafic ARP excessif, car ndisc reverifiera regulierement les adresses MAC. Le meme probleme se pose pour certains protocoles du noyau (par exemple NFS sur UDP). Cette page de manuel melange les fonctionnalites specifiques a IPv4 et les fonctionnalites communes a IPv4 et IPv6. VOIR AUSSI capabilities(7), ip(7), arpd(8) RFC 826 pour une description d'ARP. RFC 2461 pour une description de l'exploration du voisinage IPv6 et des algorithmes de base employes. L'ARP IPv4 de Linux 2.2 et version ulterieures utilise l'algorithme IPv6 lorsque c'est possible. TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 arp(7)