Cómo usar el comando arping en Linux
Publicado: 2022-07-28 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 .
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
En Manjaro necesitas escribir:
sudo pacman-sy arping
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
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
También puede usar el nombre de red del dispositivo con arping
.
sudo arping fedora-36.local
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
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
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
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
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
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