Wie kann ich Geräte im Netzwerk identifizieren?

Wer einen schnellen Überblick über alle aktiven Geräte in einem Netzwerk bekommen will, kann dies mit der Netzwerkerkennung, mit Befehlen in der Eingabeaufforderung, in PowerShell oder mit speziellen IP-Scannern. Die zu Beginn dieses Beitrages zusammengestellten PowerShell-Befehle geben einen schnellen Überblick über alle Geräte im lokalen Netzwerk und machen spezielle Programme für das Scannen des Netzwerks eventuell überflüssig. Wer die Befehle gerne in Aktion sehen will, kann dies in meinem YouTube-Video. Für das Erweitern des eigenen Netzwerks, siehe auch: Heimnetzwerk einrichten: LAN und WLAN erweitern | verbessern.

PowerShell: Liste aller Netzwerkgeräte

Der ARP-Cache listet alle Geräte, mit denen der PC kürzlich eine Netzwerkverbindung hatte. Für eine vollständige Auflistung aller Geräte im lokalen Netzwerk hilft es daher, vorab alle möglichen Adressen zu kontaktieren:

Ping auf alle GeräteAlle Geräte im Netzwerk mittels Ping-Befehl kontaktieren, damit der ARP-Cache befüllt wird.
ARP-Cache auslesenDer Befehl Get-NetNeighbor zeigt den ARP-Cache und somit alle kontaktierten Geräte des lokalen Netzwerks.
Resolve-DnsNameZusätzlich zur IP-Adresse kann mit Resolve-DnsName der Hostnamen zur Geräteliste hinzugefügt werden.
Out-GridViewOut-GridView in PowerShell zeigt die gesammelten Daten in einer interaktiven Tabelle. 

Einfache Befehle in PowerShell können schnell eine Liste aller Geräte im Netzwerk erstellen, auch wenn deren Firewall eingeschaltet ist.
Dazu muss keine Software installiert werden.

Die folgenden Befehle suchen nach allen vorhandenen Klasse C-Netzen, starten einen Ping auf deren Adressen (1..254) und zeigen die im ARP-Cache enthaltenen IP-Adressen inklusive Hostnamen als Out-GridView:

Wie kann ich Geräte im Netzwerk identifizieren?

#Foreach alle Klasse C:-Netze (/24)
$(Get-NetIPAddress | where-object {$_.PrefixLength -eq "24"}).IPAddress | Where-Object {$_ -like "*.*"} | % { 
    $netip="$($([IPAddress]$_).GetAddressBytes()[0]).$($([IPAddress]$_).GetAddressBytes()[1]).$($([IPAddress]$_).GetAddressBytes()[2])"
    write-host "`n`nping C-Subnet $netip.1-254 ...`n"
    1..254 | % { 
        (New-Object System.Net.NetworkInformation.Ping).SendPingAsync("$netip.$_","1000") | Out-Null
    }
}
#warte bis arp-cache: complete
while ($(Get-NetNeighbor).state -eq "incomplete") {write-host "waiting";timeout 1 | out-null}
#Hostname hinzufügen und Ergebnis anzeigen 
Get-NetNeighbor | Where-Object -Property state -ne Unreachable | where-object -property state -ne Permanent | select IPaddress,LinkLayerAddress,State, @{n="Hostname"; e={(Resolve-DnsName $_.IPaddress).NameHost}} | Out-GridView

Der Befehls-Block kann einfach in die Windows-PowerShell-Konsole eingefügt werden: Diesen dazu in die Zwischenablage kopieren (Strg+c).
Ein „Rechtsklick“ in der PowerShell fügt den Inhalt ein und startet die Befehle; die letzte Zeile muss dann noch mit „Enter“ bestätigt werden:

Wie kann ich Geräte im Netzwerk identifizieren?

 

Wie kann ich Geräte im Netzwerk identifizieren?

Sollte die Variante mit PowerShell aus irgendeinem Grund nicht funktionieren, kann auch die weiter unten beschriebene Zeile in der Eingabeaufforderung verwendet werden: Eingabeaufforderung-ping-arp.

YouTube-Video

In folgendem YouTube-Video zeige ich die Befehle in Aktion:

Netzwerk und Befehle im Detail

ARP-Cache (Address Resolution Protocol)

Rechner, die sich im selben IP Netzwerk – als Beispiel im Subnetz 192.168.0.x - befinden, kommunizieren direkt miteinander, benötigen für die Verbindung also kein Gateway (=Router). Für die direkte Kommunikation wird auf den Geräten ein „ARP-Cache“ befüllt, dieser listet alle IP- und MAC-Adressen des lokalen Netzes, mit denen der Computer eine Verbindung versucht hat, auch wenn diese beim eigentliche Verbindungsaufbau von der Firewall blockiert wurde.

Der Inhalt des ARP-Cache kann in PowerShell über den Befehl „Get-NetNeighbor“ ausgelesen werden:

Get-NetNeighbor | Where-Object -Property state -ne Unreachable | where-object -property state -ne Permanent | Out-GridView

In Kombination mit Out-GridView werden die Ergebnisse in einem Fenster ausgegeben, in dem diese durchsucht oder gefiltert werden können:

Wie kann ich Geräte im Netzwerk identifizieren?

Get-NetNeighbor verhält sich gleich dem Arp-Befehl der Eingabeaufforderung. Eine Möglichkeit einen Verbindungsaufbau auf ein Gerät zu initiieren ist es, dieses anzupingen:

Ping auf eine Adresse

Ein Ping wird bekanntlich eingesetzt, um eine Verbindung zu einem einzelnen Rechner im Netzwerk zu prüfen: ping ZIELADRESSE, siehe auch:  cmd Befehle Netzwerk (IP) - Beispiele Windows. Dabei spielt es keine Rolle, ob sich das Gerät im lokalen LAN oder in einem anderen Subnetz befindet, also über das Gateway (Router) erreichbar ist. Moderne Betriebssysteme, wie z.B. Windows 10 / 11, blockieren die Antwort auf einen Ping-Befehl: ICMP wird von der Windows Firewall geblockt. Befindet sich der Rechner im selben Subnetz, wird die IP-Adresse bei dem gescheiterten Ping-Versuch dennoch in den ARP-Cache eingetragen, was wir uns zunutze machen können.  Denn, versuchen wir auf alle möglichen Adressen des Subnetz einen „Ping“, sollten alle Geräte im ARP-Cache gelistet werden:

Ping-Versuch auf alle Adressen

Die oben angeführten PowerShell-Befehle erkennen automatisch alle Klasse-C-Netzwerke (/24 oder Subnet-Mask 255.255.255.0) und startet einen Ping auf deren Adressen: 1-254. Dank „System.Net.NetworkInformation.Ping“  und „SendPingAsync“ läuft der Ping gleichzeitig auf alle Geräte und das Skript kann sehr schnell zur Anzeige des ARP-Cache wechseln. Wie bereits beschrieben, spielt es für das Befüllen des ARP-Cache keine Rolle, ob der Rechner auf den Ping antwortet, oder nicht: Hauptsache es findet ein Verbindungsversuch statt.

Um ein anderes Netz als /24 zu pingen muss „PrefixLength“, die Start- und End-Werte: „1..254“ und eventuell das Befüllen der Variable „$netip“ entsprechend angepasst werden. 

Ursprünglich habe ich den Ping mit Test-Connection und Start-Job getestet, der Overhead seitens PowerShell ist damit sehr hoch. PowerShell verbraucht mit Start-Job und Test-Connection relative viel CPU und RAM und benötigt ca. 2 Minuten um das Subnetz asynchron zu pingen, „System.Net.NetworkInformation.Ping“ und „SendPingAsync“ hingegen wenige Sekunden.

Hostname auslesen

Der Hostname kann mit dem Befehl „Resolve-DNSName“ herausgefunden werden:

PS C:\WINDOWS\system32> (Resolve-DnsName 192.168.1.191).NameHost
LGTV.lan

Im obigen Beispiel übergibt Get-NetNeighbor die IP Adresse an Resolve-DnsName und fügt diese vor der Ausgabe mit Out-GridView an die Anzeige hinzu.

Alternativ: in der Eingabeaufforderung

Wie kann ich Geräte im Netzwerk identifizieren?
 

das komplette Netz in einer Zeile pingen

Der Ping-Befehl kann auch mehrfach in einer Schleife ausgeführt werden:

for /l %i in (1,1,255) DO @ping 192.168.0.%i -n 1 | find "Bytes="

Wie kann ich Geräte im Netzwerk identifizieren?

for /l %i in (1,1,255) bedeutet: beginnend von 1 in 1er-Schritten bis 255 

@ping 192.168.0.%i -n 1 .. ist der eigentliche Ping Befehl (das @ unterdrückt die Ausgabe des Befehls) und mittels

| find "Bytes=" werden nur Zeilen, die „Bytes=" enthalten, die also auf den Ping antworten, angezeigt. 

Scan mit aktivierter Firewall im lokalen LAN

Alternativ zum PowerShell Get-Netneighbor kann der ARP-Cache in der Eingabeaufforderung mittels arp -aangezeigt werden. Da der ARP-Cache für jeden Eintrag ein Timeout besitzt, werden nur neue Verbindungen angezeigt. Zusätzlich kann der Cache mit arp -d gelöscht werden. 

Wie kann ich Geräte im Netzwerk identifizieren?

Damit also alle Geräte angezeigt werden, kann vorab wieder ein „Ping“ auf alle Geräte ausgeführt werden.

Die folgende Zeile in der Eingabeaufforderung startet einen Ping auf alle Adressen des kompletten Subnetz, wartet 10 Sekunden und zeigt den ARP-Cache an:

Folgende Befehlszeile listet auch Rechner des lokalen LAN, bei denen die Firewall eingeschaltet ist

Wie kann ich Geräte im Netzwerk identifizieren?

(for /l %i in (1,1,255) DO start /min ping 192.168.0.%i -n 1) && timeout 10 && arp -a

Wie kann ich Geräte im Netzwerk identifizieren?

Wie kann ich Geräte im Netzwerk identifizieren?

Wenn sich der Rechner in einem anderen Subnetz befindet, kann die Befehlszeile natürlich entsprechend angepasst werden: 

... in (1,1,255).. ping 192.168.0.%i .... 

Legende:

Start- und Endwert for /l %i in (1,1,255) bedeutet: beginnend von 1 in 1er-Schritte bis 255 

Subnetz also alles vor der Variable (1-255)

Etwas Vorsicht ist dabei geboten, da start /min alle 255 Pings gleichzeitig startet: Um den PC und das Netzwerk nicht zu überlasten, sollte der Start- und Endwert also nicht allzu groß gewählt werden. Mit den 255 Adressen eines Klasse-C-Netzes hatte ich bis dato aber kein Problem. 

Windows Explorer

Die einfachste Variante, um Geräte im Netzwerk anzuzeigen, ist die Windows Explorer Option: „Netzwerkerkennung und Dateifreigabe aktivieren“. Windows 10 listet damit Geräte im lokalen Netzwerk auf:

Wie kann ich Geräte im Netzwerk identifizieren?

Wie kann ich Geräte im Netzwerk identifizieren?

Die Option kann übrigens in der Systemsteuerung wieder deaktiviert werden: 

Systemsteuerung\Alle Systemsteuerungselemente\Netzwerk- und Freigabecenter\Erweiterte Freigabeeinstellungen 

Die Ausgabe der Netzwerkerkennung ist nicht vollständig, da Windows Rechner mit deaktivierter Netzwerkerkennung für andere nicht sichtbar sind.

Tools

Spezielle Tools liefern noch mehr Möglichkeiten und einen besseren Überblick als die Windows Bordmittel. Abhängig von der Arbeitsweise der Scanner liefern diese aber ähnliche Ergebnisse:

Advanced IP Scanner 

Sehr einfacher und schneller IP Scanner. Der Advanced IP Scanner zeigt Namen, IP, Hersteller und MAC-Adresse aller Geräte im lokalen Netzwerk. Bei meinen Tests konnte der Advanced IP Scanner auch Windows 10 Rechner des lokalen Subnetz mit aktivierter Firewall erkennen. 

Wie kann ich Geräte im Netzwerk identifizieren?

Der Scanner liefert ähnliche Ergebnisse wie unsere ARP-Abfrage, zusätzlich aber noch den Hostnamen und anhand der MAC-Adresse den Hersteller. Weitere Informationen zur MAC-Adresse und zum Hersteller findest du hier:  MAC-Adresse des PCs herausfinden - anzeigen. 

Download / Version, siehe: Advanced IP Scanner

Ursprünglich habe ich hier auch noch den Angry IP Scanner vorgestellt, nachdem dieser als Voraussetzung JAVA benötigt, will ich den Scanner hier nicht mehr empfehlen.

Fazit

Die hier vorgestellten Befehle machen die Installation eines IP-Scanners für einen schnellen Überblick überflüssig. Eine einzige Befehlszeile in der Eingabeaufforderung oder eine Handvoll PowerShell-Befehle reichen, um alle Netzwerkgeräte im lokalen Netzwerk oder in einem anderen Subnetz aufzulisten. Mehr Komfort und eventuell mehr Details liefern dennoch spezielle Programme. Wer ein bestimmtes Gerät näher unter die Lupe nehmen will, kann dieses auf deren Netzwerkservices testen, siehe: Portscan Befehle.

Welche Geräte sind am Router angemeldet?

Klicke in der Benutzeroberfläche auf Heimnetz > Netzwerk. Du erhältst eine Übersicht über alle Geräte, die mit deiner Fritzbox verbunden sind oder waren. Die Geräte werden entweder mit ihrem Hostnamen oder ihrer IP-Adresse angezeigt. Versuche, die Einträge den dir bekannten Geräten zuzuordnen.

Welches Gerät versteckt sich hinter der IP

Sie finde diese über den Start-Butten > Alle Programme > Zubehör > Eingabeaufforderung. Nach betätigen der Enter-Taste erschein im Fenster der Eingabeaufforderung der zu dieser IP-Adresse zugehörige Computername, die Arbeitsgruppe des Computers und sogar die MAC-Adresse des Rechners.

Wie finde ich das Gerät zur IP

IP-Adresse über Windows-Geräte finden.
Das Ausführen-Dialogfenster öffnen, indem ihr die Tastenkombination Windows+R drückt. Tippt cmd und bestätigt mit der Eingabetaste..
Tippt hier ipconfig ein und drückt erneut die Eingabetaste..
Jetzt sollte sich eine Liste mit allen verfügbaren Netzwerkverbindungen öffnen..

Kann man sehen wer alles im WLAN ist?

Im Menü links finden Sie den Eintrag "Heimnetz" und nach einem Klick den Unterpunkt "Netzwerk". Die sich öffnende Seite besteht aus drei Reitern: Der Punkt "Geräte und Nutzer" zeigt Ihnen dabei eine Liste der verbundenen Geräte.