Zuverlässigste Methode zum Überprüfen eines verbundenen Clients?

Zuverlässigste Methode zum Überprüfen eines verbundenen Clients?

Ich habe ein eingebettetes Linux-Betriebssystem, das von Grund auf mit Yocto entwickelt wurde. Dieses kommuniziert mit einem Windows XP/7-Client. Das eingebettete Betriebssystem betreibt einen DHCP-Server und gibt dem Client eine Adresse. Das Problem ist, dass der Client „gesperrt“ ist und viele Standardports und -methoden blockiert. Wenn das eingebettete System den Client erkennt, startet mein Startskript den Server, der das System testet; andernfalls führe ich per Kexec ein anderes Betriebssystem aus.Wie lässt sich am besten feststellen, ob beim Systemstart (unter Linux) ein über Ethernet verbundener Client vorhanden ist, ohne die Startzeit des Systems erheblich zu verlängern?

Hier sind die Dinge, die ich versucht habe und was nicht funktioniert:

  1. ICMP-Pakete werden auf der Clientseite blockiert, daher funktioniert herkömmliches Pingen nicht
  2. Arping funktioniert (ebenso wie Nmap mit ARP-Scan), aber Windows-Clients versuchen, „intelligent“ zu sein und wählen sich aus, sodass es 20–25 Sekunden dauert, bis die Verbindung tatsächlich hergestellt ist, was inakzeptabel ist; im Idealfall sollte es in 5–10 Sekunden etwas erkennen. Kann ich auf der Serverseite etwas einstellen, um dies zu beschleunigen? Es wird immer zuerst in diese Partition gebootet, daher ist die schnellste Lösung die beste Lösung.
  3. ifplugd, ethtool, netplugd und das Prüfen von /sys/class/net/eth0/operstate und /sys/class/net/eth0/carrier funktionieren nicht, da der Ethernet-Port des eingebetteten Systems mit einem internen Switch verbunden ist und daher hardwaremäßig immer aktiv und verbunden ist.
  4. Eine zukünftige Lösung wird wahrscheinlich Bonjour auf der Clientseite und Avahi auf dem Server verwenden, sodass wir ein verbindungsloses Protokoll haben. Die Implementierung wird jedoch einige Zeit in Anspruch nehmen und ich brauche eine Übergangslösung, da die Genehmigung für jede Software, die wir der Clientseite hinzufügen, sehr lange dauert.

Auch hier kann ich auf der Clientseite nichts tun, da diese Einheiten von einem anderen Unternehmen konfiguriert und gesperrt sind. Was kann ich also sonst noch auf dem Server versuchen, um festzustellen, ob der Client vorhanden ist?

Antwort1

Sie sagten also, es gäbe einen internen Switch. Können Sie auf die Verwaltung dieses Switches zugreifen? Entweder über I2C (integrierter Switch) oder SNMP?

Sie geben an, dass Ihr eingebettetes Betriebssystem einen DHCP-Server betreibt. Wenn ein Client eine DHCP-Anfrage stellt, ist das nicht ein Beweis dafür, dass der Client anwesend und erreichbar ist?

Ich habe keine Ahnung, was Sie mit „smart“ und „Dialing Out“ meinen. Wenn der Windows-Rechner überhaupt über Ethernet kommunizieren soll, muss er auf ARP reagieren. Bisher scheint ARP die beste Option zu sein.

verwandte Informationen