Tips en Trucs 2022

DNS cache wissen of doorspoelen

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.

Waarom moet je DNS cache wissen of doorspoelen?

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.

DNS-cache wissen of doorspoelen in Linux

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 DNS cache 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.

Nscd DNS cache

De Systemd-resolve DNS cache wissen

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

De Bind/Named DNS cache wissen

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.

De Dnsmasq DNS cache wissen

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