Zum Hauptinhalt springen
Zurück zur Kategorie

DNS-Probleme: Diagnose und Lösung

Umfassende Anleitung zur Diagnose und Lösung von DNS-Problemen mit dig, nslookup, DNS-Propagationsprüfung, Cache-Bereinigung und Lösungen für häufige DNS-Fehler.

Lesezeit: 14 Min. Fehlerbehebung
dnsdignslookuppropagationcachefehlerbehebung

Inhaltsverzeichnis

Einführung

DNS (Domain Name System) ist eine der grundlegenden Komponenten der Internet-Infrastruktur. Dieses System übersetzt Domainnamen in IP-Adressen, und wenn es nicht korrekt funktioniert, können viele Dienste wie Website-Zugriff, E-Mail-Zustellung und Serververbindungen gestört werden.

In dieser Anleitung untersuchen wir die Tools und Methoden, die Sie zur Diagnose und Lösung von DNS-Problemen verwenden können.

DNS-Grundlagen

DNS-Eintragstypen

EintragstypBeschreibungBeispiel
AIPv4-Adresszuordnungexample.com → 1.2.3.4
AAAAIPv6-Adresszuordnungexample.com → 2001:db8::1
CNAMEAlias zu einer anderen Domainwww → example.com
MXMailserver-Routingmail.example.com (Priorität: 10)
TXTTexteintrag (SPF, DKIM usw.)v=spf1 ip4:1.2.3.4 -all
NSNameserver-Definitionns1.example.com
PTRReverse-DNS-Eintrag4.3.2.1 → example.com
SOAZone-AutoritätseintragTTL, Serial, Refresh-Infos

DNS-Auflösungsprozess

Benutzer → Lokaler DNS-Cache → Rekursiver Resolver → Root NS → TLD NS → Autoritativer NS → IP-Adresse

DNS-Diagnose mit dem dig-Befehl

dig (Domain Information Groper) ist das leistungsstärkste Tool zur Diagnose von DNS-Problemen.

Grundlegende Verwendung

hljs bash
# A-Eintrag abfragen
dig example.com A

# Von einem bestimmten DNS-Server abfragen
dig @8.8.8.8 example.com A

# Kurze Ausgabe
dig example.com +short

# Alle Eintragstypen abfragen
dig example.com ANY

# MX-Eintrag abfragen
dig example.com MX

# NS-Eintrag abfragen
dig example.com NS

# TXT-Eintrag abfragen
dig example.com TXT

Detaillierte Abfragen

hljs bash
# Trace-Modus — zeigt den Auflösungsprozess Schritt für Schritt
dig example.com +trace

# SOA-Eintrag — Zone-Informationen
dig example.com SOA

# Reverse-DNS-Abfrage
dig -x 1.2.3.4

# Abfrage über TCP (für große Antworten)
dig example.com +tcp

# DNSSEC-Validierung
dig example.com +dnssec

dig-Ausgabe lesen

hljs bash
$ dig example.com A

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

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

;; AUTHORITY SECTION:
example.com.            86400   IN      NS      ns1.example.com.

;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; MSG SIZE  rcvd: 56

Wichtige Felder:

  • ANSWER SECTION: Die Abfrageantwort
  • TTL (300): Wie lange der Eintrag im Cache bleibt (Sekunden)
  • Query time: Antwortzeit
  • SERVER: DNS-Server, der die Antwort geliefert hat

nslookup-Befehl

nslookup ist ein einfacheres Tool für DNS-Abfragen:

hljs bash
# Grundlegende Abfrage
nslookup example.com

# Von bestimmtem DNS-Server abfragen
nslookup example.com 8.8.8.8

# MX-Eintrag abfragen
nslookup -type=MX example.com

# NS-Eintrag abfragen
nslookup -type=NS example.com

# TXT-Eintrag abfragen
nslookup -type=TXT example.com

# Reverse DNS
nslookup 1.2.3.4

DNS-Propagationsprüfung

Wenn DNS-Änderungen vorgenommen werden, dauert es eine Weile, bis neue Einträge auf alle DNS-Server propagiert werden.

Propagationszeiten

EintragstypTypische TTLPropagationszeit
A / AAAA300-3600 Sek.5 Min. - 1 Stunde
MX3600-86400 Sek.1 - 24 Stunden
NS86400 Sek.24 - 48 Stunden
TXT300-3600 Sek.5 Min. - 1 Stunde

Prüfung von verschiedenen DNS-Servern

hljs bash
# Google DNS
dig @8.8.8.8 example.com A +short

# Cloudflare DNS
dig @1.1.1.1 example.com A +short

# Quad9 DNS
dig @9.9.9.9 example.com A +short

# Lokaler ISP-DNS
dig example.com A +short

Online-Propagationsprüftools:

Um die DNS-Propagation zu beschleunigen, senken Sie den TTL-Wert vor der Änderung (z.B. 300 Sekunden). Nach Abschluss der Änderung können Sie die TTL wieder erhöhen.

DNS-Cache leeren

Betriebssystem-Cache leeren

hljs bash
# Linux (systemd-resolved)
sudo systemd-resolve --flush-caches
sudo resolvectl flush-caches

# macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# Windows
ipconfig /flushdns

DNS-Server-Cache leeren

hljs bash
# BIND named Cache leeren
sudo rndc flush

# Für eine bestimmte Zone
sudo rndc flushname example.com

# Unbound Cache leeren
sudo unbound-control flush_zone example.com

Browser-DNS-Cache

Um den DNS-Cache in Chrome zu leeren:

chrome://net-internals/#dns → Clear host cache

Häufige DNS-Probleme und Lösungen

1. NXDOMAIN (Domain nicht gefunden)

hljs bash
$ dig nonexistent.example.com
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN

Ursachen:

  • Domainname falsch geschrieben
  • DNS-Eintrag noch nicht erstellt
  • Domain abgelaufen

Lösung:

hljs bash
# WHOIS-Informationen der Domain prüfen
whois example.com

# Nameserver prüfen
dig example.com NS +short

# Vom autoritativen NS abfragen
dig @ns1.example.com example.com A

2. SERVFAIL

Ursachen:

  • Nameserver nicht erreichbar
  • DNSSEC-Validierungsfehler
  • Beschädigte Zone-Datei

Lösung:

hljs bash
# Nameserver-Erreichbarkeit prüfen
dig @ns1.example.com example.com A

# DNSSEC-Status prüfen
dig example.com +dnssec

# Mit anderem Resolver versuchen
dig @1.1.1.1 example.com A

3. Falsche IP-Adresse wird zurückgegeben

Ursachen:

  • Veralteter DNS-Cache
  • Falscher A-Eintrag
  • DNS-Hijacking

Lösung:

hljs bash
# Cache leeren
sudo systemd-resolve --flush-caches

# Direkt vom autoritativen NS abfragen
dig @ns1.example.com example.com A +short

# Auflösungspfad mit Trace prüfen
dig example.com +trace

4. Langsame DNS-Auflösung

Lösung:

hljs bash
# DNS-Antwortzeit messen
dig example.com | grep "Query time"

# Verschiedene DNS-Server vergleichen
for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
  echo "$dns: $(dig @$dns example.com +short +stats | grep 'Query time')"
done

Für dauerhafte DNS-Einstellungen verwenden Sie die systemd-resolved- oder NetworkManager-Konfiguration anstatt /etc/resolv.conf direkt zu bearbeiten.

DNS-Fehlerbehebungs-Checkliste

hljs bash
#!/bin/bash
# DNS-Fehlerbehebungsskript
DOMAIN="example.com"

echo "=== DNS-Fehlerbehebung: $DOMAIN ==="

echo -e "\n[1] Nameserver:"
dig $DOMAIN NS +short

echo -e "\n[2] A-Eintrag:"
dig $DOMAIN A +short

echo -e "\n[3] MX-Eintrag:"
dig $DOMAIN MX +short

echo -e "\n[4] TXT-Einträge:"
dig $DOMAIN TXT +short

echo -e "\n[5] Propagationsprüfung:"
for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
  result=$(dig @$dns $DOMAIN A +short)
  echo "  $dns$result"
done

echo -e "\n=== Prüfung abgeschlossen ==="

Fazit

DNS-Probleme gehören zu den häufigsten Problemen in der Serververwaltung. Durch effektive Nutzung von dig und nslookup können Sie Probleme schnell diagnostizieren, Propagationsprozesse verfolgen und Cache-Probleme lösen. Denken Sie daran, TTL-Werte vor DNS-Änderungen zu senken und nach Änderungen von verschiedenen DNS-Servern aus zu überprüfen.