Tutoriel Linux

Vizinho IP no Linux: encontrando um vizinho de rede sem usar ARP

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Uma máquina na rede responde de forma intermitente, um gateway permanece associado ao endereço MAC errado ou uma entrada é exibida.

A ordem neve ip substitui vantajosamente os controles antigos. arp-a E arp-nAbrange vizinhos IPv4 aprendidos com ARP e vizinhos IPv6 descobertos com NDP. Mais importante ainda, permite ler o estado deles, excluir uma única entrada e verificar sua reconstrução sem limpar todo o cache.

Tux inspeciona os vizinhos de uma rede local com links ativos, antigos e inacessíveis.
O comando `ip neigh` exibe os vizinhos IPv4 e IPv6 conhecidos do kernel e o status de resolução de cada um.

Encontre a interface usada para contatar o vizinho.

Não escolha eth0 Por hábito. Exiba as interfaces e, em seguida, pergunte ao kernel qual rota ele usaria para alcançar o endereço solicitado:

link breve de IP
endereço IP breve
ip route get 192.168.1.50

indica em particular a interface após desenvolvedor e o endereço local depois fonteSe o destino envolver um gateway, o vizinho de nível 2 será esse gateway, e não necessariamente o endereço final. O guia sobre Roteamento IP no Linux explica essa diferença.

Verifique também o estado do link antes de culpar o cache:

link ip mostrar dispositivo enp1s0
ip addr show dev enp1s0

Uma interface ABAIXO Ou, sem uma portadora, não encontrará nenhum vizinho. O artigo sobre Endereço IP e estados da rede ajuda a distinguir ACIMA, Abaixar_para_cima e um endereço verdadeiramente utilizável.

Liste os vizinhos IPv4 e IPv6 com o comando `ip neigh`.

Primeiro, exiba a tabela completa e, em seguida, limite a exibição à interface relevante:

Show de IP Neigh
ip neigh show dev enp1s0

Para separar os dois tipos de endereços:

IP -4 Vizinho mostrar dispositivo enp1s0
IP -6 Vizinho mostrar dispositivo enp1s0

Uma linha IPv4 pode ter a seguinte aparência:

192.168.1.50 dev enp1s0 lladdr 52:54:00:12:34:56 OBSOLETO

O endereço depois lladdr é o endereço MAC conhecido por este vizinho. O estado final descreve se a resolução foi bem-sucedida ou falhou. Para direcionar um único endereço sem examinar a tabela inteira:

ip neigh show para 192.168.1.50 dev enp1s0
ip neigh get 192.168.1.50 dev enp1s0

Os Estados impedem a eliminação de um registro de trabalho:

  • ALCANCEVEL O vizinho foi confirmado recentemente;
  • ENVELHECIDO A entrada é conhecida, mas sua acessibilidade não foi confirmada recentemente. Isso não é um erro;
  • Ou SONDA O kernel verifica ativamente se o vizinho ainda está respondendo;
  • INCOMPLETO
  • FRACASSADO As tentativas de resolver o problema falharam;
  • PERMANENTE A entrada foi adicionada estaticamente e não deve expirar como uma entrada dinâmica.

Você pode filtrar por um estado específico:

ip neigh show dev enp1s0 nud reachable
ip neigh show dev enp1s0 nud stale
ip neigh show dev enp1s0 nud falhou

Uma entrada ENVELHECIDO pode se tornar novamente ALCANCEVEL Assim que o tráfego confirmar o vizinho. Por outro lado, uma linha FRACASSADO A repetição do código de erro indica provavelmente uma interface defeituosa, um host ausente, uma VLAN incorreta, um problema de Wi-Fi, um endereço duplicado ou uma falha na conexão física.

Inicie uma discussão e observe a resolução.

Gere tráfego simples para o endereço e, em seguida, releia imediatamente a entrada:

ping -c 3 192.168.1.50
ip neigh show para 192.168.1.50 dev enp1s0

Para acompanhar as alterações durante o teste:

watch -n 1 'ip neigh show dev enp1s0'

Se a entrada permanecer INCOMPLETO ou vá para FRACASSADOObserve as trocas de ARP e NDP na interface correta:

sudo tcpdump -ni enp1s0 'arp ou icmp6'

Uma solicitação ARP não respondida indica que o problema está antes do endereço IP: o dispositivo está offline, a porta do switch está incorreta, a VLAN está errada, o cabo, o Wi-Fi está com defeito ou o endereço não existe. Se nenhuma solicitação for enviada, redirecione e reconecte a interface. Consulte o guia sobre… tcpdump no Linux Mostra como limitar a captura sem gravar todo o tráfego.

Na Ethernet, você também pode controlar a velocidade, o modo duplex e a portadora com ettoolExcluir uma entrada vizinha não corrigirá um link que esteja apresentando problemas de negociação ou que esteja sendo desconectado.

Exclua uma única entrada e, em seguida, verifique sua reconstrução.

Se o endereço MAC for claramente antigo ou incorreto, exclua apenas a entrada correspondente. Em um servidor remoto, mantenha uma segunda sessão SSH e um console de backup, especialmente se você estiver interagindo com o servidor vizinho que atua como gateway.

sudo ip neigh del 192.168.1.50 dev enp1s0
ping -c 3 192.168.1.50
ip neigh show para 192.168.1.50 dev enp1s0

Para um endereço IPv6 local de enlace, a interface é essencial:

sudo ip -6 vizinho del fe80::5054:ff:fe12:3456 dev enp1s0
ping -6 -c 3 fe80::5054:ff:fe12:3456%enp1s0
IP -6 Vizinho mostrar dispositivo enp1s0

O kernel deve recriar a entrada na próxima troca de informações. Compare o endereço MAC e o estado. Se o endereço retornado estiver incorreto, procure por um endereço IP duplicado, uma configuração estática, uma máquina virtual clonada ou um dispositivo respondendo em vez do vizinho esperado. Repita o processo. vizinho ip del Não corrigirá essa causa.

Limpe o cache somente quando o perímetro estiver sob controle.

Comece exibindo o que você vai remover. Para limpar apenas as entradas que já falharam em uma interface:

ip neigh show dev enp1s0 nud falhou
sudo ip neigh flush dev enp1s0 nud falhou

sudo ip neigh flush dev enp1s0

Isso força a redescoberta de vários vizinhos e pode causar uma interrupção temporária das conexões ativas. Não execute esse procedimento automaticamente na interface que hospeda sua sessão SSH. A remoção direcionada é mais fácil de controlar e fornece melhores diagnósticos.

página de manual ip-neighbour(8) operações de documentos mostrar, pegar, del E liberar bem como todos os estados NUD. Mantenha esta ordem: rota, interface, tabela, estado, tráfego de teste, exclusão direcionada. O despejo completo vem por último.

sudo apt update && sudo apt upgrade