Cómo usar el comando arping en Linux

Publicado: 2022-07-28
Computadora portátil Linux que muestra un indicador de bash
fatmawati achmad zaenuri/Shutterstock.com

El comando arping Linux es como ping , pero solo para redes locales. Su ventaja es que opera en un nivel de red más bajo y, a veces, obtiene respuestas cuando el ping no puede. Aquí se explica cómo usarlo.

El protocolo ARP

Una dirección IP es una etiqueta numérica para un dispositivo en red. Se usa como una dirección para que el tráfico de red apropiado llegue al dispositivo correcto. Pero la mayoría de los dispositivos en las redes de área local tienen direcciones IP dinámicas . Es decir, su dirección IP bien podría cambiar la próxima vez que se inicien.

Para poder enrutar correctamente el tráfico de red al dispositivo apropiado, se debe emplear un esquema que asigne direcciones IP a direcciones de control de acceso a medios (MAC). La dirección MAC es una identidad única establecida en el punto de fabricación de un dispositivo. Una dirección IP es una dirección lógica . La dirección MAC es una dirección física .

¿Qué es un paquete de datos?
RELACIONADO ¿Qué es un paquete de datos?

El Protocolo de resolución de direcciones es el intermediario que asigna direcciones IP a direcciones MAC. El dispositivo responsable de ordenar y dirigir los paquetes de red en su red, generalmente el enrutador, crea y mantiene una tabla ARP que vincula las direcciones IP con las direcciones MAC.

Si el enrutador necesita enrutar datos a un dispositivo que no conoce, realiza una solicitud ARP para obtener la dirección MAC del nuevo dispositivo.

Cuando se conecta un nuevo dispositivo a su red, se le asigna una dirección IP, pero eso no es suficiente para enrutar el tráfico hacia él. El enrutador necesita obtener la dirección MAC, que es la pieza que falta en el rompecabezas. Pero debido a que la dirección IP por sí sola no es información suficiente para enrutar paquetes al dispositivo, Catch-22 no puede usar la dirección IP para consultar el hardware para obtener la dirección MAC.

El modelo de interconexión de sistemas abiertos agrupa las tecnologías que componen una red de trabajo como una serie de capas. Las capas superiores no pueden operar sin las capas inferiores. Hay siete capas en el modelo OSI.

  • La capa 7 es la capa superior, la capa de aplicación . Proporciona información al usuario de la computadora y recibe información de ellos.
  • La capa 6 es la capa de presentación . Esto asegura que los datos estén en el formato o estado correcto a medida que se mueven hacia y desde el formato de red. El cifrado y el descifrado tienen lugar en esta capa.
  • La capa 5 es la capa de sesión . Una sesión es una conexión de red entre dos o más dispositivos. Esta capa se ocupa de cuestiones tales como el inicio de una conexión, un apretón de manos, tiempos de espera y la ruptura de conexiones que ya no son necesarias.
  • La capa 4 es la capa de transporte . Esta es la capa que mueve los datos por la red de forma coordinada. Esta capa se ocupa de cosas como las tasas de transferencia y los volúmenes de datos. El Protocolo de control de transmisión, el TCP en TCP/IP, opera en esta capa.
  • La capa 3 es la capa de red . Aquí es donde tiene lugar el enrutamiento y el reenvío de paquetes. Es la capa en la que opera el Protocolo de Internet, la IP en TCP/IP.
  • La capa 2 es la capa de enlace de datos . Se utiliza para enviar paquetes entre dispositivos direccionables directamente mediante transmisiones a cada dispositivo o unidifusión a direcciones MAC específicas.
  • La capa 1 es la capa física . Esto se refiere a la infraestructura física, incluido el cableado, los enrutadores y los conmutadores de red. Las ondas de radio utilizadas en Wi-Fi también entrarían en esta categoría.

Cuando el enrutador recibe un paquete para una dirección IP que no está en su tabla, envía un paquete de difusión a toda la red. Efectivamente pregunta "¿Quién tiene esta dirección IP?" Este es un mensaje de capa dos, por lo que no depende del enrutamiento IP.

El dispositivo con la dirección coincidente responde devolviendo su dirección MAC. La dirección IP y la dirección MAC de ese dispositivo se pueden agregar a la tabla de mapeo. El tráfico IP normal ahora se puede enrutar al dispositivo porque la relación entre su dirección IP y su dirección MAC se ha establecido y registrado.

RELACIONADO: La base de Internet: TCP/IP cumple 40 años

El comando arpista

Todas las cosas inteligentes de ARP se activan automáticamente en segundo plano, construyendo y manteniendo la tabla ARP. El comando arping trae parte de la funcionalidad de la consulta ARP a la ventana del terminal. Opera en la capa dos de OSI y puede solicitar una respuesta de un dispositivo cuando el ping no lo hace.

En Fedora 36, arping ya estaba instalado, pero necesitábamos instalarlo en Manjaro 21 y Ubuntu 22.04.

En Ubuntu el comando es:

 sudo apt instalar arping 

Instalación de arp en Ubuntu

En Manjaro necesitas escribir:

 sudo pacman-sy arping 

Instalación de arping en Manjaro

La forma más sencilla de usar arping es con una dirección IP. Esta debe ser la dirección de un dispositivo direccionable directamente, conectado a la red local. Debido a que arping opera en la capa dos, no es posible el enrutamiento. Necesitarás usar sudo con arping .

 sudo arping 192.168.1.17 

Usar arping con una dirección IP

Presione Ctrl+C para detener. La información devuelta es la dirección MAC del dispositivo que responde, el número de índice de la solicitud de arping y el tiempo de ida y vuelta para que se arping la solicitud de activación.

Compare el resultado con el del comando ping , a continuación. El comando ping devuelve más información sobre el tiempo de ida y vuelta del paquete de red. El comando arping le brinda menos estadísticas de tiempo, pero incluye la dirección MAC del dispositivo.

 ping 192.168.1.17 

Usar ping con una dirección IP

También puede usar el nombre de red del dispositivo con arping .

 sudo arping fedora-36.local 

Usar arping con una dirección IP

Puede usar la opción -c (recuento) para indicarle a arping que se detenga después de un número determinado de solicitudes. Este comando le dice a arping que intente dos veces y luego se detenga.

 sudo arping -c 2 192.168.1.18 

Usando la opción -c para decirle a arping que se detenga después de hacer dos solicitudes

Si tiene múltiples interfaces de red en su computadora, puede usar la opción -I (interfaz) para decirle a arping qué interfaz usar.

Puede usar el comando ip link para enumerar sus interfaces de red.

 enlace IP 

Usando ip link para listar las interfaces de red

Esta computadora tiene tres interfaces. La interfaz virtual lo se usa como bucle invertido para conexiones internas entre software en la misma computadora. Aquí no nos sirve. Podemos utilizar tanto la conexión ethernet enp3s0 como la interfaz inalámbrica wlan0 .

Este comando le dice a arping que use la interfaz que elijamos y que no haga su propia selección.

 sudo arping -c 2 -I enp3s0 manjaro-21.local 

Usar la opción -I para decirle a arping que use una interfaz de red específica

Uso de arping en secuencias de comandos

Al envolver arping en un bucle en un script, podemos hacer que funcione en un rango de direcciones IP. Copie el texto de este script y guárdelo en un archivo llamado "scan-range.sh".

Deberá editar el script y reemplazar todas las apariciones de 192.168.1 con la dirección IP de su red.

 #!/bin/bash for (( device = $1 ; device <= $2 ; device ++ )) do arping -c 1 192.168.1. $device | grep -E "1 response|1 packets received" > /dev/null if [ $? == 0 ] ; then echo "192.168.1. $device responded." else echo "192.168.1. $device didn't respond." fi  done

El script acepta dos parámetros de línea de comandos. Estos se usan como el último octeto de las direcciones IP del rango en el que desea usar el arping . Entonces, si pasa 20 y 30 al script, el ciclo comenzará en 192.168.1. 20 y terminaría después de usar la dirección IP 192.168.1. 30 .

Se accede a los parámetros dentro del script como $1 y $2 . Estos se utilizan en un bucle for de estilo C. En cada giro del bucle for , $device se establece en la siguiente dirección IP del rango.

La secuencia de comandos utiliza el mismo formato arping -c que ya hemos visto, pero esta vez solo solicitamos que se envíe una única solicitud ARP a cada dispositivo del rango.

La salida del comando arping se canaliza a través de grep .

La sintaxis de grep se puede simplificar en su secuencia de comandos. grep está buscando una de dos cadenas, ya sea "1 respuesta" o "1 paquete recibido". Esto se debe a que las computadoras de prueba tenían diferentes versiones de arping y usan una terminología diferente. Si grep encuentra alguna de estas frases, su valor de salida será cero.

Cuando sepa cuál de las frases usa su versión de arping , puede simplificar la sintaxis de grep eliminando la otra frase.

La instrucción if prueba $? —una variable que contiene el código de salida del último proceso que finalizó— para ver si es cero. Si es así, usa echo para imprimir un mensaje de éxito en la ventana de la terminal. Si la prueba falla, entonces grep no encontró ninguna de las cadenas, lo que significa que la solicitud ARP falló.

Haga que su script sea ejecutable usando el comando chmod y la opción +x .

 chmod +x scan-range.sh 

Usando la opción chmod +x para hacer que el script sea ejecutable

Lo ejecutaremos y escanearemos el rango de IP de 15 a 20. Algunas de estas direcciones no tienen dispositivos conectados, por lo que deberíamos ver algunas fallas. Recuerda usar sudo . También intentaremos hacer ping al dispositivo en 192.168.1.15.

 sudo ./scan-range.sh 15 20
 ping 192.168.1.15 

Ejecutando el script y ejecutando ping

Obtenemos una mezcla de éxitos y fracasos, como lo harías en cualquier red. Pero tenga en cuenta que aunque el dispositivo en 192.168.1.15 responde a la solicitud ARP de capa dos, no responde a la solicitud de ping de capa tres.

Si hubiera hecho ping al dispositivo y notado la falla, probablemente se sentiría inclinado a comprobar que estaba enchufado, en línea y si podía hacer ping desde el dispositivo 192.168.1.15.

Pero con arping puede verificar que esté conectado, en línea y accesible en red. Eso guiaría su solución de problemas para comenzar a buscar problemas de enrutamiento y tabla ARP.

Una visión más profunda

Hay muchas capas en la cebolla de redes. Si ping no lo lleva a ninguna parte, despliegue una capa y vea qué puede decirle arping .

RELACIONADO: Cómo administrar redes Wi-Fi de Linux con Nmtui