Cómo enviar manualmente una solicitud ARP

Cómo enviar manualmente una solicitud ARP

Recientemente olfateé con Tcpdump un paquete "ARP, Solicitud que tiene 192.168.2.3, diga 192.168.2.2, longitud 28".

Me gustaría reproducir este mensaje y enviar una solicitud ARP desde mi computadora portátil a cualquier IP que decida. Cómo puedo hacer esto ?

También me interesaría forzar la actualización de toda la tabla ARP. Sé que eliminar la tabla la renovará, pero solo en una computadora portátil, esta operación es realmente lenta y puede tomar hasta 1/2/5 minutos reconstruir la tabla ARP completa. ¿Hay alguna manera de forzar la reconstrucción de la tabla enviando una solicitud ARP transmitida?

Estoy usando una Mac con el último sistema operativo Yosemite 10.10.4

Gracias.

Respuesta1

nmapes una herramienta de propósito general para escanear redes y solo se puede utilizar para realizar un escaneo arp:

nmap -PR 10.0.1.0/24 -sn

Deshabilita el -snescaneo de puertos, por lo que solo realiza solicitudes de arp y -PRes el escaneo de arp.

Respuesta2

Existe una herramienta de código abierto llamada arpingque le permite enviar solicitudes ARP personalizadas. Puede obtenerlo desde su administrador de paquetes de código abierto de OS X favorito, como Homebrew o MacPorts.

Las solicitudes ARP generalmente se transmiten (porque no sabes a qué dirección MAC enviarlas; de lo contrario, no necesitarías enviar una). Sin embargo, no soncomodín; es decir, no puede enviar una sola solicitud que solicite a todos los hosts de la red que le envíen respuestas ARP. El protocolo no proporciona una forma de especificar un comodín en lugar de la dirección IP de destino.

Respuesta3

Los paquetes ARP son enviados por el sistema operativo a pedido; esencialmente, cuando necesita hablar con otra dirección IP en la misma subred y aún no conoce la dirección MAC de ese host, envía una solicitud ARP. Esto significa que reconstruir la tabla no es realmente un proceso bien definido, ya que en realidad no sabes qué otros hosts existen hasta la primera vez que tu computadora intenta comunicarse con ellos.

Actualizar las entradas de las direcciones IP que se encuentran actualmente en la tabla no es demasiado difícil. Simplemente haga una lista de las entradas actuales, utilícela sudo arp -dapara eliminar todas las entradas actuales, luego use algo como pingforzar al sistema operativo a volver a ARP cada una de las entradas eliminadas:

ip_addresses=$(arp -an | grep -Ev '\(incomplete\)|ff:ff:ff:ff:ff:ff'| sed -n 's/? (\([0-9.]*\)) at .*$/\1/p')
sudo arp -da
for ip in $ip_addresses; do ping -c1 -t1 $ip & disown; done &>/dev/null

Tenga en cuenta que el último comando activa todos los pingmensajes de correo electrónico en segundo plano, por lo que prácticamente todos se ejecutan a la vez y la tabla debería reconstruirse con bastante rapidez.

Si desea eliminar y volver a ARP solo una entrada, haga esto en su lugar:

sudo arp -d 10.0.0.1
ping -c1 -t1 10.0.0.1

información relacionada