arp --delete não está excluindo uma entrada; meramente marca a entrada como "incompleta"

9
$ sudo arp -avn
? (10.10.7.30) at 00:cc:cc:bb:dd:86 [ether] on eth0
Entries: 1  Skipped: 0  Found: 9

$ sudo arp -d 10.10.7.30

$ sudo arp -avn
? (10.10.7.30) at <incomplete> [ether] on eth0

Eu não esperava nenhuma entrada para 10.10.7.30 . Inesperadamente, a entrada permanece e está marcada com <incomplete> .

Usando o Ubuntu 10.04 .

    
por JamesThomasMoon1979 07.02.2013 / 01:20

4 respostas

10

A entrada será removida, apenas seja paciente.

(Se você quiser a resposta mais curta possível: incompleta == excluída)

Digamos que "delete" seja a palavra errada para a ação. O que está realmente acontecendo aqui é que a entrada é configurada manualmente para o estado "pedido enviado, sem resposta" (assim, processo ARP "incompleto") como se a máquina estivesse realmente inacessível.

Agora, a entrada será completamente removida em breve, a menos que receba uma nova resposta ARP válida nesse meio tempo. Nesse caso, a entrada seria adicionada novamente mesmo que tenha sido removida, em vez de ser marcada como incompleta. Portanto, não há pro ou contra real para esse comportamento.

Mas tenha em mente que estamos falando de um cache. Excluir coisas de caches é difícil e caro. É muito mais eficiente invalidar uma entrada e esperar que ela seja substituída antes de ser finalmente removida. Mas, para o sistema, não faz diferença se a entrada for eliminada da lista ou marcada como incompleta.

    
por 07.02.2013 / 02:02
3

Para complementar todas as outras respostas, achei esse link muito útil .

Em alguns casos, usar ip é mais apropriado, como o comando:

# ip -s -s neigh flush all

Os resultados podem depender do seu kernel Linux.

    
por 31.07.2015 / 14:59
1

Além das outras respostas, vale a pena mencionar que é possível erigir completamente o cache do arp removendo-o. Uma das maneiras menos dolorosas é:

ip link set arp off dev eth0 ; ip link set arp on dev eth0

Isso deve remover todas as entradas, estejam elas em qualquer estado.

Métodos alternativos incluem downing e upping da interface e formas similares de fazer com que o cache de arp seja completamente removido e recriado.

    
por 03.01.2018 / 16:40
0

Eu sei que isso pode parecer óbvio, mas, para quem não está acostumado a trabalhar com o shell, esta é minha sugestão:

A partir da resposta de @KarmaFusebox, por que não simplesmente usa os resultados ...? :

arp -a | grep "incomplet" -i -v

Ele mostrará apenas as entradas de cache existentes / ativas.
Eu acho que continua sendo um comando compatível com POSIX . E é um método scriptable , se é isso que você precisa.

    
por 06.06.2015 / 01:44

Tags