Forum: PC-Programmierung Geräte im LAN finden - Strategie ok?


von Frank (Gast)


Lesenswert?

Es geht darum, in einem LAN die IP-Adresse von Geräten auf 
Mikrocontroller-Basis herauszufinden, deren MAC-Adresse bekannt ist, die 
IP-Adresse wegen des Einsatzes von DHCP zunächst jedoch nicht.

Ich habe etwas experimentiert (Win und Mac) und eine Strategie gefunden, 
die brauchbar scheint - zu der ich die werte Gemeinde jedoch auf ihre 
Stichhaltigkeit befragen möchte :-)

1. 10 ... 20 mal Ping auf broadcast, also LAN.LAN.LAN.255
2. ein par Sekunden warten
3. Ausführen von arp -a und Parsen der Ergebnisse

So erscheinen im Prinzip alle Hosts im LAN, oder nicht?  Ohne den Ping 
habe ich festgestellt, fehlen einfach einzelne Teilnehmer, zu denen der 
Rechner, auf dem ich das ausführe, bisher keine Verbindung hatte ...

Andere Vorschläge? Kritik? Danke für Tips ...

von Max M. (jens2001)


Lesenswert?

Einfach mal nach "IP Scanner" googlen.

Findest dann sowas wie
http://www.advanced-ip-scanner.com/de/

von Peter II (Gast)


Lesenswert?

Frank schrieb:
> Andere Vorschläge? Kritik? Danke für Tips ...

> 1. 10 ... 20 mal Ping auf broadcast, also LAN.LAN.LAN.255
dafür müssen sie aber im gleichen Subnetz sein.

> 3. Ausführen von arp -a und Parsen der Ergebnisse
arp -a parsen ist schon mal murks, was ist wenn sich mal die Ausgabe 
ändert?


Warum nicht einen Standard verwenden:
http://de.wikipedia.org/wiki/Bonjour_(Apple)

von Frank (Gast)


Lesenswert?

Max Mustermann schrieb:
> Einfach mal nach "IP Scanner" googlen.
>
> Findest dann sowas wie
> http://www.advanced-ip-scanner.com/de/

Dass es Software gibt, die das kann ist keine Frage. Ich brauch die 
Funktion innerhlab einer eigenen App - da nützt mir das wenig.

von Frank (Gast)


Lesenswert?

Peter II schrieb:
> Frank schrieb:
>> Andere Vorschläge? Kritik? Danke für Tips ...
>
>> 1. 10 ... 20 mal Ping auf broadcast, also LAN.LAN.LAN.255
> dafür müssen sie aber im gleichen Subnetz sein.

Das genügt für meine Anforderungen, davon gehe ich aus ...

>> 3. Ausführen von arp -a und Parsen der Ergebnisse
> arp -a parsen ist schon mal murks, was ist wenn sich mal die Ausgabe
> ändert?

Ja, das ist prinzipiell ein Problem, aber solche Systemtools ändern sich 
nicht so wahnisinnig schnell. Arp hat sich z.B. seit Win2000 nicht 
geändert. Hält sich m.E. im Rahmen normaler Updatezyklen ...

> Warum nicht einen Standard verwenden:
> http://de.wikipedia.org/wiki/Bonjour_(Apple)

Weil unter Windows nicht damit zu rechnen ist, dass das jeder 
installiert hat - kommt meist nur mit iTues auf Windows-Rechner, was im 
industriellen Umfeld eher selten sein dürfte. Unter Mac OS ist es 
systemimmanent. Ich will das für ein Konfigurationstool für Hardware auf 
Mikrocontroller-Basis verwenden.

von bernd (Gast)


Lesenswert?

sind WMI-Abfragen erlaubt? Hier sind die Möglichkeiten umfangreicher

von bernd (Gast)


Lesenswert?

anbei vorgefertigte Standardabfragen, welche du dir anpassen kannst

1. Active DNS - WMI Query - SELECT DNSServerSearchOrder FROM 
Win32_NetworkAdapterConfiguration where IPEnabled = 'True'
2. Active IP - WMI Query - SELECT IPAddress FROM 
Win32_NetworkAdapterConfiguration where IPEnabled = 'True'
3. Active MAC Address - WMI Query - SELECT MACAddress FROM 
Win32_NetworkAdapterConfiguration where IPEnabled = 'True'
4. Active Subnet Mask - WMI Query - SELECT IPSubnet FROM 
Win32_NetworkAdapterConfiguration where IPEnabled = 'True'
5. Manufacturer - WMI Query - SELECT Manufacturer FROM 
Win32_ComputerSystem
6. Model - WMI Query - SELECT Model FROM Win32_ComputerSystem
7. OS and Edition - Registry Value - 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows 
NT\CurrentVersion\ProductName
8. OS Architecture - WMI Query - SELECT OSArchitecture FROM 
Win32_OperatingSystem
9. OS Architecture XP2K3 - Registry Value - 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session 
Manager\Environment\PROCESSOR_ARCHITECTURE
10. Workgroup - WMI Query - SELECT Workgroup FROM Win32_ComputerSystem

von Christian B. (casandro)


Lesenswert?

Ob das in Deiner ARP-Tabelle drin ist, hängt von Deiner 
IP-Impementierung ab. Und wenn Du einen transparenten Router hast 
(selten aber so was gibts) kriegst Du im bsten Fall nur lauter gleiche 
Einträge.

Die normale Möglichkeit ist per Broadcastpaket. Sprich Du schickst ein 
Broadcastpaket und die Geräte antworten. Da gibts jede Menge 
unterschiedlicher Standards die alle ähnlich mistig sind.

Was möglich, jedoch unschön ist, ist einfach einen Portscan zu machen, 
sprich einfach alle möglichen IP-Adressen durchzuprüfen.

von Georg (Gast)


Lesenswert?

Frank schrieb:
> Es geht darum, in einem LAN die IP-Adresse von Geräten auf
> Mikrocontroller-Basis herauszufinden, deren MAC-Adresse bekannt ist, die
> IP-Adresse wegen des Einsatzes von DHCP zunächst jedoch nicht.

Wenn das deine eigenen Konstruktionen sind, kannst du denen ja eine 
Portnummer verpassen, auf der sie mit ihrer Identifikation antworten, 
und danach scannen. Sehr unwahrscheinlich, dass Fremdgeräte in gleicher 
Weise antworten.

Georg

von Frank (Gast)


Lesenswert?

Georg schrieb:
> Frank schrieb:
>> Es geht darum, in einem LAN die IP-Adresse von Geräten auf
>> Mikrocontroller-Basis herauszufinden, deren MAC-Adresse bekannt ist, die
>> IP-Adresse wegen des Einsatzes von DHCP zunächst jedoch nicht.
>
> Wenn das deine eigenen Konstruktionen sind, kannst du denen ja eine
> Portnummer verpassen, auf der sie mit ihrer Identifikation antworten,
> und danach scannen. Sehr unwahrscheinlich, dass Fremdgeräte in gleicher
> Weise antworten.
>
> Georg

Wird wohl am Ende das Einfachste und Sicherste sein, wenn auch irgendwie 
"unelegant" ... seufz ... trotzdem Danke für die Tips.

von Gerd E. (robberknight)


Lesenswert?

Viele Windows-Maschinen antworten "dank" der ach so tollen 
Windows-Firewall und ihrer Standardkonfiguration nicht auf Ping.

Wenn die Netzmaske 16 Bit und größer ist kannst Du per ARP einfach alle 
Adressen nacheinander abfragen. Das geht auch mit Windows Firewall etc..

Vor allem bei den gängigen 24 Bit Netzmasken ist das schnell durch und 
zuverlässig. Bei 8 Bit Netzen und ähnlichem ist das natürlich nicht mehr 
realistisch.

von Peter II (Gast)


Lesenswert?

Gerd E. schrieb:
> Viele Windows-Maschinen antworten "dank" der ach so tollen
> Windows-Firewall und ihrer Standardkonfiguration nicht auf Ping.

Windows soll ja auch nicht Antworten, er will ja "seine" Geräte finden.

von (prx) A. K. (prx)


Lesenswert?

Frank schrieb:
> 1. 10 ... 20 mal Ping auf broadcast, also LAN.LAN.LAN.255

Ein Gerät ist nicht verpflichtet, auf ICMP mit Broadcast-Adresse zu 
reagieren. Aus Sicherheitsgründen tun das einige auch nicht.

von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Ein Gerät ist nicht verpflichtet, auf ICMP mit Broadcast-Adresse zu
> reagieren. Aus Sicherheitsgründen tun das einige auch nicht.

er wird wohl wissen was seine Geräte machen und was nicht. Er hat es ja 
sogar schon getestet also scheint es auch zu gehen.

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> er wird wohl wissen was seine Geräte machen und was nicht. Er hat es ja
> sogar schon getestet also scheint es auch zu gehen.

Dann könnte er auch gleich Nägel mit Köpfen machen und den passenden 
Standard "Inverse ARP" implementieren. Das läuft als Erweiterung 
gewöhnlichen ARPs, mit anderem Opcode für MAC=>IP statt IP=>MAC: 
http://tools.ietf.org/html/rfc2390

von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Dann könnte er auch gleich Nägel mit Köpfen machen und den passenden
> Standard "Inverse ARP" implementieren. Das läuft als Erweiterung
> gewöhnlichen ARPs, mit anderem Opcode für MAC=>IP statt IP=>MAC:
> http://tools.ietf.org/html/rfc2390

dann muss er aber alle MACs ausprobieren.


Ich würde die Geräte einfach einen UDP-Broadcast an einen bestimmen 
Ports jedem Minuten senden lassen. Dann muss er nur den Port öffnen 
maximal 1minute warten und schon hat er alle Geräte im Netzt gefunden.

von (prx) A. K. (prx)


Lesenswert?

Ein anderer Weg besteht im "Gratuitous ARP". Die Mikrocontroller senden 
zyklisch einen ARP Frame und sorgen dadurch dafür, die ARP Caches stets 
aktuell sind.
http://de.wikipedia.org/wiki/Address_Resolution_Protocol#Gratuitous_ARP

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> dann muss er aber alle MACs ausprobieren.

Vorgabe war, dass die MAC jedes Gerätes bekannt ist. Beispielsweise weil 
sie drauf steht.

von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Vorgabe war, dass die MAC jedes Gerätes bekannt ist. Beispielsweise weil
> sie drauf steht.

ja, aber auch jede IP ist bekannt und man kann sich immer noch nicht 
sinnvoll mal schnell durchprobieren.

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> Ich würde die Geräte einfach einen UDP-Broadcast an einen bestimmen
> Ports jedem Minuten senden lassen.

Kann lustige Effekte bringen, wenn der Port irgendwo im Netz zufällig 
anderweitig belegt ist. Mit dieser Methode macht man sich beim Netzadmin 
unbeliebt.

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> ja, aber auch jede IP ist bekannt

Nur dem DHCP Server und dem Mikcocontroller, nicht aber dort, wo er das 
wissen will. Und wenn der DHCP kein SNMP kann...

Aufgabe war:

Frank schrieb:
> in einem LAN die IP-Adresse von Geräten auf
> Mikrocontroller-Basis herauszufinden, deren MAC-Adresse bekannt ist,

Also MAC Adresse bekannt, IP unbekannt. Exakt dafür ist InvARP da.

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Kann lustige Effekte bringen, wenn der Port irgendwo im Netz zufällig
> anderweitig belegt ist. Mit dieser Methode macht man sich beim Netzadmin
> unbeliebt.

Wenn ein anders Programm auch Daten reagiert die nicht für es bestimmt 
ist Dann stimmt eh etwas nicht. Damit muss man immer rechnen.
Und so lange nicht in der Sekunde 100 Broadcast verschickt werden, 
sollte ein admin damit kein Problem haben.

von (prx) A. K. (prx)


Lesenswert?

A. K. schrieb:
> Kann lustige Effekte bringen, wenn der Port irgendwo im Netz zufällig
> anderweitig belegt ist. Mit dieser Methode macht man sich beim Netzadmin
> unbeliebt.

PS: Es sei denn man macht das auch wieder offiziell. Also schaut mal bei 
UPNP/SSDP rein, statt eigene Brötchen zu backen.

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
> Wenn ein anders Programm auch Daten reagiert die nicht für es bestimmt
> ist Dann stimmt eh etwas nicht.

Gibt u.U. einen irritierten Syslog-Eintrag des betreffenden Daemons, 
auch dann wenn dabei nichts in die Luft fliegt.

In seinem eigenen Netz kann man machen was man will. Will man Geräte 
verkaufen, sollte man bei solchen Strategien vorsichtig sein. Auch 
unangekündigte IP-Scans können sauer aufstossen.

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Frank schrieb:
> Wird wohl am Ende das Einfachste und Sicherste sein, wenn auch irgendwie
> "unelegant"

Ich schätze, dass das die Hersteller von Printservern so machen - 
MAC-Adressen muss man nicht eingeben, nach Start des Tools werden alle 
Printserver der Firma im Netz angezeigt, auch die mit "falscher" IP. Ist 
auch bei Comport-Servern usw. üblich.

Georg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.