Es spielt keine Rolle, wie einfach oder kompliziert Ihre Konfiguration ist – manchmal müssen Sie prüfen, ob Ihr DNS funktioniert, wie es sollte. Für genau diese Situationen haben Computer ein integriertes Dienstprogramm, das Ihnen dabei hilft. In diesem Beitrag stellen wir einige nützliche Befehle für die Eingabeaufforderung und PowerShell in Windows vor. Dabei gehen wir auch auf die Unterschiede zwischen den beiden Shells ein. Sind Sie bereit? Selbstverständlich, deshalb sind Sie schließlich hier, oder? Was mache ich mir vor? Sie haben diesen Teil natürlich übersprungen und sind schon bei den Befehlen. Na gut. Meinetwegen.
Anmerkung: Alle Beispiele stammen von einem System mit Windows 10.
Die erste Eingabeaufforderung (CMD) für das Betriebssystem Windows wurde 1981 von Microsoft eingeführt. Dieses Programm ist „unter“ Windows angesiedelt und gibt Ihnen als Nutzer mehr Kontrolle über Ihr System. Es wird in einem einfachen schwarzen Fenster ausgeführt, in dem ein Prompt erscheint. Wie dieser Prompt aussieht, hängt von Ihrem System ab. Beispiele sind: C:\> oder C:\Users\example. Mit diesem Tool können Sie einfache, einzeilige Befehle ausführen.
PowerShell wurde 2006 erstmals für Windows veröffentlicht. Diese Shell wird in einem blauen Fenster ausgeführt und nutzt cmdlets (ausgesprochen: Command-Lets) statt CMD- oder MS-DOS-Befehlen. Sie verfügt über ein Skriptsystem und integrierte Administratorfunktionen und kann Batch-Befehle ausführen. Das bedeutet, dass Sie in der PowerShell eine Folge von cmdlets (und nicht immer nur einen Befehl) ausführen können. Im Gegensatz zur Eingabeaufforderung ist die PowerShell auch nicht auf die Ausführung von Befehlszeilenanwendungen beschränkt. Die aktuelle Version läuft auf .Net 5.0, das auch Linux und macOS unterstützt. PowerShell kann auch auf eine Reihe von Bibliotheken auf verschiedenen Systemen zugreifen.
Es gibt mehrere Optionen zum Starten der Windows-Eingabeaufforderung. Sie können auf das Suchsymbol in der Taskleiste klicken und „Eingabeaufforderung“ oder „cmd“ eingeben. Oben im Suchfenster unter „Höchste Übereinstimmung“ sollte daraufhin die App angezeigt werden.
Wenn Sie – wie ich – gern Tastenkombinationen nutzen, können Sie mit Win + R den Run-Befehl aufrufen. Geben Sie „cmd“ ein und klicken Sie auf „OK“. Und schon sind Sie drin!
Zur PowerShell gelangen Sie auf dieselbe Weise wie zur Eingabeaufforderung. Geben Sie in der Suchfunktion oder im Run-Befehl statt „cmd“ einfach „PowerShell“ ein. Wenn Sie die Suchfunktion nutzen, werden Windows PowerShell und Windows PowerShell ISE als Optionen angeboten. Für diese Anleitung werde ich die einfachere Windows PowerShell nutzen.
Sie können auch die Tastenkombination Win + X nutzen, um ein Menü aufzurufen und von dort aus als Administrator auf die PowerShell zuzugreifen. Im selben Menü finden Sie auch den Run-Befehl und mehrere andere Dienstprogramme von Windows.
Übrigens: PowerShell ISE ist eine Hostanwendung für die PowerShell. ISE steht für „Integrated Scripting Environment“ (integrierte Skripting-Umgebung). Diese Option führt zu einer Oberfläche, wohingegen die einfache PowerShell so ähnlich aussieht wie die Eingabeaufforderung.
OK, kommen wir endlich zum Thema! Mit den folgenden Befehlen können Sie von der Windows-Eingabeaufforderung aus prüfen, ob Ihr DNS richtig funktioniert – und wenn nicht, warum nicht. Keine Sorge! Ich habe eine blühende Fantasie und werde mir einreden, dass Sie mein literarisches Meisterwerk oben nicht übersprungen haben.
Der Befehl „nslookup“ ist nützlich, wenn die DNS-Namensauflösung nicht richtig funktioniert. Er ist mit der Funktion „dig“ in macOS und Linux vergleichbar. Mit „nslookup“ können Sie die IP-Adresse für einen Host (oder den Domainnamen für eine IP-Adresse) finden. Sie können den Befehl auch nutzen, um sich Informationen über den DNS-Eintrag Ihrer Domain anzeigen zu lassen.
Ein nslookup-Befehl könnte zum Beispiel so aussehen: C:\Users\username>nslookup dnsmadeeasy.com
Mit diesem Befehl habe ich nach der IP-Adresse von DNS Made Easy gefragt. Als Antwort wurden mir die IPv6- und IPv4-Adressen der Domain angezeigt. Darüber steht „Non-authoritative answer“, weil die Information von einem rekursiven (und keinem autoritativen) DNS-Server stammt.
Wenn Sie eine IP-Adresse haben und den dazugehörigen Domainnamen finden wollen, können Sie eine umgekehrte DNS-Abfrage nutzen. Sie funktioniert wie im Beispiel oben, nur – Sie haben es erraten – umgekehrt:
C:\Users\username>nslookup 162.243.68.201
Nehmen wir an, Sie wollen den DNS-Nameserver einer Domain finden oder einen bestimmten Parameter in einer Befehlszeile setzen. Dazu können Sie den Befehl „set“ nutzen. Hier ein Beispiel:
C:\Users\username>nslookup
>set q=ns
>dnsmadeeasy.com
(Drücken Sie nach jedem Befehl die Eingabetaste.)
Das Ergebnis sollte in etwa so aussehen:
Sie können die Befehle „nslookup“ und „set“ auch nutzen, um die DNS-Einträge für Ihre Domain zu prüfen und Problemursachen zu finden. Der Ablauf ist derselbe wie oben, aber diesmal geben Sie an, welchen Eintrag Sie sehen möchten. Wenn Sie dabei Fehler oder Probleme finden, können Sie diese beheben. Im Screenshot unten habe ich mir die Einträge für MX, PTR und SOA anzeigen lassen, aber das sind natürlich nur Beispiele.
C:\Users\username>nslookup
>set q=mx
>dnsmadeeasy.com
(Drücken Sie nach jedem Befehl die Eingabetaste.)
Tipp: Wenn Sie mehrere Arten von Einträgen prüfen möchten, müssen Sie „nslookup“ nicht jedes Mal neu eintippen. Sie können nach dem ersten nslookup-Befehl weitere set-Befehle für die anderen Einträge ausführen. Diese Einträge müssen sich nicht einmal auf dieselbe Domain beziehen.
Tipp: Mitunter ist es hilfreich, den DNS-Cache zu leeren, bevor Sie Befehle ausführen. Geben Sie dazu „ipconfig/flushdns“ ein und drücken Sie auf ENTER. Danach sollte Ihr Cache leer sein.
Wenn Sie detailliertere Informationen über DNS in Ihrer Domain benötigen, können Sie das Kommando „debug“ nutzen. Es zeigt die im Header von DNS-Anfragen enthaltenen Informationen an (siehe Screenshot unten).
C:\Users\username>nslookup
>set debug
>example.com
Wenn Sie ein Netzwerkproblem vermuten, können Sie den Befehl „ping“ in der Eingabeaufforderung nutzen. Dieser Befehl misst die Latenz einer Verbindung zu Ihrer Zieladresse. Diese wird auch als Paketumlaufzeit oder Round Trip Time (RTT) bezeichnet. Zu Demonstrationszwecken nutze ich die öffentliche DNS-Adresse von Google, 8.8.8.8.
C:\Users\username>Ping 8.8.8.8
Das Ergebnis zeigt an, wie lange es dauert, ein Paket an die Zieladresse und zurück zu übertragen.
Ein weiterer nützlicher Befehl zur Diagnose von Netzwerkproblemen ist „tracert“ (ausgesprochen: traceroute). Er zeigt an, auf welchem Weg ein Paket von der Ausgangs- zur Zieladresse gelangt. Dies ist besonders bei der Untersuchung von Konnektivitätsproblemen nützlich. Im folgenden Beispiel nutze ich „tracert“ mit dem Domainnamen www.example.com und der dazugehörigen IP-Adresse.
C:\Users\username>tracert 127.0.0.1
C:\Users\username>tracert www.example.com
Dieser Befehl zeigt, über welche Etappen Pakete an ihr Ziel gelangen. Die angezeigten Etappen werden auch als Hops (Sprünge) bezeichnet. Neben der Anzahl der Hops wird auch die Paketumlaufzeit zu jeder der Etappen angezeigt. Das kann nützlich sein, wenn Sie die DNS-Geschwindigkeit verbessern oder ermitteln wollen, welche Router Verzögerungen verursachen.
Tipp: Die Eingabeaufforderung speichert die zuletzt genutzten Befehle. Wenn Sie einen bereits genutzten Befehl noch einmal ansehen oder erneut ausführen möchten, können Sie mit der Pfeiltaste nach oben zurückblättern. In der GIF unten sehen Sie ein Beispiel dafür.
Wenn Sie lieber mit Windows PowerShell arbeiten, kommen Sie jetzt auf Ihre Kosten. Die PowerShell-Äquivalente der oben genannten Windows-Befehle sind:
nslookup in PowerShell = Resolve-DnsName
PS C:\Users\username>Resolve-DnsName dnsmadeeasy.com (oder C:\Users\username>Resolve-DnsName 162.243.68.201)
Tipp: PowerShell vervollständigt ein cmdlet automatisch, wenn Sie die ersten Buchstaben eingeben und auf die Tabulatortaste drücken. So wird „reso“ + Tab zum Beispiel zu Resolve-DnsName vervollständigt. Das funktioniert auch mit anderen cmdlets wie Test-Connection. Geben Sie „test-con“ ein und drücken Sie die Tabulatortaste.
In PowerShell können Sie sich DNS-Einträge mit dem cmdlet Resolve-DnsName anzeigen lassen. Vervollständigen Sie das cmdlet mit dem Parameter „-type“, um anzugeben, welchen Eintrag Sie sehen möchten.
PS C:\Users\username>Resolve-DnsName dnsmadeeasy.com -Type MX (Passen Sie den Befehl für Ihre Anfrage an.)
Wie Sie sehen, war das Ergebnis für „-Type“ und „-type“ dasselbe, die Groß- oder Kleinschreibung spielt also keine Rolle.
Ping in PowerShell = Test-Connection
PS C:\Users\username>Test-Connection dnsmadeeasy.com
Das Ergebnis sieht anders aus als in der Eingabeaufforderung, aber Sie sehen auch hier den Absender (Source), den Empfänger (Destination) und die Paketumlaufzeit (Time).
Tracert in PowerShell = tracert – ja, in diesem Fall haben Befehl und cmdlet denselben Namen.
PS C:\Users\username>tracert example.com
Es gibt auch gute Online-Ressourcen für die DNS-Problemdiagnose. Diese Tools sind besonders nützlich, da sie von jedem Standort und beliebigen Geräten aus genutzt werden können. Das Tool DNS Lookup unseres Schwesterunternehmens Constellix kann DNS-Einträge abrufen und in Abhängigkeit von einem geografischen Standort prüfen. Sie können auch angeben, welcher Nameserver für die Anfrage genutzt werden soll. Das Tool unterstützt die Eintragsarten A, AAAA, CNAME, MX, TXT, NS, SOA und SRV.
DNS Lookup von Constellix bietet noch einige weitere Vorteile. Sie können in ein und derselben Sitzung mehrere Domains und/oder Nameserver prüfen und die Ergebnisse nach Domain, Eintragsart, Resolver oder Standort filtern. Zudem können Sie jede Prüfung ausweiten oder minimieren. Anschließend können Sie die Ergebnisse mit Ihrem Team teilen, indem Sie die URL kopieren und per E-Mail verschicken – das spart eine Menge Zeit und Arbeit.
Mit den hier beschriebenen Optionen können Sie Ihr DNS prüfen und etwaige Probleme diagnostizieren. Fassen wir das Wichtigste kurz zusammen: Sie können die Eingabeaufforderung, PowerShell oder Online-Tools nutzen, um DNS-Informationen wie Nameserver und DNS-Einträge abzurufen, aber jedes Tool hat eine andere Funktionsweise. In der Eingabeaufforderung können Sie nur einzeilige Befehle, in der PowerShell hingegen cmdlets oder Batch-Befehle ausführen. Tools wie DNS Lookup von Constellix führen Abfragen mit den Angaben aus, die Sie eingeben.
Dieser Artikel ist natürlich kein umfassender Leitfaden zur Eingabeaufforderung oder zur PowerShell. Beide können sehr viel mehr. Wenn dieser Artikel Ihnen gefallen hat, empfehle ich Ihnen die folgenden weiterführenden Ressourcen:
Windows CMD commands list (Liste von Befehlen für die Windows-Eingabeaufforderung)
Nslookup Command (Der Befehl nslookup)