Como transmitir a atualização do ARP para todos os vizinhos no Linux?


21

Alguns clientes na sub-rede armazenaram em cache o IP com o endereço MAC antigo. Quero que eles atualizem o novo valor fazendo uma transmissão ARP. É possível no Linux?

Respostas:


27

Sim, é chamado de "ARP não solicitado" ou "ARP gratuito". Verifique a página de manual para arping para obter mais detalhes, mas a sintaxe é mais ou menos assim:

arping -U 192.168.1.101

Se você está falsificando um endereço, talvez seja necessário executá-lo primeiro:

echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind

Por fim, devido à sua capacidade de falsificação, o envio de pacotes ARP não solicitados às vezes é considerado uma atividade "hostil" e pode ser ignorado ou pode levar ao bloqueio de alguns firewalls de terceiros.


8
No debian, o comando para mim era arping -S ip.to.update -i ethX destination.host. Exemplo:arping -S 10.0.0.2 -i eth0 10.0.0.1
radicand

3
Eu achei necessário fazer um arping para um roteador como descrito acima no Linux quando o IP é um alias no dispositivo (ou seja, uma NIC secundária está usando o IP ou se é um alias em um NIS existente que foi configurado usando um ifconfig ethx:xtipo de pseudônimo). Se é o primário, nunca parece ser necessário.

8

O que você está procurando é chamado " ARP gratuito " e pode ser feito usando "arping". Se o seu endereço IP for 10.0.0.1 em eth0, você usaria este comando:

arping -A -I eth0 10.0.0.1

Você pode verificar se o ARP está sendo enviado usando "tcpdump" enquanto o "arping" está em execução; neste caso, estou assistindo "wlan0":

laptop:~$ sudo tcpdump -lni wlan0 arp    
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:14:11.219936 ARP, Reply 172.16.42.161 is-at a4:77:03:d2:9b:c4, length 28
12:14:12.220119 ARP, Reply 172.16.42.161 is-at a4:77:03:d2:9b:c4, length 28
12:14:13.220288 ARP, Reply 172.16.42.161 is-at a4:77:03:d2:9b:c4, length 28
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel
laptop:~$ 

-1

Não é necessário. Como em: quando você alterou o IP, o computador deveria ter feito isso automaticamente. Se os clietns forem codificados, uma transmissão não mudará a substituição do código codificado.

Faço isso há cerca de 20 anos e, durante todo esse tempo, NUNCA (!) Aconteceu sem equipamentos defeituosos.


O problema é que atribuo acidentalmente uma nova máquina com um IP usado, para que entrem em conflito com o IP. Não consigo acessar a máquina antiga usando SSH. Agora, desliguei remotamente a máquina (nova) errada, mas ainda não consigo acessar a máquina antiga, suspeito que o roteador tenha armazenado em cache o endereço MAC em sua tabela ARP.
289 Howard

11
Isso é chamado de '' ARP gratuito '' - veja en.wikipedia.org/wiki/…
Kimvais

Deve funcionar depois que o cache do arp expira. Você também pode tentar liberar a tabela arp na máquina da qual está tentando acessar a máquina antiga.
Kimvais

4
@ TomTom - talvez você não esteja trabalhando no ambiente certo para vê-lo. O envio de pacotes ARP não solicitados é uma maneira comum de redirecionar rapidamente o tráfego para um novo servidor em uma situação de failover. Muitos switches e roteadores de última geração podem levar alguns minutos para reconhecer que um endereço IP foi movido para uma porta física diferente. Os switches da Cisco são notórios por isso.
tylerl

4
@ TomTom: Sim, se você fizer failover por meio de pulsação / corosync, o que seja. No entanto, se você mover serviços manualmente de uma máquina para outra, principalmente se estiver usando o equipamento Cisco, o envio manual de um ARP gratuito será extremamente útil. Concordo que não é algo que você faz com frequência, mas como alguém que também faz TI há 20 anos, me deparei com várias situações em que precisava fazer isso.
Sean Reifschneider
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.