dig und nslookup sind Werkzeuge zum Abfragen des Namenssystems (DNS). dig ist die erste Wahl für Diagnose, nslookup der einfache Klassiker. Wer DNS-Probleme untersucht, braucht beide – und ein Verständnis der Ausgabe.

Der grundlegende Unterschied

Beide Werkzeuge stellen dieselben Fragen, aber unterschiedlich gründlich:

  • dig liefert die vollständige Antwort mit Kopfzeile, Antwortabschnitt, Abschnitt der zuständigen Server und Zeitmessung. Es ist das Werkzeug für Diagnose – etwa um festzustellen, ob ein Zwischenspeicher veraltete Daten liefert.
  • nslookup gibt eine knappe Zusammenfassung. Es ist schneller zu lesen, aber die Zusatzinformationen fehlen.

Als Ersatz für beide gibt es host – einzeilig, gut für Skripte.

Grundabfragen

# Standardabfrage (A-Record)
dig example.org
dig +short example.org              # nur die Antwort

# Bestimmten Typ abfragen
dig example.org A
dig example.org AAAA                # IPv6
dig example.org MX                  # Mailserver
dig example.org TXT                 # Textdatensaetze (SPF, DKIM, DMARC)
dig example.org NS                  # zustaendige Nameserver
dig example.org CNAME               # Alias
dig example.org SOA                 # Verwaltungsdaten der Zone
dig example.org +short MX

# Bestimmten Server befragen (umgeht lokale Konfiguration!)
dig @1.1.1.1 example.org
dig @8.8.8.8 example.org AAAA
dig @ns1.example.org example.org SOA

# Umgekehrte Auflösung (Adresse -> Name)
dig -x 93.184.216.34
dig +short -x 93.184.216.34

# Zonen-Transfer versuchen (meist gesperrt - das ist richtig so)
dig @ns1.example.org example.org AXFR

Die Ausgabe lesen

$ dig example.org

; <<>> DiG 9.18 <<>> example.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;example.org.                   IN      A

;; ANSWER SECTION:
example.org.            3600    IN      A       93.184.216.34

;; Query time: 24 msec

# Die vier wichtigsten Stellen:
#   status: NOERROR     -> Aufloesung erfolgreich
#   status: NXDOMAIN    -> der Name existiert nicht
#   flags: aa           -> autoritative Antwort (kein Zwischenspeicher)
#   3600                -> Gueltigkeitsdauer in Sekunden (TTL)

# Query time: 24 msec
#   Sehr kleine Werte (<5 ms) deuten auf einen lokalen Zwischenspeicher hin,
#   groessere auf eine echte Abfrage beim zustaendigen Server.

# Antwortabschnitte
#   ANSWER     -> die eigentliche Antwort
#   AUTHORITY  -> die zustaendigen Nameserver
#   ADDITIONAL -> Zusatzangaben

Diagnose: die richtigen Fragen stellen

# 1. Liegt es am lokalen Zwischenspeicher oder am Netz?
dig example.org                    # nutzt /etc/resolv.conf
dig @1.1.1.1 example.org           # fragt direkt einen oeffentlichen Server
#   Unterschiedliche Ergebnisse -> Zwischenspeicher liefert Altes (TTL abwarten)

# 2. Was ist konfiguriert?
cat /etc/resolv.conf
resolvectl status                  # bei systemd-resolved
#   search-Domain und nameserver pruefen

# 3. Wie laeuft die Kette? (Schritt fuer Schritt verfolgen)
dig +trace example.org
#   Zeigt Abfrage bei Root, Top-Level-Domain und zustaendigem Server.
#   Bricht die Kette vorzeitig ab, liegt der Fehler beim jeweiligen Schritt.

# 4. Nur kurz: Gueltigkeitsdauer und autoritative Antwort
dig +noall +answer +authority example.org
dig +short +nocmd example.org

# 5. Auf DNSSEC pruefen
dig +dnssec example.org
dig +short example.org DNSKEY
dig example.org DS

Die häufigsten DNS-Probleme

  • NXDOMAIN: Der Name existiert nicht. Bei einer eigenen Domain fehlt der Datensatz oder er ist falsch geschrieben. Bei einer fremden: Tippfehler oder die Domain ist abgelaufen.
  • SERVFAIL: Der Server konnte nicht antworten – oft ein Zeichen für ein DNSSEC-Problem oder eine defekte Zone beim Betreiber. Hier hilft dig +trace zur Eingrenzung.
  • Keine Antwort (Timeout): Der angefragte Server antwortet nicht. Ausgehender Verkehr auf UDP-Port 53 blockiert? Häufig in restriktiven Netzen.
  • Veraltete Antwort trotz Änderung: Die TTL ist noch nicht abgelaufen. Mit dig @autoritativer-server den echten Zustand prüfen – antwortet der mit flags: aa, ist die Zone korrekt und nur der Zwischenspeicher alt.
  • Falsche Antwort trotz richtiger Daten: Ein CNAME auf einen nicht existierenden Namen ist ungültig und führt zu SERVFAIL. Mit dig +trace findet man die Stelle.
  • Mail landet im Spam: TXT-Datensätze für SPF, DKIM und DMARC prüfen. dig +short example.org TXT zeigt, was veröffentlicht ist.

Wichtige Optionen

# Ausgabe steuern
dig +short              # nur die Antwort
dig +noall +answer      # nur den Antwortabschnitt
dig +noquestion +noauthority +noadditional +nostats

# Verhalten steuern
dig +tcp                # ueber TCP statt UDP (bei grossen Antworten)
dig +notcp              # nur UDP erzwingen
dig +ignore             # auch bei Fehlern die Antwort zeigen
dig +norecurse          # nicht rekursiv fragen (nur bei eigenen Servern)
dig +time=2 +tries=2    # Zeitlimit und Versuche (Skripte!)
dig +retry=0

# Skript-taugliches Format
dig +short example.org | head -1

# Ausgabe in eine Datei zur spaeteren Pruefung
dig example.org > /tmp/dns_$(date +%s).txt

In Skripten immer +time und +tries setzen: Ohne sie wartet dig im Standard mehrere Sekunden pro Versuch, und ein hängender Namensserver blockiert das gesamte Skript.

Zwischenspeicher leeren

# systemd-resolved
resolvectl flush-caches
resolvectl statistics

# nscd (aeltere Systeme)
systemctl restart nscd

# dnsmasq
systemctl restart dnsmasq

# Pruefen, ob es gewirkt hat: Die TTL in der Antwort sollte zurueckgesetzt sein
dig example.org | grep -A1 'ANSWER SECTION'

Verwandte Grundlagen: DNS, ping und traceroute, DHCP, DHCP in der Praxis.