¿La forma más confiable de verificar si hay un cliente conectado?

¿La forma más confiable de verificar si hay un cliente conectado?

Tengo un sistema operativo Linux integrado desarrollado desde cero usando Yocto. Esto habla con un cliente de Windows XP/7. El sistema operativo integrado ejecuta un servidor DHCP y proporciona una dirección al cliente. El problema es que el cliente está "bloqueado" y bloquea muchos puertos y métodos estándar para hacer las cosas. Si el sistema integrado detecta que el cliente está presente, mi script de inicio iniciará el servidor que prueba el sistema; de lo contrario, ejecuto en otro sistema operativo.¿Cuál es la mejor manera de detectar si un cliente conectado a través de Ethernet está presente al inicio (en Linux) sin agregar un tiempo de inicio significativo al sistema?

Estas son las cosas que he probado y las que no funcionan:

  1. Los paquetes ICMP están bloqueados en el lado del cliente, por lo que el ping tradicional no funciona
  2. arping funciona (al igual que nmap usando escaneo ARP), pero los clientes de Windows intentan ser "inteligentes" y marcan de manera que les toma entre 20 y 25 segundos establecer la conexión, lo cual es inaceptable; Lo ideal es que detecte algo en 5 a 10 segundos. ¿Hay algo que pueda configurar en el lado del servidor para acelerar esto? Siempre arranca primero en esta partición, por lo que la solución más rápida es la mejor.
  3. ifplugd, ethtool, netplugd y sondeo /sys/class/net/eth0/operstate y /sys/class/net/eth0/carrier no funcionan porque el puerto Ethernet en el sistema integrado está conectado a un conmutador interno, por lo que siempre está Hardware "arriba" y "conectado"
  4. Es probable que una solución futura utilice Bonjour en el lado del cliente y Avahi en el servidor para que podamos tener un protocolo sin conexión, pero esto llevará tiempo implementarlo y necesito una solución provisional porque cualquier software que agreguemos al lado del cliente lleva mucho tiempo. tiempo para obtener la aprobación.

Nuevamente, no puedo hacer nada del lado del cliente porque estas unidades están configuradas por otra empresa y bloqueadas. Entonces, ¿qué más puedo probar en el servidor para detectar si el cliente está presente?

Respuesta1

Entonces, dijiste que hay un interruptor interno. ¿Puedes acceder a la administración de ese conmutador? ¿Ya sea por I2C (switch integrado) o SNMP?

Dice que su sistema operativo integrado ejecuta un servidor DHCP. Si un cliente realiza una solicitud DHCP, ¿no es eso una prueba de que el cliente está presente y es accesible?

No tengo idea de lo que quieres decir con "inteligente" y "marcación externa". Si la máquina con Windows se va a comunicar a través de Ethernet, debe responder a ARP. Hasta ahora, arping parece la mejor opción.

información relacionada