DNS-Probleme können Websites unerreichbar machen. Mit dig und nslookup finden Sie die Ursache schnell. Dieser Artikel zeigt die wichtigsten Diagnose-Techniken.

dig - Das Profi-Werkzeug

Installation

# Debian/Ubuntu
apt install dnsutils

# CentOS/RHEL
dnf install bind-utils

Grundlegende Abfragen

# A-Record (IPv4-Adresse)
dig example.com

# Kurzform
dig +short example.com

# Spezifischer Record-Typ
dig example.com MX
dig example.com TXT
dig example.com AAAA
dig example.com NS
dig example.com CNAME

dig-Ausgabe verstehen

; <<>> DiG 9.18.0 <<>> example.com
;; 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.com.                   IN      A

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

;; Query time: 23 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Jan 26 10:00:00 CET 2026
;; MSG SIZE  rcvd: 56

Wichtige Felder:

  • status: NOERROR = Erfolgreich
  • NXDOMAIN = Domain existiert nicht
  • SERVFAIL = DNS-Server-Fehler
  • TTL (3600) = Cache-Zeit in Sekunden
  • SERVER = Verwendeter DNS-Server

Bestimmten DNS-Server abfragen

# Google DNS
dig @8.8.8.8 example.com

# Cloudflare DNS
dig @1.1.1.1 example.com

# Autoritativen Nameserver
dig @ns1.example.com example.com

# Lokalen DNS-Cache
dig @127.0.0.1 example.com

Alle Records einer Domain

dig example.com ANY

# Besser: Einzeln abfragen
dig example.com A
dig example.com AAAA
dig example.com MX
dig example.com TXT
dig example.com NS

Trace (DNS-Auflösungspfad)

dig +trace example.com

# Zeigt den kompletten Weg:
# Root-Server → TLD-Server → Autoritativer Server

Reverse-DNS (PTR)

# IP zu Hostname
dig -x 93.184.216.34

# Kurzform
dig +short -x 93.184.216.34

nslookup - Die Alternative

Grundlegende Nutzung

# Einfache Abfrage
nslookup example.com

# Bestimmter DNS-Server
nslookup example.com 8.8.8.8

# Record-Typ setzen
nslookup -type=MX example.com
nslookup -type=TXT example.com

Interaktiver Modus

nslookup
> set type=MX
> example.com
> set type=NS
> example.com
> exit

Häufige DNS-Probleme

Problem 1: NXDOMAIN (Domain existiert nicht)

dig nonexistent.example.com
# status: NXDOMAIN

Ursachen:

  • Tippfehler in Domain
  • Domain nicht registriert
  • DNS-Eintrag gelöscht
  • Subdomain nicht angelegt

Lösung:

# Domain-Existenz prüfen
whois example.com

# Korrekte Schreibweise prüfen
dig existingdomain.com

Problem 2: SERVFAIL

dig problematic.com
# status: SERVFAIL

Ursachen:

  • DNSSEC-Validierungsfehler
  • Nameserver nicht erreichbar
  • Fehlerhafte Zonenkonfiguration

Lösung:

# Ohne DNSSEC-Validierung testen
dig +cd problematic.com

# Direkt autoritativen Server fragen
dig @ns1.problematic.com problematic.com

Problem 3: Unterschiedliche Ergebnisse

dig @8.8.8.8 example.com  # IP A
dig @1.1.1.1 example.com  # IP B

Ursachen:

  • DNS-Propagation noch nicht abgeschlossen
  • Geo-DNS (gewollt)
  • Caching unterschiedlich

Lösung:

# Autoritativen Server abfragen
dig NS example.com
dig @ns1.example.com example.com +norecurse

Problem 4: Langsame DNS-Auflösung

dig example.com
# Query time: 500 msec

Ursachen:

  • Langsamer DNS-Server
  • Netzwerkprobleme
  • DNS-Server überlastet

Lösung:

# Anderen DNS-Server testen
time dig @8.8.8.8 example.com
time dig @1.1.1.1 example.com

Problem 5: DNS-Änderung nicht sichtbar

# Neuer A-Record zeigt auf alte IP
dig example.com +short
# Zeigt alte IP

Ursachen:

  • TTL noch nicht abgelaufen
  • Lokaler Cache

Lösung:

# TTL prüfen
dig example.com | grep -E "^[^;]" | awk '{print $2}'

# Direkt autoritativen Server fragen
dig @ns1.example.com example.com

# Lokalen Cache leeren (systemd-resolved)
resolvectl flush-caches

DNS-Propagation prüfen

Mehrere Standorte testen

# Verschiedene öffentliche DNS-Server
for dns in 8.8.8.8 1.1.1.1 9.9.9.9 208.67.222.222; do
    echo "=== $dns ==="
    dig @$dns example.com +short
done

Online-Tools

  • whatsmydns.net
  • dnschecker.org
  • dnswatch.info

E-Mail-DNS prüfen

MX-Records

dig example.com MX +short
# 10 mail.example.com.
# 20 mail2.example.com.

SPF-Record

dig example.com TXT | grep "v=spf1"

DKIM-Record

dig selector._domainkey.example.com TXT
# Selector vom E-Mail-Provider

DMARC-Record

dig _dmarc.example.com TXT

DNSSEC prüfen

DNSSEC-Status

# Mit DNSSEC-Informationen
dig example.com +dnssec

# Nur DNSSEC-Flag prüfen
dig example.com | grep -i "flags:.*ad"
# 'ad' = Authenticated Data (DNSSEC valide)

DS-Record prüfen

dig example.com DS

Nameserver-Konfiguration prüfen

Autoritative Nameserver finden

dig NS example.com +short
# ns1.example.com.
# ns2.example.com.

Nameserver-Konsistenz prüfen

# Beide Nameserver sollten gleiche Daten liefern
dig @ns1.example.com example.com A
dig @ns2.example.com example.com A

SOA-Record (Start of Authority)

dig example.com SOA +short
# ns1.example.com. admin.example.com. 2024012501 3600 600 604800 86400
#                                     │          │    │   │      └─ Negative TTL
#                                     │          │    │   └─ Expire
#                                     │          │    └─ Retry
#                                     │          └─ Refresh
#                                     └─ Serial

Lokale DNS-Konfiguration

Aktuellen DNS-Server prüfen

# systemd-resolved
resolvectl status

# Klassisch
cat /etc/resolv.conf

# NetworkManager
nmcli dev show | grep DNS

DNS-Cache leeren

# systemd-resolved
resolvectl flush-caches

# nscd (falls verwendet)
nscd -i hosts

# dnsmasq (falls verwendet)
systemctl restart dnsmasq

Debugging-Skript

#!/bin/bash
# dns-check.sh - Umfassende DNS-Diagnose

DOMAIN=${1:-"example.com"}

echo "=== DNS-Check für $DOMAIN ==="

echo -e "\n--- A-Record ---"
dig +short $DOMAIN A

echo -e "\n--- AAAA-Record (IPv6) ---"
dig +short $DOMAIN AAAA

echo -e "\n--- MX-Records ---"
dig +short $DOMAIN MX

echo -e "\n--- NS-Records ---"
dig +short $DOMAIN NS

echo -e "\n--- TXT-Records ---"
dig +short $DOMAIN TXT

echo -e "\n--- SOA-Record ---"
dig +short $DOMAIN SOA

echo -e "\n--- Nameserver-Vergleich ---"
NS=$(dig +short $DOMAIN NS | head -1)
echo "Autoritativer NS: $NS"
dig @$NS $DOMAIN A +short

echo -e "\n--- Öffentliche DNS-Server ---"
for dns in "Google:8.8.8.8" "Cloudflare:1.1.1.1" "Quad9:9.9.9.9"; do
    name=$(echo $dns | cut -d: -f1)
    ip=$(echo $dns | cut -d: -f2)
    result=$(dig @$ip +short $DOMAIN A)
    echo "$name ($ip): $result"
done

Zusammenfassung

| Aufgabe | Befehl | |---------|--------| | A-Record | dig example.com A +short | | MX-Record | dig example.com MX +short | | TXT-Record | dig example.com TXT | | Reverse-DNS | dig -x 1.2.3.4 | | Bestimmter Server | dig @8.8.8.8 example.com | | Trace | dig +trace example.com | | Alle Records | dig example.com ANY |

Fazit

dig ist das wichtigste Werkzeug für DNS-Troubleshooting. Lernen Sie die häufigsten Optionen auswendig und fragen Sie bei Problemen immer mehrere DNS-Server ab. Beachten Sie TTL-Werte bei Änderungen und prüfen Sie die autoritativen Nameserver direkt, um Caching-Probleme auszuschließen.