arp(7) | Miscellaneous Information Manual | arp(7) |
arp - módulo de kernel para ARP em Linux
Este módulo de protocolo de kernel implementa o Protocolo de Resolução de Endereços (Address Resolution Protocol) definido na RFC 826. Ele é usado para converter o endereço de hardware da camada 2 para endereços do protocolo IPv4 em redes diretamente conectadas. Normalmente o usuário não interage diretamente com este módulo, exceto para configurá-lo; em vez disso, ele provê um serviço para outros protocolos no kernel.
Um processo de usuário pode receber pacotes ARP através do uso de 'sockets' do tipo packet(7). Há também um mecanisco de gerenciamento do 'cache' ARP no espaço de usuário, através do uso de 'sockets' do tipo netlink(7). A tabela ARP também pode ser controlada via ioctl(2) ou qualquer 'socket' do tipo AF_INET.
The ARP module maintains a cache of mappings between hardware addresses and protocol addresses. The cache has a limited size so old and less frequently used entries are garbage-collected. Entries which are marked as permanent are never deleted by the garbage-collector. The cache can be directly manipulated by the use of ioctls and its behavior can be tuned by the /proc interfaces described below.
When there is no positive feedback for an existing mapping after some time (see the /proc interfaces below), a neighbor cache entry is considered stale. Positive feedback can be gotten from a higher layer; for example from a successful TCP ACK. Other protocols can signal forward progress using the MSG_CONFIRM flag to sendmsg(2). When there is no forward progress, ARP tries to reprobe. It first tries to ask a local arp daemon app_solicit times for an updated MAC address. If that fails and an old MAC address is known, a unicast probe is sent ucast_solicit times. If that fails too, it will broadcast a new ARP request to the network. Requests are sent only when there is data queued for sending.
O Linux acrescentará automaticamete uma entrada não permanente de arp proxy quando receber um pedido de um endereço para encaminhamento, e o arp proxy é habilitado na interface de recepção. Quando houver uma rota rejeitada para o destino, nenhuma entrada de arp proxy é acrescentada.
Three ioctls are available on all AF_INET sockets. They take a pointer to a struct arpreq as their argument.
struct arpreq { struct sockaddr arp_pa; /* protocol address */ struct sockaddr arp_ha; /* hardware address */ int arp_flags; /* flags */ struct sockaddr arp_netmask; /* netmask of protocol address */ char arp_dev[16]; };
SIOCSARP, SIOCDARP e SIOCGARP respectivamente seta, deleta e obtém um mapeamento ARP. Setar e deletar mapas ARP são operações privilegiadas e só podem ser realizadas por um processo com a capabilidade CAP_NET_ADMIN ou com um UID efetivo igual a 0.
arp_pa must be an AF_INET address and arp_ha must have the same type as the device which is specified in arp_dev. arp_dev is a zero-terminated string which names a device.
arp_flags | |
flag | significado |
ATF_COM | Busca completada |
ATF_PERM | Mantém entrada |
ATF_PUBL | Publica entrada |
ATF_USETRAILERS | Trailers requeridos |
ATF_NETMASK | Usa uma máscara de rede |
ATF_DONTPUB | Não responde |
Se o sinalizador ATF_NETMASK for selecionado, então arp_netmask deveria ser válido. O Linux 2.2 não suporta entradas entradas ARP de rede proxy, então deveria ser setado para 0xffffffff, ou 0 para remover uma entrada de proxy arp existente. ATF_USETRAILERS é obsoleto e não deveria ser usado.
ARP supports a range of /proc interfaces to configure parameters on a global or per-interface basis. The interfaces can be accessed by reading or writing the /proc/sys/net/ipv4/neigh/*/* files. Each interface in the system has its own directory in /proc/sys/net/ipv4/neigh/. The setting in the "default" directory is used for all newly created devices. Unless otherwise specified, time-related interfaces are specified in seconds.
O struct arpreq mudou no Linux 2.0 para incluir o membro arp_dev e os números de ioctl mudaram ao mesmo tempo. O suporte aos ioctls antigos foi tirado do Linux 2.2.
O suporte a entradas de arp proxy para redes (máscara de rede diferente de 0xffffffff) foi eliminado no Linux 2.2. Ele é substituído pela configuração automática pelo kernel do arp proxy para todos os hosts alcancáveis em outras interfaces (quando o repasse e o arp proxy estiverem habilitados para a interface).
As interfaces neigh/* não existiam antes do Linux 2.2.
Some timer settings are specified in jiffies, which is architecture- and kernel version-dependent; see time(7).
Não há maneira de sinalizar m retorno positivo a partir do espaço do usuário. Isto significa que protocolos orientados a conexão implementados no espaço de usuário gerarão um tráfego ARP excessivo, porque ndisc retestará regularmente o endereço MAC. O mesmo problema se aplica para a implementação do NFS no kernel.
This man page mashes together functionality that is IPv4-specific with functionality that is shared between IPv4 and IPv6.
capabilities(7), ip(7), arpd(8)
RFC 826 for a description of ARP. RFC 2461 for a description of IPv6 neighbor discovery and the base algorithms used. Linux 2.2+ IPv4 ARP uses the IPv6 algorithms when applicable.
A tradução para português brasileiro desta página man foi criada por Rubens de Jesus Nogueira <darkseid99@usa.net> e André Luiz Fassone <lonely_wolf@ig.com.br>
Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.
Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.
15 dezembro 2022 | Linux man-pages 6.03 |