¿Detectar rápidamente a través de MAC si hay entidades presentes en una red?

¿Detectar rápidamente a través de MAC si hay entidades presentes en una red?

¿Existe una manera rápida y confiable de usar la dirección MAC de un dispositivo para determinar si está actualmente conectado a una red desde una PC/Servidor con Windows? Si no, ¿desde un servidor Ubuntu?

  • arp -a no funciona por sí solo ya que los elementos permanecen en el caché demasiado tiempo.
  • arp -a combinado con borrar el caché cada 5 minutos puede funcionar, pero parece ineficiente y solo funciona si el caché se vuelve a llenar por completo en 5 minutos. ¿Verdad?

Antecedentes: me cansé de registrarme en el trabajo, así que escribí una aplicación rápida que se ejecuta como un servicio de Windows, verifica periódicamente si mi teléfono está presente en la red de la empresa, lo registra en una base de datos y luego aloja un sitio web que permite poder verlo cuando estaba en la oficina sumando los datos en un rango determinado (es sorprendente lo que se puede hacer con las bibliotecas adecuadas en unas pocas horas).

Pasó aproximadamente una semana antes de que la compañía decidiera que les gustaría que todos usaran la aplicación en lugar de nuestro sistema de reloj siempre que fuera posible.

Originalmente estaba usando una reserva DHCP y periódicamente hacía ping a mi teléfono Android para detectarlo. Sin embargo, al expandirme, rápidamente me encontré con el problema de que los iPhone no responden a los pings. Aparte de eso, los pings son lentos. Se necesita aproximadamente un segundo por teléfono para confirmar de manera confiable mediante ping que está allí.

Intenté ejecutar arp -a y revisar el resultado en busca de coincidencias de MAC, pero los elementos permanecen en el caché de arp prácticamente indefinidamente. He considerado leer el caché y luego vaciarlo, pero no sé si se volverá a llenar de manera confiable a tiempo. Esa es una solución potencial si es así, aunque no me gusta la idea de vaciar el caché arp cada cinco minutos.

Mi solución actual es hacer una encuesta SNMP en nuestros puntos de acceso para reunir a sus clientes conectados y luego analizarla para ver si puedo encontrar coincidencias de MAC. Es rápido y confiable, pero es muy específico para los puntos de acceso en cuestión. Si cambiamos los puntos de acceso, es posible que los siguientes no incluyan sus clientes conectados a través de SNMP. Incluso si lo hacen, necesitaré reconfigurar las encuestas snmp.

Estoy pensando que si hay un puerto conocido que acepta conexiones en cualquier teléfono determinado, podría abrir una conexión TCP a ese y luego cerrarla en lugar de un ping, pero creo que debe haber una solución rápida de capa 2 aquí en alguna parte. .

Respuesta1

No lo uses arp. Usar arping.

https://en.wikipedia.org/wiki/Arping

Arping es una herramienta de software para descubrir y sondear hosts en una red informática. Arping sondea los hosts en el enlace de red adjunto enviando tramas de capa de enlace utilizando el método de solicitud del Protocolo de resolución de direcciones (ARP) dirigido a un host identificado por su dirección MAC de la interfaz de red.

El programa de utilidad puede utilizar ARP para resolver una dirección IP proporcionada por el usuario. La función de arping es análoga a la utilidad ping para sondear la red con el Protocolo de mensajes de control de Internet (ICMP) en la capa de Internet del Internet Protocol Suite.

Es básicamente lo que arphace, pero sin todo el negocio del almacenamiento en caché ARP del sistema operativo, es decir, simplemente envía solicitudes arp literales y únicas por cable.

PD: Recuerde que todo este negocio de ARP solo funcionará en una única subred local; si necesita un alcance más amplio, tendrá que ejecutarlo en los enrutadores.

PPS Podría utilizar concesiones DHCP cortas (por ejemplo, de 1 a 5 minutos). Por supuesto, los dispositivos Apple son conocidos por desobedecer las especificaciones DHCP en el pasado, pero eso no debería ser tan malo hoy en día. Espero.

PPPS Even arpingno será 100% confiable (aunque debería ser más del 99%). Algunos dispositivos ignoran las solicitudes arp entrantes no solicitadas al igual que algunos dispositivos ignoran los pings. Sí, viola el IETF, pero también lo hace ignorar los pings...

Guau.

Respuesta2

Tenías razón al usar ARP. Como no desea depender de que el dispositivo le diga que está en la red, lo cual es otra forma, puede hacerlo usted mismo. ARP puede facilitar eso, y no solo le dará la dirección mac sino que también le dará la dirección IP que están usando en la red. Cuando borre el arpcache, se volverá a llenar según sea necesario. Es decir, solo llenará el caché con las direcciones con las que tuvo que comunicarse en la red.

Una mejor solución, si ya va a conocer las direcciones mac de los clientes, puede asignarles direcciones IP estáticas en la red. Esto resolverá su problema de almacenamiento en caché hasta el punto de que el caché periódicamente se vuelve obsoleto. Lo que significa que la próxima vez que su interfaz de red tenga que comunicarse con el dispositivo, realizará otra búsqueda. Ahora, dado que tiene el problema de que los dispositivos Apple no hacen ping, iba a sugerir que siempre puede hacer ping a la transmisión de sus redes. Entonces, por ejemplo, si su puerta de enlace es 192.168.1.1, la transmisión es 192.168.1.255 y si envió un ping a eso, todos los dispositivos que acepten pings le responderán.

Entonces, para resumir, puede seguir limpiando el caché arp, ya que se volverá a llenar de manera confiable según sea necesario para el protocolo TCP/IP para el intercambio de paquetes entre computadoras y enrutadores, etc. Sin embargo, solo cargará su interfaz de red. . O en la aplicación, haga que detecte cuándo se conecta a la red de la empresa y envíe un ping a su servidor en un puerto diferente al icmp predeterminado, haga que su servidor escuche dichos pings y podrá documentar todo lo que necesite. O simplemente haga que la aplicación haga ping a su servidor de vez en cuando. El hecho de que el dispositivo no acepte pings no significa que no pueda enviar uno.

Respuesta3

Hay una aplicación de Android llamada Fing que básicamente escanea y muestra información (incluidas IP y MAC) sobre todos los dispositivos en una red.

No sé qué protocolos utiliza, pero detecta dispositivos Apple. Podrías usar algo como Wireshark para intentar aplicar ingeniería inversa a la aplicación y usar la misma técnica en tu herramienta. (Alguien ya lo probóen un sitio relacionado de Stack Exchange)

información relacionada