Tags: PowerShell, DNS, Troubleshooting
Gibt es Probleme bei der Namensauflösung, dann beginnt das Troubleshooting meistens mit ein paar Standardprüfungen der Konfiguration. Sie testen beispielsweise, wie der lokale Rechner oder ein DNS-Server einen bestimmten Namen auflösen oder ob eine fehlerhafte bzw. veraltete HOSTS-Datei vorliegt. PowerShell kann diese Fehlersuche unterstützen.
Zu den vielen neuen Cmdlets in Windows 8 und Server 2012 zählt eine ganze Sammlung für den Zugriff auf den DNS-Client. Einige davon eignen sich zur Diagnose von DNS-bedingten Verbindungsproblemen, wobei sie in der Lage sind, Tools wie nslookup oder ipconfig zu ersetzen.
DNS-Server eines Netzwerk-Interfaces anzeigen
Ein erster Schritt besteht häufig darin, dass man bei falscher oder gar nicht funktionierender Namensauflösung nachsieht, welcher DNS-Server für ein bestimmtes Interface eingetragen ist. Dies kann man mit
Get-DnsClientServerAddress
tun. Wenn man nur an solchen für IPv4-Adressen interessiert ist, dann gibt man noch den Parameter -AddressFamily ipv4 an. Soll die Zuweisung der IP-Konfiguration manuell erfolgen, dann kann man den zuständigen DNS-Server mit Hilfe von Set-DnsClientServerAddress ändern. Dazu entnimmt man der Ausgabe von Get-DnsClientServerAddress den Index des Netzwerkadapters und gibt etwa folgenden Befehl ein:
Set-DnsClientServerAddress -InterfaceIndex 9 -ServerAddresses ("8.8.8.8","208.67.222.222")
Prüfung von Cache, DNS-Server und HOSTS
Sind für einen Adapter die korrekten DNS-Server eingestellt, dann kann man bei weiter bestehenden Problemen prüfen, aus welcher Quelle die falsche IP-Adresse geliefert wird. Diese Aufgabe übernimmt Resolve-DnsName.
Es kann mit Hilfe verschiedener Parameter gezielt die Einträge im DNS-Cache oder im DNS-Server abfragen. Zuständig sind dafür die Parameter -CacheOnly und -DnsOnly:
Resolve-DnsName -DnsOnly www.windowspro.de
Will man einen Namen von einem bestimmten DNS-Server auflösen lassen, dann gibt man diesen über den Parameter -Server an.
Verwendet man die Option -CacheOnly und es stellt sich heraus, dass der Cache veraltete bzw. falsche Einträge enthält, dann kann man ihn mit dem Aufruf von
Clear-DNSClientCache
löschen.
Möchte man die Einträge in der HOSTS-Datei ignorieren, dann nutzt man zusätzlich den Schalter -NoHostsFile. Bewirkt dieser eine korrekte Namensauflösung, dann liegt offenbar für den betreffenden Namen ein falscher HOSTS-Eintrag vor.
Cache auslesen
Hilfreich für die Fehlersuche kann ein Blick in den lokalen DNS-Cache sein. Diesen erlaubt das Cmdlet Get-DnsClientCache. Möchte man zum Beispiel alle Einträge aus der Domäne facebook.com anzeigen, dann könnte man dies mit
Get-DnsClientCache | where{$_.name -like "*facebook.com"}
tun.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
Weitere Links