IP Adressen im Netzwerk finden, auch wenn deren Firewall aktiviert ist
Einen schnellen Ăberblick ĂŒber alle aktiven GerĂ€te im Netzwerk liefern - neben der VerwaltungsoberflĂ€che des Routers - Befehle in der Eingabeaufforderung, in PowerShell oder spezielle IP-Scanner. 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.
Netzwerk Scan in 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Ă€te | Alle GerĂ€te im Netzwerk mittels Ping-Befehl kontaktieren, damit der ARP-Cache befĂŒllt wird. |
---|---|
ARP-Cache auslesen | Der Befehl Get-NetNeighbor zeigt den ARP-Cache und somit alle kontaktierten GerÀte des lokalen Netzwerks. |
Resolve-DnsName | ZusĂ€tzlich zur IP-Adresse kann mit Resolve-DnsName der Hostnamen zur GerĂ€teliste hinzugefĂŒgt werden. |
Out-GridView | Out-GridView in PowerShell zeigt die gesammelten Daten in einer interaktiven Tabelle. |
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:
#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:
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:
Hintergrund: Netzwerk und Befehle im Detail
Was ist der ARP-Cache (Address Resolution Protocol)?
Rechner, die sich im selben IP Netzwerk â als Beispiel im Subnetz 192.168.0.x - befinden, kommunizieren direkt miteinander und benötigen dazu kein Gateway (=Router). FĂŒr die direkte Kommunikation werden die eindeutigen Netzwerkadressen der GerĂ€te = MAC-Adressen verwendet. Damit die MAC-Adressen nicht stĂ€ndig neu abgefragt werden mĂŒssen, werden diese von jedem GerĂ€t eine gewisse Zeit im âARP-Cacheâ behalten. Der ARP-Cache 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.
Wie kann der ARP-Cache mit Windows PowerShell ausgelesen werden?
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:
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 zum Beispiel 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.
Wie kann der Hostname in Windows PowerShell ausgelesen werden?
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: Netzwerkadressen in der Eingabeaufforderung auslesen
Â
In der Eingabeaufforderung alle Adressen des kompletten Netzes mit einer Zeile anpingen?
Der Ping-Befehl kann in der Eingabeaufforderung mit folgender Befehlszeile mehrfach in einer Schleife ausgefĂŒhrt werden:Â
for /l %i in (1,1,255) DO @ping 192.168.0.%i -n 1 | find "Bytes="
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 Befehl Get-Netneighbor kann der ARP-Cache in der Eingabeaufforderung mittels arp -a
angezeigt 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.Â
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
(for /l %i in (1,1,255) DO start /min ping 192.168.0.%i -n 1) && timeout 10 && arp -a
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)
Wie können NetzwerkgerÀte im Windows-Explorer angezeigt werden?
Die einfachste Variante, um GerĂ€te im Netzwerk anzuzeigen, ist die Windows Explorer Option: âNetzwerkerkennung und Dateifreigabe aktivierenâ. Windows 10/11 listet damit im Explorere GerĂ€te im lokalen Netzwerk auf.
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.Â
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.
{{percentage}} % positiv
DANKE fĂŒr deine Bewertung!
Fragen / Kommentare
(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]
User: Missyip Werden im IP Range auch GerÀte angezeigt die nichtmehr aktiv sind? Also Mal angemeldet waren?
Theoretisch ja, wenn sich diese noch im ARP-Cache befinden.
Beitrag erstellt von Bernhard
Hallo, kann man die Hostname-Abfrage eventuell auch in das PING-Skript direkt integrieren?
ich bin Chris Bob und mach grd eine Weiterbuidung als Netzwerktechniker LAN. Ich brauch bitte hilfe an meinem aufgabe zum thema Grundlagen der IPv4-Adressierung was sind die Hauptaufgaben ds IP-Protokolls? A:End zu End-Adressirung B: Flusskontrolle C : Fehlerkontrolle D:Fragmentierung bei Bedarf E:)End zu End-Verbindungsaufbau Lg Chris Bob
User: Para Ich suche vergebens nach einem CMD Befehl fĂŒr die folgende Anwendung: Ich kenne den DNS Namen von einem anderen PC im eigenen LAN Netzwerk. Ăber die Eingabe des CMD Befehls mit DNS Namen will ich die IP Adresse des PCs angezeigt bekommen. Ipconfig und andere Befehle zeigen mir nur meinen eigenen PC an
User: derhacker gehtnich bekommen meldung i kann syntaktisch an dieser stelle nicht verwendet werden
User: ju ich dachte es gĂ€be hier eine Auflistung von GerĂ€ten die eine ip adresse haben den dies brauche ich fĂŒr die schule.
Wer braucht nicht die Lehrerzugänge ? ihr könnt euch die IP adressenbefehle von diversen Webseiten rauskopieren
Beitrag erstellt von anonym
User: CNS Kann mir jemand helfen, IP Adresse von einem fake Profil auf Instagram rauszufinden. wenn ja bitte melden aydincansu@hotmail.de. Ich bin auch gerne bereit was zu zahlne. Danke