Cómo detectar la IP de un dispositivo determinado en la misma red

Cómo detectar la IP de un dispositivo determinado en la misma red

Tengo una situación muy típica en la que quiero conectar un teléfono (Android) a una computadora portátil Linux en la misma red (wifi) usando ssh. Las IP son asignadas por DHCP, por lo que solo conozco la del cliente de antemano. Conociendo la IP del cliente, en principio podría ejecutar un comando ssh en todas las IP posibles en la misma red para ver si un servidor está escuchando allí. Sin embargo, esto parece muy ineficiente. Entonces, ¿cómo puedo averiguar la IP de mi host (sabiendo su dirección MAC) para poder conectarme usando ssh? Conozco otro software que logra algo como esto, por lo que debe ser posible. Relacionado: ¿puedo asignar dinámicamente un nombre de host a esta IP en el cliente (suponiendo que sea Linux) para poder usar una entrada estática en el archivo de configuración ssh?

Respuesta1

Puedes hacerlo en los siguientes dos pasos:

Paso 1:

Escanee su subred para llenar su caché ARP. Hay métodos pero yo los sugiero fping. Instálelo en Ubuntu ejecutando el siguiente comando en una terminal:

apt-get install fping

...luego escanea tu red (por ejemplo, subred 192.168.10.0/24):

fping -g 192.168.10.0/24

Ahora la caché ARP está llena con la dirección MAC de los dispositivos en su subred.

Paso 2

Aplique un filtro apropiado en su caché ARP para ver solo el dispositivo de destino. Simplemente use el siguiente comando (dónde aa:bb:cc:dd:ee:ffestá la MAC del dispositivo):

arp -n | grep -i aa:bb:cc:dd:ee:ff | cut -c-15

La salida es la dirección IP del dispositivo de destino.

EDITAR1:

La dirección MAC de muestra se cambió a minúsculas porque Linux la muestra de esta manera (a diferencia de Microsoft Windows que usa mayúsculas)

EDITAR2:

Siguiendo el script bash, agregue una entrada al archivo de hosts ( /etc/hosts) con el nombreTeléfono móvilpara que puedas acceder a tu dispositivo con nombreTeléfono móvil. Para actualizar la dirección IP asociada, simplemente ejecútela nuevamente. Cambie namey maca subnetlos valores deseados.

#!/bin/sh
name="cellphone"
mac=aa:bb:cc:dd:ee:ff
subnet=192.168.10.0/24
fping -g ${subnet}
ip="$(arp -n | grep -i ${mac} | cut -c-15)"
sed -i".bak" '/'${name}'/d' /etc/hosts
if [ -z "$ip" ]; then
    echo "Device not found!"
else
    echo "${ip}\t${name}" >> /etc/hosts
fi

Respuesta2

configuración ceropodría haber una solución aquí. Es un protocolo para descubrir servicios en la red y establecer un enlace entre dos hosts.

Si configura avahi mDNS (paquetes avahi-daemony libnss-mdns), los hosts anuncian sus nombres de host y usted puede resolverlos con <hostname>.local.

Respuesta3

Parece que tu problema es que estás conectando algo a la red y quieres saber qué IP obtendrá.

Sobre esa base, parece que la solución más sencilla posible es configurar su servidor DHCP para proporcionar una IP estática para la dirección MAC adecuada.

¿Tiene control sobre el servidor DHCP? Si es así, probablemente podrías hacer una de dos cosas:

  • Verifique los registros para ver qué IP se asignó a la MAC dada.
  • Configurar un mapa estático.

información relacionada