Este artículo explica cómo obtener rápidamente la MAC address (dirección de hardware) correspondiente a una determinada dirección IP de una máquina conectada en la misma red local o de una interfaz de red del sistema local.



Determinar la dirección MAC de una interfaz local

Si se desea obtener la dirección MAC de una interfaz de red local, es posible recurrir a la herramienta ip, pasando el nombre de dispositivo como parámetro, supongamos "wlan0":

$ ip address show dev wlan0

Por ejemplo:

emi@vaio:~$ ip a s dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 18:3b:7e:d1:0b:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.6/24 brd 192.168.100.255 scope global dynamic wlan0
       valid_lft 13059sec preferred_lft 13059sec
    inet6 fe80::a3e:183b:7ed1:0bf3/64 scope link 
       valid_lft forever preferred_lft forever

La línea "link/ether" muestra la dirección MAC:

emi@vaio:~$ ip a s dev wlan0 | grep ether
    link/ether 18:3b:7e:d1:0b:f3 brd ff:ff:ff:ff:ff:ff

En este caso "18:3b:7e:d1:0b:f3" es la dirección de hardware (MAC) de la interfaz de red "wlan0".

Determinar la dirección MAC asociada a una IP

Veamos ahora cómo identificar la dirección de hardware correspondiente a una dirección IP de una máquina conectada en la misma red local. Hace bastante tiempo publiqué un script Bash para obtener la dirección IP asociada a una MAC en la misma red local. Esto podía ser de utilidad para análisis forense y auditorías de seguridad, aunque también para analizar tráfico y problemas en una red.

Ahora veamos cómo, a partir de una dirección IP, obtener la dirección MAC del dispositivo que tiene dicha IP configurada. El trabajo que hace precisamente el protocolo ARP (Address Resolution Protocol).

ARP es un protocolo de bajo nivel basado en broadcast que se encarga de determinar la dirección de hardware asociada a una IP en la misma subred, a fin de poder establecer la comunicación en la capa Ethernet. Envía un mensaje consultando quién tiene X dirección IP, y la máquina que tiene dicha IP configurada, responde. De esta forma determina cuál es la dirección de hardware para establecer al comunicación con la misma.

Para no tener que estar consultando constantemente quién tiene tal o cual IP configurada, cada sistema operativo mantiene una caché que mapea direcciones IP con direcciones MAC.

En los sistemas GNU/Linux, la herramienta arp permite visualizar o manipular dicha caché. Para determinar entonces cuál es la dirección MAC asociada a una IP, simplemente basta con consultar dicha caché. Pero antes, es necesario asegurarse de que exista dicha entrada en la caché, generando algo de tráfico hacia la IP en cuestión.

Supongamos que se desea determinar cuál es la MAC asociada a la IP "192.168.139.205". Primero hacer un ping a dicha máquina, para generar una entrada en la caché ARP:

root@devuan:~# ping -c 1 192.168.139.205 >/dev/null 2>&1

Luego consultar la caché ARP:

root@devuan:~# arp -a | grep '192.168.139.205'
hal9000.linuxito.com (192.168.139.205) at c1:e5:6e:7b:63:a0 [ether] on eth0

Se observa que la dirección MAC asociada a la IP "192.168.139.205" es "c1:e5:6e:7b:63:a0".

¿Y si la máquina está apagada?

Si la máquina que posee la IP buscada está apagada, estamos en problemas. Aunque, si se utiliza un servidor DHCP para asignar direcciones IP (y tenemos acceso al mismo), es posible consultar el log del servidor DHCP o la tabla de reservación (si tiene una IP reservada) para determinar cuál es la dirección MAC.

Referencias


Tal vez pueda interesarte


Compartí este artículo