Modul 8 · 8.2
DNS abfragen mit dig und nslookup
Modul 8: Sicherheit und Problembehebung · Lesezeit: 10 Minuten
Lernziel: Nach dieser Lektion können Sie mit dig und nslookup Einträge abfragen, einen bestimmten Nameserver befragen und die Ausgabe lesen.
Kernbegriffe: dig, nslookup, Resolve-DnsName, +short, @server, +trace, ANSWER- und AUTHORITY-Abschnitt, Status NOERROR, NXDOMAIN, SERVFAIL, dig -x
Warum selbst abfragen?
Ein Panel zeigt, was Sie eingetragen haben. Was der Rest der Welt sieht, kann anders sein: Vielleicht verwaltet eine andere Partei das DNS, vielleicht steht noch eine alte Antwort in einem Cache. Mit einem Abfrageprogramm stellen Sie dieselbe Frage wie ein Browser oder Mailserver und sehen die echte Antwort.
Es gibt drei gängige Programme:
| Programm | Wo | Kommentar |
|---|---|---|
dig | macOS, Linux (Windows über WSL oder separat zu installieren) | Am umfangreichsten, Standard bei Administratoren |
nslookup | Windows, macOS, Linux | Überall vorhanden, knappere Ausgabe |
Resolve-DnsName | Windows PowerShell | Praktisch unter Windows ohne zusätzliche Software |
Haben Sie kein Befehlsfenster zur Hand? Dann können Sie genau dasselbe mit einem Online-dig-Tool tun (Lektion 8.3).
Ihre erste Abfrage mit dig
Öffnen Sie Terminal (macOS/Linux) und geben Sie ein:
$ dig example.com ADie Ausgabe sieht gekürzt so aus:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41872
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 2847 IN A 192.0.2.10
;; Query time: 12 msec
;; SERVER: 192.168.1.1#53(192.168.1.1) (UDP)Was Sie lesen müssen:
- status: das wichtigste Wort. Siehe die Tabelle unten.
- flags:
adbedeutet, dass der Resolver die Antwort mit DNSSEC überprüft hat (Lektion 8.1). - ANSWER SECTION: die Einträge selbst. Die Spalten sind dieselben wie in einer Zone: Name, TTL, Klasse, Typ, Wert.
- TTL (hier 2847): wie viele Sekunden diese Antwort noch im Cache des Resolvers bleibt. Stand in der Zone 3600, dann ist die Antwort also schon 753 Sekunden alt. Fragen Sie erneut ab, sehen Sie die Zahl herunterzählen.
- SERVER: welchen Resolver Sie gefragt haben. Zu Hause ist das oft Ihr Router.
Die drei Status, die Sie kennen müssen
| Status | Bedeutung | Was zu tun ist |
|---|---|---|
NOERROR mit Antwort | Alles in Ordnung, das ist die Antwort | Stimmt der Wert nicht? Dann steht ein falscher Eintrag dort, oder Sie sehen einen alten Cache |
NOERROR ohne Antwort (ANSWER: 0) | Der Name existiert, hat aber keinen Eintrag dieses Typs | Häufig: Sie fragen den falschen Typ ab (zum Beispiel A bei einem Namen mit nur einem CNAME oder nur MX) |
NXDOMAIN | Dieser Name existiert überhaupt nicht | Tippfehler, Eintrag vergessen, oder ein doppelter Domainname wie mail.example.com.example.com |
SERVFAIL | Der Resolver konnte keine zuverlässige Antwort erhalten | Nameserver nicht erreichbar, oder eine defekte DNSSEC-Kette (versuchen Sie +cd) |
Nützliche Varianten
Nur die Antwort mit +short:
$ dig +short MX example.com
10 mail.example.com.
20 mail2.example.com.Einen anderen Resolver oder einen Nameserver direkt befragen mit @. Das ist der wichtigste Trick bei Problemen. Fragen Sie den autoritativen Nameserver selbst, erhalten Sie immer die aktuelle Antwort, ohne Cache:
$ dig +short NS example.com
ns1.hosting.example.
ns2.hosting.example.
$ dig +short A www.example.com @ns1.hosting.example
192.0.2.20
$ dig +short A www.example.com @9.9.9.9
192.0.2.10Hier sehen Sie auf einen Blick, was los ist: Der Nameserver gibt bereits die neue Adresse aus (.20), der öffentliche Resolver hat noch die alte im Cache (.10). Sie müssen also nichts tun, nur warten, bis die TTL abgelaufen ist (Modul 6).
Andere Typen: setzen Sie den Typ hinter den Namen.
$ dig +short TXT example.com
"v=spf1 a mx include:_spf.hosting.example ~all"
"google-site-verification=AbC123..."
$ dig +short TXT _dmarc.example.com
"v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"
$ dig +short CNAME shop.example.com
shops.platform.example.Die ganze Reise verfolgen mit +trace. dig macht dann selbst, was ein Resolver tut: erst die Root, dann die TLD, dann der autoritative Server (Lektion 1.4):
$ dig +trace example.com A
. 518400 IN NS a.root-servers.net.
;; Received 239 bytes from 192.168.1.1#53
com. 172800 IN NS a.gtld-servers.net.
;; Received 708 bytes from 198.41.0.4#53(a.root-servers.net)
example.com. 172800 IN NS ns1.hosting.example.
;; Received 412 bytes from 192.5.6.30#53(a.gtld-servers.net)
example.com. 3600 IN A 192.0.2.10
;; Received 57 bytes from 198.51.100.53#53(ns1.hosting.example)Mit +trace sehen Sie, welche Nameserver die Registry tatsächlich weitergibt. Das ist nützlich, wenn Sie bezweifeln, ob eine Nameserveränderung schon durchgeführt wurde.
DNSSEC sehen mit +dnssec: Sie erhalten die RRSIG-Signaturen dazu. Mit +cd schalten Sie die Prüfung aus, um zu sehen, ob ein SERVFAIL durch DNSSEC verursacht wird.
Reverse DNS mit -x (Lektion 4.6):
$ dig +short -x 192.0.2.25
mail.example.com.Dasselbe mit nslookup
nslookup funktioniert auf jedem Computer. Die wichtigsten Formen:
C:\> nslookup example.com
Server: router.lan
Address: 192.168.1.1
Non-authoritative answer:
Name: example.com
Address: 192.0.2.10
C:\> nslookup -type=mx example.com
example.com MX preference = 10, mail exchanger = mail.example.com
C:\> nslookup -type=txt _dmarc.example.com 9.9.9.9Eine zweite Adresse hinter dem Namen (hier 9.9.9.9) ist der Server, den Sie abfragen, genau wie @ bei dig. "Non-authoritative answer" bedeutet nur, dass die Antwort von einem Resolver kommt und nicht vom autoritativen Nameserver: das ist normal. Existiert der Name nicht, meldet nslookup Non-existent domain, was dasselbe ist wie NXDOMAIN.
Windows PowerShell: Resolve-DnsName
PS> Resolve-DnsName example.com -Type MX
PS> Resolve-DnsName _dmarc.example.com -Type TXT -Server 9.9.9.9
PS> Resolve-DnsName example.com -Type A -DnsOnlyIhren eigenen Cache leeren
Sieht ein Online-Tool die neue Antwort bereits, Ihr Computer aber noch nicht? Dann steckt die alte Antwort im Cache Ihres eigenen Computers oder Browsers.
- Windows:
ipconfig /flushdnsin der Eingabeaufforderung. - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderin Terminal. - Linux mit systemd-resolved:
resolvectl flush-caches. - Browser: ein privates Fenster, oder Ihr Telefon über 4G/5G mit ausgeschaltetem WLAN.
Den Cache Ihres Providers oder Routers können Sie nicht selbst leeren; dort warten Sie die TTL ab.
In der Praxis: so sieht es in einem Panel aus
In den meisten Panels können Sie kein dig ausführen. Nutzen Sie dig deshalb neben Ihrem Panel: zuerst im Panel nachsehen, was Sie eingetragen haben, dann mit dig @<Ihr Nameserver> prüfen, ob der Nameserver das auch tatsächlich ausgibt, und danach mit dig @9.9.9.9, ob die Außenwelt es schon sieht. Mein WebOké verfügt über eine DNS-Diagnose, die die Nameserver untereinander vergleicht; andere Anbieter haben vergleichbare „DNS-Prüfung"-Schaltflächen.
Zusammenfassung
dig <Name> <Typ>stellt dieselbe Frage wie ein Browser oder Mailserver; lesen Sie zuerst den Status.- NOERROR mit Antwort ist gut, NOERROR ohne Antwort bedeutet „Name existiert, Typ nicht", NXDOMAIN bedeutet „Name existiert nicht", SERVFAIL bedeutet „keine zuverlässige Antwort".
- Mit
@serverfragen Sie einen bestimmten Resolver oder den autoritativen Nameserver direkt ab; so sehen Sie den Unterschied zwischen einem Fehler und einem Cache. +short,+trace,+dnssec,+cdund-xsind die Varianten, die Sie am häufigsten brauchen.- nslookup und Resolve-DnsName tun dasselbe unter Windows.
Quiz
Aufgabe
Aufgabe Z8.2: dig und nslookup. Fragen Sie mit dig, nslookup oder Resolve-DnsName (oder einem Online-dig-Tool) drei Dinge ab:
- den Status eines Namens, der nicht existiert:
bestaat-niet-dnscursus.sidn.nl; - die MX-Records von
wikipedia.org, direkt bei einem der Nameserver von wikipedia.org (suchen Sie diesen zuerst); - die TTL, die ein öffentlicher Resolver gerade für den A-Record von
sidn.nlzurückgibt (fragen Sie zweimal mit einer Minute Abstand ab und notieren Sie beide Zahlen).
Tragen Sie die Antworten ein.
Weiterführende Informationen
Diese Artikel beschreiben die Schritte bei WebOké; die Befehle funktionieren überall gleich.
