Ambos:
sudo ip -s -s neigh flush all
E:
sudo arp -d 192.168.0.102
Em vez de limpar o cache do arp, eles parecem apenas invalidar as entradas (elas aparecerão como incomplete
). Mesmo depois de alguns minutos, o cache do ARP se parece com:
$ arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.0.103 (incomplete) eth0
192.168.0.1 ether DE:AD:BE:EF:DE:AD C eth0
(O MAC do gateway foi atualizado - tudo bem)
Como posso realmente limpar o cache do ARP, como em "excluir todas as entradas da tabela"? Eu não quero manter entradas incompletas, eu quero que eles removido. Isso é possível?
EDITAR
Este é o meu sistema:
» arp --version
net-tools 1.60
arp 1.88 (2001-04-04)
+I18N
AF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE
HW: (ether) +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64
» lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.2 LTS
Release: 14.04
Codename: trusty
» uname -a
Linux polyphemus.xxx-net 3.13.0-46-generic #77-Ubuntu SMP Mon Mar 2 18:23:39 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
wireshark
outcpdump
.Respostas:
Certifique-se de fazer tudo de uma só vez, para não interromper a conectividade de rede antes de poder ativar o ARP novamente.
fonte
dev=eth2; ip link set arp off dev $dev; sleep 1; ip link set arp on dev $dev
. Osleep
pode não ser necessário.Sua primeira solução funciona, leva apenas um pouco de tempo (5 a 10 segundos no meu teste no Kali) para passar de "(incompleto)" para nenhuma entrada.
Presumivelmente, ele está em algum tipo de estado de transição a caminho de ser excluído.
fonte
Em determinado sistema, o
ip
comando não está disponível.Portanto, esta é a alternativa do
ip link set arp off dev eth0; ip link set arp on dev eth0
comando.Se você deseja excluir todas as entradas da tabela em um único comando, use
for loop
como no exemplo a seguir.ANTES
REMOVER ARP COM ARP -D COMMAND
DEPOIS: ENDEREÇO MAC REMOVIDO DOS ENTRADAS COM MENSAGEM INCOMPLETA
Isso é verdade, ao excluir o arp com o
arp -d
comando, as entradas do arp ainda estão lá com aincomplete
mensagem.Para resolver esse problema, use
ifconfig ethx up/down
assimANTES
DESATIVAR E ATIVAR AS INTERFACES ETH1 E ETH2 EM UM ÚNICO COMANDO
TADAAA ... PROBLEMA RESOLVIDO :)
fonte
Sua solução mencionada é a abordagem correta e segura para liberar a tabela ARP:
ip neigh flush all [dev <device>]
Se determinadas entradas forem alteradas para inválidas, isso é temporário e faz parte do protocolo ARP. O aspecto importante é que o mapeamento se foi; uma entrada ARP sinalizada como incompleta não é uma entrada IP-MAC na tabela.
Eu apenas tentei isso e, no meu caso, ele imediatamente limpou a tabela e não deixou entradas incompletas.
fonte