Resolve-DnsName: nslookup für PowerShell


    Tags: , ,

    Domain Name ServiceFür das Troubleshooting von DNS-Problemen hat sich nslookup als ein nützliches Tool etabliert. Es existiert auf mehreren Plattformen, darunter auch auf Windows. Mit dem PowerShell-Cmdlet Resolve-DnsName gibt es jedoch eine Alternative, die auch proprietäre Microsoft-Protokolle für die Namens­auflösung wie NetBIOS oder LLMNR berücksichtigt.

    Bei nslookup handelt es sich um einen DNS-Client, mit dem sich die Namensauflösung überprüfen und anhand mehrerer Parameter anpassen lässt. Für die simple Abfrage eines Hostname kann man diesen gleich als Parameter übergeben:

    nslookup dc.contoso.com

    Interaktiver Modus von nslookup

    Für Operationen, die mehrere Befehle erfordern, nutzt man das Dienstprogramm meist im interaktiven Modus. Dazu ruft man es ohne Argumente auf und landet dann auf einem Prompt. Durch Eingabe von Help kann man sich alle verfügbaren Befehle anzeigen lassen.

    Befehlsübersicht für nslookup

    Tippt man hier einfach den Namen eines Hosts ein, dann liefert nslookup den A- bzw. AAAA-Eintrag des Rechners. Über Befehle wie

    set type=CNAME

    kann man aber auch andere Records abfragen, darunter CNAME, MX, NS oder PTR.

    In Dual-Stack-Umgebungen, in denen IPv6 nicht ordentlich gepflegt wird und bei denen die Clients keinen korrekten DNS-Server für IPv6 konfiguriert haben, steigt nslookup grundsätzlich aus. Scheitert die Abfrage über IPv6, dann verzichtet es auf einen weiteren Versuch über IPv4.

    Ist ein DNS-Server über IPv6 nicht erreichbar, dann scheitert nslookup mit einer Zeitüberschreitung.

    Resolve-DnsName

    PowerShell verfügt über ein eigenes Cmdlet, das die Aufgaben von nslookup übernehmen kann. Anders als das herkömmliche Dienstprogramm bietet es keinen interaktiven Modus, vielmehr übergibt man Resolve-DnsName alle notwendigen Informationen als Parameter.

    Ein weiterer Unterschied besteht darin, dass sich das Cmdlet nicht durch eine ungültige IPv6-Konfiguration irritieren lässt, sondern in diesem Fall eine Abfrage über IPv4 nachlegt.

    Im einfachsten Fall ruft man das Cmdlet mit dem gewünschten Hostname als Parameter auf:

    Resolve-DnsName dc.contoso.com

    Möchte man die Abfrage an einen bestimmten DNS-Server richten, dann gibt man diesen über den Parameter Server an:

    Resolve-DnsName dc.contoso.com -Server 192.168.0.1

    Alternativ zur IP-Adresse kann man auch den Hostname des DNS-Servers verwenden.

    Wenn man ein Problem bei der Namens­auflösung auf DNS reduzieren und verhindern möchte, dass diese bei einem Scheitern etwa über NetBIOS erfolgt, dann fügt man den Schalter DnsOnly an:

    Resolve-DnsName -Name dc.contoso.com -DnsOnly

    Als Störfaktor bei der Untersuchung von DNS-Problemen kann sich auch eine hosts-Datei bemerkbar machen. Diese kann man mit dem Schalter NoHostsFile ignorieren:

    Resolve-DnsName -Name dc.contoso.com -NoHostsFile

    Umgekehrt kann man über NetbiosFallback oder LlmnrFallback dafür sorgen, dass bei einer gescheiterten DNS-Auflösung NetBIOS oder Link Local Multicast Name Resolution (LLMNR) zum Zug kommen.

    Aufruf von Resolve-DNSName mit verschiedenen Parametern

    Schließlich ist es sogar möglich, nur die Namensauflösung über diese Legacy-Protokolle zu untersuchen, indem man sie über die Parameter LlmnrOnly oder LlmnrNetbiosOnly erzwingt. Eine interessante Option bietet zudem der Schalter CacheOnly für den Fall, dass ein DNS-Server aktuell nicht erreichbar ist oder der Cache veraltete Einträge enthält.

    Wie nslookup liefert Resolve-DnsName standardmäßig den A- bzw. AAAA-Record für den Host. Über den Parameter Type kann man aber auch andere DNS-Einträge abfragen.

    Zusammenfassung

    Das altgediente nslookup erfüllt nach wie vor seinen Zweck, und zwar nicht nur für die einfache Auflösung eines Hostname, den man ihm als Parameter übergibt. Es bietet darüber hinaus einen interaktiven Modus, in dem man mehrere Befehle absetzen kann, denen man nicht jedes Mal ein nslookup voranstellen muss.

    Mehr Möglichkeiten bietet PowerShell mit Resolve-DnsName, das auch ältere Microsoft-Protokolle für die Namensauflösung untersuchen kann. Es kann auch gezielt die hosts-Datei ausblenden oder sich nur aus dem Cache bedienen.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut

    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Ähnliche Beiträge

    Weitere Links