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:
digliefert 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.nslookupgibt 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 +tracezur 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-serverden echten Zustand prüfen – antwortet der mitflags: aa, ist die Zone korrekt und nur der Zwischenspeicher alt. - Falsche Antwort trotz richtiger Daten: Ein
CNAMEauf einen nicht existierenden Namen ist ungültig und führt zu SERVFAIL. Mitdig +tracefindet man die Stelle. - Mail landet im Spam: TXT-Datensätze für SPF, DKIM und DMARC prüfen.
dig +short example.org TXTzeigt, 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.