Der DNS-Cache speichert aufgelöste Domain-Namen lokal, um wiederholte Anfragen an DNS-Server zu vermeiden. Nach einem Wechsel des DNS-Servers oder bei Netzwerkproblemen kann ein veralteter Cache jedoch zu Verbindungsfehlern führen. Mit dem Leeren des Caches erzwingst du eine neue DNS-Abfrage.

DNS-Caching auf der Kommandozeile

Das System selbst cached DNS-Einträge nicht auf Systemebene. Das Caching übernimmt ein separater Dienst. Welcher Dienst auf deinem System läuft, hängt von der Distribution ab:

  • systemd-resolved – Ubuntu, Fedora, Arch und die meisten modernen Distributionen
  • dnsmasq – Häufig bei Netzwerk-Managern oder als eigenständiger DNS-Server
  • nscd – RHEL, CentOS und andere Red-Hat-basierte Systeme

Cache mit systemd-resolved leeren

Die meisten aktuellen Distributionen verwenden systemd-resolved für DNS-Caching. Prüfe zuerst, ob der Dienst aktiv ist:

systemctl is-active systemd-resolved

Die Ausgabe active bestätigt, dass der Dienst läuft. Leere den Cache mit:

sudo resolvectl flush-caches

Bei älteren Versionen von systemd (vor 239) verwendest du stattdessen:

sudo systemd-resolve --flush-caches

Um zu überprüfen, ob der Cache tatsächlich geleert wurde, zeigst du die Cache-Statistiken an:

resolvectl statistics

Die Werte für Current Cache Size sollten nach dem Flush bei 0 liegen.

Cache mit dnsmasq leeren

Dnsmasq ist ein leichtgewichtiger DNS- und DHCP-Server, der oft in Verbindung mit NetworkManager zum Einsatz kommt. Um den Cache zu leeren, startest du den Dienst neu:

sudo systemctl restart dnsmasq

Alternativ auf Systemen ohne systemd:

sudo service dnsmasq restart

Ein Neustart von dnsmasq unterbricht kurzzeitig die DNS-Auflösung. Bei produktiven Servern solltest du das berücksichtigen.

Cache mit nscd leeren

Der Name Service Cache Daemon (nscd) cached neben DNS auch andere Namensauflösungen wie Benutzer und Gruppen. Auf Red-Hat-basierten Systemen ist er oft der Standard.

Leere den DNS-Cache gezielt:

sudo nscd -i hosts

Das Flag -i hosts invalidiert nur den Hosts-Cache, ohne andere Caches zu beeinflussen. Alternativ startest du den gesamten Dienst neu:

sudo systemctl restart nscd

Welcher Caching-Dienst läuft?

Falls du nicht weißt, welcher Dienst auf deinem System aktiv ist, prüfst du alle drei:

systemctl is-active systemd-resolved dnsmasq nscd

Die Ausgabe zeigt für jeden Dienst active oder inactive.

DNS-Auflösung testen

Nach dem Leeren des Caches kannst du mit dig prüfen, ob die DNS-Auflösung funktioniert:

dig example.com

Die Antwort sollte die aktuelle IP-Adresse der Domain enthalten. Achte auf die Query time – beim ersten Aufruf nach dem Flush ist sie höher, da die Anfrage tatsächlich an den DNS-Server geht.

Zusammenfassung

Caching-DienstBefehl zum Leeren
systemd-resolvedsudo resolvectl flush-caches
dnsmasqsudo systemctl restart dnsmasq
nscdsudo nscd -i hosts

Der richtige Befehl hängt davon ab, welcher DNS-Caching-Dienst auf deinem System läuft. Mit systemctl is-active findest du schnell heraus, welcher Dienst aktiv ist.