Man page - arp(7)

Packages contains this manual

Available languages:

en fr pt_BR es pl ja ru zh_TW zh_CN

Manual

arp

NOM
DESCRIPTION
Ioctls
/proc interfaces
VERSIONS
BOGUES
VOIR AUSSI
TRADUCTION

NOM

arp - Module ARP du noyau Linux

DESCRIPTION

Ce module du noyau implĂ©mente le protocole de rĂ©solution d’adresse ARP tel qu’il est dĂ©crit dans le document RFC 826. Il sert Ă  la conversion entre les adresses matĂ©rielles de niveau 2 et les adresses du protocole IPv4 sur les rĂ©seaux connectĂ©s 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 mĂ©canisme pour gĂ©rer le cache ARP dans l’espace utilisateur avec des sockets netlink (7). La table ARP peut ĂȘtre contrĂŽlĂ©e 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 matĂ©rielles et les adresses logiques. Le cache a une taille limitĂ©e, ainsi les entrĂ©es anciennes et utilisĂ©es moins frĂ©quemment sont rĂ©cupĂ©rĂ©es. Les entrĂ©es qui sont marquĂ©es comme permanentes ne sont jamais effacĂ©es. Le cache peut ĂȘtre manipulĂ© directement par l’intermĂ©diaire des ioctl s et son comportement peut ĂȘtre ajustĂ© Ă  l’aide des interfaces /proc dĂ©crites plus bas.

Lorsqu’il n’y a pas de retour positif pour une correspondance existante aprĂšs un certain temps (voir les interfaces /proc ci-dessous), l’entrĂ©e est considĂ©rĂ©e comme gelĂ©e. Un retour positif peut ĂȘtre obtenu d’un niveau supĂ©rieur, par exemple un ACK TCP rĂ©ussi. D’autres protocoles peuvent signaler des avancĂ©es en utilisant l’attribut MSG_CONFIRM de sendmsg (2). Pour envoyer Ă  nouveau des donnĂ©es Ă  cette cible, l’ARP essaye d’abord d’interroger un dĂ©mon arp local au maximum app_solicit fois, afin d’obtenir une adresse MAC Ă  jour. Si cela Ă©choue, et si une ancienne adresse MAC est connue, une tentative unicast est envoyĂ©e ucast_solicit fois. Si cela Ă©choue encore, il enverra une requĂȘte ARP en broadcast sur le rĂ©seau. Les requĂȘtes ne sont envoyĂ©es que s’il y a des donnĂ©es en attente d’émission.

Linux ajoutera automatiquement une entrĂ©e arp proxy non permanente lorsqu’il reçoit une requĂȘte pour une adresse Ă  laquelle il envoie des donnĂ©es, si le proxy arp est validĂ© sur l’interface rĂ©ceptrice. Aucune entrĂ©e n’est ajoutĂ©e 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 paramĂštre.

struct arpreq {
struct sockaddr arp_pa; /* adresse protocole */
struct sockaddr arp_ha; /* adresse matérielle */
int arp_flags; /* attributs */
struct sockaddr arp_netmask; /* masque réseau 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 opĂ©rations privilĂ©giĂ©es ne pouvant ĂȘtre rĂ©alisĂ©es que par un processus avec la capacitĂ© CAP_NET_ADMIN ou un UID effectif nul.

arp_pa doit ĂȘtre une adresse AF_INET et arp_ha doit ĂȘtre du mĂȘme type que le pĂ©riphĂ©rique indiquĂ© dans arp_dev . arp_dev est une chaĂźne terminĂ©e par un caractĂšre nul, contenant le nom d’un pĂ©riphĂ©rique.

Image grohtml-3847013-1.png

Si l’attribut ATF_NETMASK est activĂ©, alors le membre arp_netmask doit ĂȘtre valable. Linux 2.2 ne prend pas en charge les entrĂ©es ARP proxy rĂ©seau. Ainsi, il doit ĂȘtre configurĂ© avec 0xFFFFFFFF ou 0 pour supprimer une entrĂ©e arp proxy existante. ATF_USETRAILERS est obsolĂšte et ne doit pas ĂȘtre utilisĂ©.

/proc interfaces

ARP prend en charge une sĂ©rie d’interfaces /proc pour configurer les paramĂštres sur une base globale ou interface par interface. Les interfaces sont accessibles en lisant ou en Ă©crivant dans les fichiers /proc/sys/net/ipv4/neigh/*/* . Chaque interface dans le systĂšme a son propre rĂ©pertoire dans /proc/sys/net/ipv4/neigh/ . La configuration dans le rĂ©pertoire « default » sert pour tous les nouveaux pĂ©riphĂ©riques. Sauf mention contraire, les durĂ©es sont en secondes.
anycast_delay
(depuis Linux 2.2)

Le nombre maximal de jiffies Ă  attendre avant de rĂ©pondre Ă  un message de sollicitation IPv6 du voisinage. La prise en charge anycast n’est pas encore implĂ©mentĂ©e. Par dĂ©faut, le dĂ©lai est 1 seconde.

app_solicit (depuis Linux 2.2)

Le nombre maximal d’essais d’envoi au dĂ©mon ARP de l’espace utilisateur par netlink avant de basculer en tentatives multicast (consultez mcast_solicit ). La valeur par dĂ©faut est 0.

base_reachable_time (depuis Linux 2.2)

Une fois qu’un voisin a Ă©tĂ© trouvĂ©, l’entrĂ©e est considĂ©rĂ©e comme valable pendant, au moins, une durĂ©e alĂ©atoire entre base_reachable_time /2 et 3* base_reachable_time /2. La validitĂ© d’une entrĂ©e sera Ă©tendue si un retour positif est reçu des protocoles de plus haut niveau. La valeur par dĂ©faut est de 30 secondes. Ce fichier est maintenant obsolĂšte et remplacĂ© par base_reachable_time_ms .

base_reachable_time_ms (depuis Linux 2.6.12)

Comme pour base_reachable_time , mais le temps est mesuré en millisecondes. La valeur par défaut est de 30 000 millisecondes.

delay_first_probe_time (depuis Linux 2.2)

DĂ©lai avant la premiĂšre tentative multicast aprĂšs avoir dĂ©cidĂ© qu’un voisin est gelĂ©. La valeur par dĂ©faut est de 5 secondes.

gc_interval (depuis Linux 2.2)

FrĂ©quence d’exĂ©cution du ramasse-miettes des entrĂ©es de voisinage. La valeur par dĂ©faut est de 30 secondes.

gc_stale_time (depuis Linux 2.2)

FrĂ©quence de vĂ©rification d’une entrĂ©e de voisinage gelĂ©e. Lorsqu’une correspondance est considĂ©rĂ©e comme gelĂ©e, elle sera Ă  nouveau redĂ©terminĂ©e avant d’y envoyer des donnĂ©es. La valeur par dĂ©faut est de 60 secondes.

gc_thresh1 (depuis Linux 2.2)

Le nombre minimal d’entrĂ©es Ă  conserver dans le cache ARP. Le rĂ©cupĂ©rateur ne sera pas dĂ©clenchĂ© s’il y a moins d’entrĂ©es que cette valeur. La valeur par dĂ©faut est 128.

gc_thresh2 (depuis Linux 2.2)

La limite maximale souple d’entrĂ©es Ă  conserver dans le cache ARP. Le rĂ©cupĂ©rateur autorisera un dĂ©passement de cette valeur pendant 5 secondes avant de lancer une vĂ©ritable rĂ©cupĂ©ration. La valeur par dĂ©faut est de 512 entrĂ©es.

gc_thresh3 (depuis Linux 2.2)

La limite maximale d’entrĂ©es Ă  conserver dans le cache ARP. Le rĂ©cupĂ©rateur sera immĂ©diatement dĂ©clenchĂ© si cette valeur est dĂ©passĂ©e. La valeur par dĂ©faut est 1024.

locktime (depuis Linux 2.2)

Le nombre minimal de jiffies pendant lesquels une entrĂ©e ARP est conservĂ©e dans le cache. Cela Ă©vite la dĂ©gradation du cache s’il y a plusieurs correspondances possibles (gĂ©nĂ©ralement Ă  cause d’une mauvaise configuration du rĂ©seau). La valeur par dĂ©faut est de 1 seconde.

mcast_solicit (depuis Linux 2.2)

Le nombre maximal de tentatives de rĂ©solution d’une adresse par le multicast et le broadcast avant de marquer l’entrĂ©e comme inaccessible. La valeur par dĂ©faut est 3.

proxy_delay (depuis Linux 2.2)

Lorsqu’une requĂȘte arrive pour une adresse proxy-ARP, proxy_delay jiffies sont attendues avant de rĂ©pondre. Cela permet d’éviter des saturations du rĂ©seau dans certains cas. La valeur par dĂ©faut est de 0,8 secondes.

proxy_qlen (depuis Linux 2.2)

Le nombre maximal de paquets qui peuvent ĂȘtre gardĂ©s en file d’attente pour des adresses proxy-ARP. La valeur par dĂ©faut est 64.

retrans_time (depuis Linux 2.2)

Le nombre de jiffies Ă  attendre avant de retransmettre une requĂȘte. La valeur par dĂ©faut est de 1 seconde. Ce fichier est maintenant obsolĂšte et remplacĂ© par retrans_time_ms .

retrans_time_ms (depuis Linux 2.6.12)

Le nombre de millisecondes Ă  attendre avant de retransmettre une requĂȘte. La valeur par dĂ©faut est de 1000 millisecondes.

ucast_solicit (depuis Linux 2.2)

Le nombre maximal de tentatives d’envoi unicast avant d’interroger le dĂ©mon ARP (consultez app_solicit ). La valeur par dĂ©faut est 3.

unres_qlen (depuis Linux 2.2)

Le nombre maximal de paquets qui peuvent ĂȘtre gardĂ©s en file d’attente pour chaque adresse non rĂ©solue par les autres couches rĂ©seau. La valeur par dĂ©faut est 3.

VERSIONS

La structure arpreq a changĂ© dans Linux 2.0 pour inclure le membre arp_dev et les numĂ©ros d’ioctl ont changĂ© en mĂȘme temps. La prise en charge pour les anciens ioctl a Ă©tĂ© abandonnĂ©e dans Linux 2.2.

La prise en charge pour les entrĂ©es proxy ARP concernant des rĂ©seaux (netmask diffĂ©rent de 0xFFFFFFF) a Ă©tĂ© supprimĂ©e de Linux 2.2. Elle est remplacĂ©e par une configuration proxy ARP automatique dans le noyau pour tous les hĂŽtes accessibles sur les autres interfaces (en faisant du forwarding avec le proxy ARP activĂ© sur l’interface).

Les interfaces neigh/* n’existaient pas avant Linux 2.2.

BOGUES

Certaines temporisations sont exprimĂ©es en jiffies, qui dĂ©pendent de l’architecture et de la version du noyau ; consultez time (7).

Il n’y a pas de moyen d’envoyer une rĂ©ponse positive de l’espace utilisateur. Cela signifie que les protocoles orientĂ©s connexion implĂ©mentĂ©s dans l’espace utilisateur engendreront un trafic ARP excessif, car ndisc revĂ©rifiera rĂ©guliĂšrement les adresses MAC. Le mĂȘme problĂšme se pose pour certains protocoles du noyau (par exemple NFS sur UDP).

Cette page de manuel mélange les fonctionnalités spécifiques à IPv4 et les fonctionnalités communes à 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 employĂ©s. L’ARP IPv4 de Linux 2.2 et version ultĂ©rieures utilise l’algorithme IPv6 lorsque c’est possible.

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .