dig

Lesezeit: 8 Minuten

dig, ursprünglich ein Akronym für Domain Information Groper, ist ein Kommandozeilenwerkzeug zur DNS-Abfrage, das als Teil des Berkeley Internet Name Domain (BIND)-Projekts entstanden ist. Entwickelt wurde es von der Internet Systems Consortium (ISC) im Rahmen ihrer Arbeiten an der Referenzimplementierung des DNS-Protokolls. Seit den frühen 1990er Jahren dient dig als moderne Alternative zu älteren Werkzeugen wie nslookup und wurde mit der Einführung von BIND 9 vollständig überarbeitet. Es bietet tieferen Zugriff auf DNS-Mechanismen, erlaubt präzise Steuerung von Abfragen und hat sich im Laufe der Jahre als unverzichtbares Werkzeug für Netzwerkadministratoren, Entwickler und Architekten verteilter Systeme etabliert.

DNS – ein kurzer Überblick

Das Domain Name System (DNS) ist ein hierarchisch aufgebautes System zur Namensauflösung: Es übersetzt z. B. example.com in eine IP-Adresse. Dabei wird eine Kette von Servern abgefragt: Zunächst ein Root-Server, dann die zuständige TLD (.com), dann der Authoritative Name Server für example.com.

Es gibt verschiedene Ressourcentypen wie A, AAAA, CNAME, MX, TXT, NS oder SRV. Jeder Eintrag hat eine TTL (Time to Live), die angibt, wie lange der Record gecacht werden darf. Und: es gibt keine Garantie, dass alle DNS-Resolver gleich antworten – darum ist ein Tool wie dig, das gezielte Abfragen erlaubt, so wertvoll.

Aufbaue der dig-Standardausgabe

Der Befehl dig pflugradts.de führt zu einer Ausgabe ähnlich folgender:

; <<>> DiG 9.10.6 <<>> pflugradts.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50231
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; OPT=15: 00 03 ("..")
;; QUESTION SECTION:
;pflugradts.de.			IN	A

;; ANSWER SECTION:
pflugradts.de.		0	IN	A	104.21.16.1
pflugradts.de.		0	IN	A	104.21.64.1
pflugradts.de.		0	IN	A	104.21.112.1
pflugradts.de.		0	IN	A	104.21.32.1
pflugradts.de.		0	IN	A	104.21.48.1
pflugradts.de.		0	IN	A	104.21.80.1
pflugradts.de.		0	IN	A	104.21.96.1

;; Query time: 124 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Sun Apr 20 11:07:05 CEST 2025
;; MSG SIZE  rcvd: 160

Diese Ausgabe besteht aus mehreren Abschnitten.

Kopfzeile

; <<>> DiG 9.10.6 <<>> pflugradts.de
;; global options: +cmd

Dies ist die Versions- und Befehlszeile. dig teilt mit, in welcher Version (hier: 9.10.6) es läuft, und welches Ziel (pflugradts.de) abgefragt wurde. Die Option +cmd ist standardmäßig aktiv und bewirkt, dass diese Kopfzeile sowie die nachfolgenden Kommentare angezeigt werden.

Header-Sektion

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50231
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 1

Der Header enthält Metainformationen zur DNS-Anfrage und -Antwort, wie Status, Anzahl der Sektionen und gesetzte Flags.

  • opcode: QUERY – Es handelt sich um eine normale Abfrage.
  • status: NOERROR – Die Anfrage war erfolgreich.
  • id: 50231 – Eine zufällige ID zur Identifizierung der Anfrage. Relevant bei parallelen Anfragen.
  • flags:
    • qr – Antwort (nicht Frage),
    • rd – Recursion Desired (Rekursion vom Resolver gewünscht),
    • ra – Recursion Available (vom antwortenden Server angeboten).
  • QUERY: 1 – Eine Frage wurde gestellt.
  • ANSWER: 7 – Sieben Antworten wurden empfangen.
  • AUTHORITY: 0 – Keine autoritativen NS-Angaben enthalten.
  • ADDITIONAL: 1 – Ein zusätzlicher (nicht direkt zur Antwort gehöriger) Record, meist EDNS-bezogen.

Pseudo-Sektion

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; OPT=15: 00 03 ("..")

Diese „Pseudo-Sektion“ gehört zur EDNS0-Erweiterung (Extension Mechanisms for DNS). Sie gibt u. a. die UDP-Paketgröße an (hier: 1232 Bytes), was moderne Resolver aushandeln, um längere DNS-Antworten effizienter zu verarbeiten. OPT=15 ist ein vendor-spezifischer EDNS-Optionseintrag. Die Bedeutung ist kontextabhängig.

Anfrage-Sektion

;; QUESTION SECTION:
;pflugradts.de.			IN	A

Dieser Abschnitt enthält die gestellte Anfrage: „Was ist der A-Record (IPv4-Adresse) für pflugradts.de?“ IN steht für die Internet-Klasse, was in nahezu allen DNS-Anfragen Standard ist.

Antwort-Sektion

pflugradts.de.		0	IN	A	104.21.16.1
pflugradts.de.		0	IN	A	104.21.64.1
pflugradts.de.		0	IN	A	104.21.112.1
pflugradts.de.		0	IN	A	104.21.32.1
pflugradts.de.		0	IN	A	104.21.48.1
pflugradts.de.		0	IN	A	104.21.80.1
pflugradts.de.		0	IN	A	104.21.96.1

Es wurden sieben IPv4-Adressen geliefert – alle beginnend mit 104.21.*.*. In diesem Fall sind es so viele Adressen, weil die Domain bei Cloudflare, einem Anbieter mit Anycast-Routing, gehostet wird. Die Antworten werden nicht gecacht, da die Time to Live auf 0 gesetzt ist.

Schlusszeile

;; Query time: 124 msec
;; SERVER: 10.0.0.2#53(10.0.0.2)
;; WHEN: Sun Apr 20 11:07:05 CEST 2025
;; MSG SIZE  rcvd: 160

Die Schlusszeile fasst technische Eckdaten wie Antwortzeit, genutzten Resolver, Zeitpunkt und Größe der Nachricht kompakt zusammen.

  • Query time: Die Dauer der gesamten Abfrage, hier 124 Millisekunden.
  • SERVER: Der verwendete Resolver war 10.0.0.2. (ein interner DNS-Server).
  • WHEN: Der Zeitpunkt der Anfrage.
  • MSG SIZE rcvd: Die Gesamtgröße der DNS-Antwort, hier 160 Bytes.

Nützliche Flags

dig unterstützt diverse Flags, um gezielt nur bestimmte Teile der DNS-Antwort anzuzeigen, die Ausgabe zu kürzen, spezielle Record-Typen abzufragen oder gezielt einzelne Nameserver zu befragen.

Nur die IP-Adresse anzeigen

Das Flag +short reduziert die Ausgabe auf die IP-Adresse(n) zum A-Record der Domain.

dig +short pflugradts.de

Einen bestimmten Nameserver befragen

So lassen sich z.B. Cache-Unterschiede zwischen Namenservern wie Google DNS und Cloudflare feststellen.

dig @1.1.1.1 pflugradts.de

Mailserver einer Domain ermitteln

Für die Domain pflugradts.de ist der Mailserver beispielsweise mail.pflugradts.de.

dig pflugradts.de MX

TXT-Records prüfen

Hiermit lassen sich zum Beispiel SPF- und DKIM-Einträge oder ACME-Challenges abfragen.

dig pflugradts.de TXT

Nameserver ermitteln

Für die Domain pflugradts.de werden beispielsweise die Nameserver von Cloudflare genutzt.

dig pflugradts.de NS

Domain zu einer IP-Adresse ermitteln

Dies löst eine PTR-Anfrage aus und wird z. B. bei Spamfiltern verwendet, um zu erkennen, ob ein Server korrekt rückwärts auflösbar ist. Die IP-Adresse im nachfolgenden Beispiel löst zu mail.pflugradts.de auf.

dig -x 8.206.169.81

Automatisierung

dig lässt sich dank +short und spezifischer Record-Typen wunderbar in Skripten einsetzen, z.B. um auf das Vorhandensein einer bestimmten ACME-Challenge zu prüfen:

if dig +short txt \
   _acme-challenge.pflugradts.de | \
   grep "challenge-string"
then
  echo "Challenge vorhanden"
else
  echo "Challenge fehlt"
fi

Debugging mit +trace

Mit dem Flag +trace lässt sich der vollständige DNS-Auflösungsweg einer Domain Schritt für Schritt nachvollziehen – beginnend bei einem Root-Nameserver bis hin zur endgültigen Antwort. Dabei folgt dig iterativ allen Delegationen, die eine Domain durchläuft: von der Root-Zone (.) über die TLD (.uk), die Second-Level-Domain (ac.uk), weitere Subzonen (cam.ac.uk, cl.cam.ac.uk) bis zum finalen A-Record von www.cl.cam.ac.uk. Dies ist besonders hilfreich bei der Fehlersuche in komplexen Namespaces oder bei Problemen mit DNS-Delegationen.

dig +trace www.cl.cam.ac.uk @a.root-servers.net

Die nachfolgend gekürzte Ausgabe des Befehls veranschaulicht die einzelnen DNS-Delegationen, die bei der Auflösung dieser Domain durchlaufen werden, von der Root-Zone bis zum zuständigen autoritativen Nameserver.

; <<>> DiG 9.10.6 <<>> +trace www.cl.cam.ac.uk @a.root-servers.net
;; global options: +cmd
.			518400	IN	NS	j.root-servers.net.
;; Received 1097 bytes from 198.41.0.4#53(a.root-servers.net) in 17 ms

uk.			172800	IN	NS	dns3.nic.uk.
;; Received 884 bytes from 192.58.128.30#53(j.root-servers.net) in 14 ms

ac.uk.			172800	IN	NS	ns0.ja.net.
;; Received 414 bytes from 213.248.220.1#53(dns3.nic.uk) in 13 ms

cam.ac.uk.		86400	IN	NS	ns3.mythic-beasts.com.
;; Received 578 bytes from 193.63.94.20#53(ns0.ja.net) in 20 ms

www.cl.cam.ac.uk.	21600	IN	A	128.232.0.20
;; Received 1219 bytes from 185.24.221.32#53(ns3.mythic-beasts.com) in 20 ms

Fazit

Ob zur Fehlersuche in produktiven Systemen, zur Kontrolle von DNS-Konfigurationen oder zur Analyse komplexer Delegationsstrukturen – dig ist weit mehr als ein simples Abfragewerkzeug. Es gewährt Einblick in das Innenleben des DNS, bietet volle Kontrolle über Auflösungspfad und Antwortformat und gehört in jede Entwickler- und Admin-Werkzeugkiste. Wer versteht, was dig zeigt, erkennt frühzeitig Probleme, vermeidet Überraschungen im Live-Betrieb und gewinnt ein tiefes Verständnis für die Infrastruktur, auf der moderne Systeme ruhen.