¿Cómo transmitir la actualización ARP a todos los vecinos en Linux?


21

Algunos clientes en la subred han almacenado en caché la IP con la antigua dirección MAC, quiero que actualicen el nuevo valor haciendo una transmisión ARP, ¿es posible en Linux?

Respuestas:


27

Sí, se llama "ARP no solicitado" o "ARP gratuito". Consulte la página de manual para obtener más detalles, pero la sintaxis se parece a esto:

arping -U 192.168.1.101

Si está falsificando una dirección, es posible que deba ejecutar esto primero:

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

Finalmente, debido a su capacidad de suplantación de identidad, el envío de paquetes ARP no solicitados a veces se considera una actividad "hostil", y puede ser ignorado o puede ser bloqueado por algunos firewalls de terceros.


8
Bajo debian, el comando para mí era arping -S ip.to.update -i ethX destination.host. Ejemplo:arping -S 10.0.0.2 -i eth0 10.0.0.1
radicando

3
Encontré que era necesario hacer un arping a un enrutador como se describió anteriormente en Linux cuando la IP es un alias en el dispositivo (es decir, una NIC secundaria está usando la IP o si es un alias en un NIS existente que se configuró usando un ifconfig ethx:xtipo de alias). Si es el primario, nunca parece ser necesario.

8

Lo que está buscando se llama " ARP gratuito " y se puede hacer usando "arping". Si su dirección IP es 10.0.0.1 en eth0, usaría este comando:

arping -A -I eth0 10.0.0.1

Puede verificar que el ARP se está enviando usando "tcpdump" mientras se está ejecutando el "arping", en este caso estoy viendo "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

No es necesario. Como en: cuando cambiaste la IP, la computadora debería haberlo hecho automáticamente. Si las clienas están codificadas, una transmisión no cambiará la anulación codificada.

Lo hago desde hace unos 20 años, y en todo este tiempo NUNCA (!) Había sucedido esto sin un equipo defectuoso.


El problema es que accidentalmente asigno una nueva máquina con una IP usada, por lo que entran en conflicto con la IP. No puedo acceder a la vieja máquina usando SSH. Ahora apago remotamente la máquina (nueva) incorrecta, pero todavía no puedo acceder a la máquina anterior, sospecho que el enrutador ha almacenado en caché la dirección MAC en su tabla ARP.
Howard

1
Esto se llama '' ARP gratuito '' - ver en.wikipedia.org/wiki/…
Kimvais

Debería funcionar después de que caduque el caché de arp. También puede intentar enjuagar la tabla de arp en la máquina desde la que está intentando acceder a la máquina anterior
Kimvais

44
@TomTom: quizás no has estado trabajando en el entorno adecuado para verlo. Enviar paquetes ARP no solicitados es una forma común de redirigir rápidamente el tráfico a un nuevo servidor en una situación de conmutación por error. Muchos conmutadores y enrutadores de alta gama pueden tardar varios minutos en reconocer que, de lo contrario, una dirección IP se ha movido a un puerto físico diferente. Los switches Cisco son conocidos por esto.
tylerl

44
@TomTom: Sí, si está fallando a través de heartbeat / corosync, lo que sea. Sin embargo, si mueve manualmente los servicios de una máquina a otra, particularmente si está usando el equipo de Cisco, el envío manual de un ARP gratuito es extremadamente útil. Estoy de acuerdo en que no es algo que haces con frecuencia, pero como alguien que también ha estado haciendo TI durante 20 años, me he encontrado en una serie de situaciones en las que necesitaba hacerlo.
Sean Reifschneider
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.