Deze tip legt alle mogelijke manieren uit om DNS cache te wissen of door te spoelen (flush) in Linux besturingssystemen. Voor wie het zich afvraagt, DNS cache (of soms DNS resolver cache genoemd) is een kleine tijdelijke database die door het besturingssysteem wordt onderhouden. Het slaat de informatie op over alle bezochte websites en andere internet domeinen. Met andere woorden, de DNS cache bevat recente DNS zoekopdrachten. Wanneer je dezelfde website meerdere keren bezoekt, haalt het besturingssysteem de DNS-records van die website uit de lokale DNS-cachedatabase in plaats van de eigenlijke openbare DNS-server. DNS-caching verbetert dus de laadtijd van de website en vermindert de bandbreedte/CPU-consumptie van de originele DNS-server.
Er kunnen vele redenen zijn om de lokale DNS-cache te wissen. Het kan bijvoorbeeld zijn dat een website aangepast is of de DNS-instellingen voor een domein gewijzigd zijn, of dat je problemen hebt met de internetverbinding. In dergelijke gevallen, als je probeert om de site te bezoeken, zal het besturingssysteem waarschijnlijk de cache-versie van de site uit de lokale DNS-cache halen. Dus het wissen van de lokale DNS cache zal alle items uit de lokale DNS cache database verwijderen en het systeem dwingen om de DNS cache opnieuw te vullen met nieuwe items van de actuele DNS server en de recentste versie van de website weer te geven.
Standaard is de DNS caching niet geïnstalleerd en/of ingeschakeld op het niveau van het besturingssysteem in Linux. In plaats daarvan houden toepassingen zoals webbrowsers hun eigen interne cache bij. Je kunt dus gewoon de cache van de browser wissen of opnieuw opstarten om problemen met de internetverbinding op te lossen, problemen met DNS spoofing (bv. DNS cache poisoning) op te lossen en problemen met oudbakken inhoud op te lossen. Als jouw Linux distributie gebruik maakt van DNS caching services, dan moet je deze handmatig wissen. Er zijn verschillende manieren om DNS cache te wissen. Het hangt af van de Linux distributie en DNS caching service die je gebruikt. Hier volgen instructies om de meest gebruikte DNS caching services in Linux te wissen.
Nscd, kort voor name service cache daemon, is een caching daemon die een cache levert voor de meest voorkomende name service verzoeken. Het is de voorkeurs caching dienst voor de meeste op openSUSE en Redhat gebaseerde systemen. Als jouw Linux systeem de nscd caching service gebruikt, kan je de lokale DNS cache wissen of doorspoelen door eenvoudig de nscd service te herstarten. Met de volgende opdracht controleer je of jouw distributie de Nscd DNS cache gebruikt:
dany@pindabook:~> sudo systemctl is-active nscd.service
[sudo] wachtwoord voor root:
active
De Nscd DNS cache wordt gebruikt als het antwoord active
is.
In dit geval kan je de lokale Nscd DNS cache statistieken opvragen met de opdracht:
dany@pindabook:~> sudo nscd -g
Configuratie van nscd:
0 debugniveau van server
26m 42s looptijd van server
5 huidig aantal threads
32 maximum aantal threads
0 aantal keren dat aanroepers moesten wachten
nee paranoia-modus ingeschakeld
3600 interne herstarts
5 aantal herladingen
passwd-cache:
ja cache is ingeschakeld
ja cache is persistent
ja cache wordt gedeeld
211 voorgestelde grootte
216064 totale beschikbare ruimte
1472 gebruikte ruimte
600 seconden levensduur voor positieve items
20 seconden levensduur voor negatieve items
2080 cachetreffers op positieve items
0 cachetreffers op negatieve items
231 cachemissers op positieve items
11 cachemissers op negatieve items
89% treffers
16 huidig aantal waarden in cache
68 maximum aantal waarden in cache
3 maximale doorzochte kettinglengte
0 aantal vertragingen op leesblokkering
0 aantal vertragingen op schrijfblokkering
0 aantal mislukte geheugenreserveringen
ja /etc/passwd controleren op wijzigingen
group-cache:
ja cache is ingeschakeld
ja cache is persistent
ja cache wordt gedeeld
211 voorgestelde grootte
216064 totale beschikbare ruimte
2920 gebruikte ruimte
3600 seconden levensduur voor positieve items
60 seconden levensduur voor negatieve items
984 cachetreffers op positieve items
0 cachetreffers op negatieve items
235 cachemissers op positieve items
24 cachemissers op negatieve items
79% treffers
42 huidig aantal waarden in cache
70 maximum aantal waarden in cache
4 maximale doorzochte kettinglengte
0 aantal vertragingen op leesblokkering
0 aantal vertragingen op schrijfblokkering
0 aantal mislukte geheugenreserveringen
ja /etc/group controleren op wijzigingen
hosts-cache:
ja cache is ingeschakeld
nee cache is persistent
ja cache wordt gedeeld
211 voorgestelde grootte
216064 totale beschikbare ruimte
0 gebruikte ruimte
600 seconden levensduur voor positieve items
0 seconden levensduur voor negatieve items
0 cachetreffers op positieve items
0 cachetreffers op negatieve items
0 cachemissers op positieve items
0 cachemissers op negatieve items
0% treffers
0 huidig aantal waarden in cache
0 maximum aantal waarden in cache
0 maximale doorzochte kettinglengte
0 aantal vertragingen op leesblokkering
0 aantal vertragingen op schrijfblokkering
0 aantal mislukte geheugenreserveringen
ja /etc/hosts controleren op wijzigingen
services-cache:
ja cache is ingeschakeld
ja cache is persistent
ja cache wordt gedeeld
211 voorgestelde grootte
216064 totale beschikbare ruimte
1344 gebruikte ruimte
28800 seconden levensduur voor positieve items
20 seconden levensduur voor negatieve items
0 cachetreffers op positieve items
2 cachetreffers op negatieve items
45 cachemissers op positieve items
152 cachemissers op negatieve items
1% treffers
9 huidig aantal waarden in cache
28 maximum aantal waarden in cache
1 maximale doorzochte kettinglengte
0 aantal vertragingen op leesblokkering
0 aantal vertragingen op schrijfblokkering
0 aantal mislukte geheugenreserveringen
ja /etc/services controleren op wijzigingen
netgroup-cache:
ja cache is ingeschakeld
ja cache is persistent
ja cache wordt gedeeld
211 voorgestelde grootte
216064 totale beschikbare ruimte
0 gebruikte ruimte
28800 seconden levensduur voor positieve items
20 seconden levensduur voor negatieve items
0 cachetreffers op positieve items
0 cachetreffers op negatieve items
0 cachemissers op positieve items
0 cachemissers op negatieve items
0% treffers
0 huidig aantal waarden in cache
0 maximum aantal waarden in cache
0 maximale doorzochte kettinglengte
0 aantal vertragingen op leesblokkering
0 aantal vertragingen op schrijfblokkering
0 aantal mislukte geheugenreserveringen
ja /etc/netgroup controleren op wijzigingen
De Nscd DNS cache wis je door de Nscd dienst te herstarten:
dany@pindabook:~> sudo systemctl restart nscd.service
[sudo] wachtwoord voor root:
Maar daarmee heb je alleen de niet blijvende (persistent) cache onderdelen gewist. Of een cache onderdeel persistent is of niet kan je afleiden uit de statistieken (zie hierboven). Zo is de hosts-cache de enige niet persistente cache.
Om een persistente Nscd cache te wissen, gebruik je de volgende opdracht:
dany@pindabook:~> sudo nscd -i passwd
[sudo] wachtwoord voor root:
De -i
(--invalidate) optie zorgt in dit geval dat de wachtwoorden (passwd
) cache wordt gewist.
En zo herhaal je dit voor elk persistent cache onderdeel.
Systemd-resolve is een systemd service die DNS caching service op systeemniveau biedt voor lokale applicaties. Het is een onderdeel van het systemd pakket dat standaard is geïnstalleerd. Systemd-resolve service is standaard ingeschakeld in Linux besturingssystemen gebaseerd op Fedora en Ubuntu. Laten we eerst controleren of de systemd-resolved service actief is of niet:
dany@pindabook:~> sudo systemctl is-active systemd-resolved.service
[sudo] wachtwoord voor root:
inactive
In openSUSE is de systemd-resolve DNS cache dus niet actief. Bij een actieve systemd-resolve DNS cache kan je deze wissen met de opdracht:
sudo systemd-resolve --flush-caches
Berkeley Internet Name Domain (kortweg BIND) is de meest populaire open bron DNS server die vandaag de dag in gebruik is. Als je BIND gebruikt voor het cachen van DNS queries, gebruik dan de volgende opdrachten om de BIND cache service in Linux te wissen/door te spoelen:
dany@pindabook:~>sudo systemctl is-active named
inactive dany@pindabook:~>sudo systemctl restart named
Failed to restart named.service: Unit named.service not found.
Wat in openSUSE mislukt aangezien de Bind/Named DNS cache niet actief is en niet geïnstalleerd is.
Dnsmasq is een lichtgewicht DHCP en caching DNS server met ondersteuning voor een PXE en TFTP server. Het is geschikt voor resource beperkte routers en firewalls om kleine netwerken te beheren. Controleer of de Dnsmasq DNS cache actief is met:
dany@pindabook:~> sudo systemctl is-active dnsmasq.service
inactive
Als dnsmasq actief als caching dienst gebruikt wordt, kan je de lokale DNS cache doorspoelen:
sudo systemctl restart dnsmasq
Doe dit echter niet op openSUSE of je start dnsmasq, waardoor je twee actieve DNS caches activeert, wat waarschijnlijk teveel van het goede is. Stop in dit geval dnsmasq:
dany@pindabook:~> sudo systemctl stop dnsmasq