
Is uw surfervaring op internet traag op uw Linux-apparaat, of zijn de websites die u bezoekt verouderd of helemaal de verkeerde website? Laten we het hebben over het leegmaken van de DNS-cache op Linux en hoe u kunt weten of dit echt nodig is.
Wat zijn DNS-caches?
Gebruikt uw computer een lokale DNS-cache?
Uw DNS-cache bekijken
Hoe de DNS-cache op Linux te wissen
Hoe de dnsmasq-cache op Linux te spoelen
Doorgespoeld, met succes
Wat zijn DNS-caches?
De domeinnaamservice is het stukje magie dat namen omzet in cijfers. Het neemt apparaatnetwerknamen en websitenamen en zoekt hun IP-adressen op. Het netwerk kan het IP-adres vervolgens gebruiken om verkeer correct naar die apparaten of sites te leiden.
Deze look-ups, bekend als aanvragen, niet onmiddellijk gebeuren. Er is een kleine, eindige tijdsperiode mee gemoeid. Internet-DNS-verzoeken vereisen mogelijk query’s op voorloper-DNS-servers, root-naamservers, domeinservers op het hoogste niveau en gezaghebbende naamservers. DNS-verzoeken zijn snel, maar om ze nog sneller te maken, worden de antwoorden op recente DNS-verzoeken in de cache opgeslagen op de DNS-voorloperservers.
Als het antwoord op een DNS-verzoek wordt gevonden in de cache van de voorloperserver, hoeft er geen contact meer te worden opgenomen met andere servers. Het antwoord wordt teruggestuurd vanuit de cache van de voorloperserver. Evenzo wordt een kleine cache bijgehouden door uw breedbandrouter thuis. Als u om een ​​lokaal netwerkapparaat vraagt ​​met behulp van de naam van het netwerkapparaat, geeft uw router het IP-adres. Het kan ook antwoorden die het van externe DNS-servers heeft ontvangen, cachen.
Gewoonlijk zijn netwerken en Linux-computers geconfigureerd om externe DNS-services te gebruiken, geleverd door uw internetprovider of door een gratis service zoals OpenDNS of Google DNS. Er zijn goede redenen waarom sommige mensen hun eigen DNS-server hebben, maar de meesten van ons niet. Uw Linux-computer kan echter, zelfs als er geen DNS-server op draait, optioneel de resultaten van DNS-verzoeken cachen.
Het probleem met het gebruik van gegevens in de cache is dat het geheel is gebaseerd op de veronderstelling dat geen van de gegevens in de cache is gewijzigd sinds ze in de cache zijn opgeslagen. Als de gegevens zijn gewijzigd, is de informatie die u ontvangt verouderd.
Als een cache-item of de gehele cache beschadigd raakt, krijgt u in het beste geval slechte prestaties en in het slechtste geval beveiligingsproblemen. Dat is wanneer u wilt kijken naar “flushing” of het wissen van de DNS-cache.
Gebruikt uw computer een lokale DNS-cache?
Op sommige van onze testcomputers waren lokale DNS-caches ingeschakeld en op andere was deze uitgeschakeld. Het was uitgeschakeld op onze Manjaro 21-computer, maar het was standaard ingeschakeld op Fedora 37 en Ubuntu 22.10.
Om te bepalen of uw Linux-computer DNS-aanvragen in de cache opslaat, gebruikt u de is-active optie van de systemctl opdracht. De daemon die de DNS-cache beheert, is de systemd-netwerknaamomzettingsmanager, ook wel bekend als systemd-resolved.
systemctl is-active systemd-resolved

Als het antwoord “actief” is, vindt er DNS-caching plaats. Als het antwoord “inactief” is, is dat niet het geval. Op deze specifieke computer is het actief. We kunnen de resolvectl commando met de statistiekenoptie om te zien hoeveel records zich in de cache bevinden.
resolvectl statistics

We kunnen zien dat er 330 vermeldingen in de DNS-cache van deze computer zijn.
Uw DNS-cache bekijken
Het controleren van de DNS-cachevermeldingen is geen vereiste voor het legen van de cache en als u hier geen interesse in heeft, kunt u deze hele stap overslaan. Soms kan het echter informatief zijn. Mogelijk ziet u gecodeerde vermeldingen die wijzen op corruptie, of ziet u mogelijk foutberichten met betrekking tot apparaatadresseringsproblemen op uw netwerk.
Nu is er geen eenvoudige manier om deze vermeldingen te bekijken. We kunnen het, maar we moeten een beetje creatief zijn. USR1of door de gebruiker gedefinieerd signaal nummer éénis een signaal dat kan worden verzonden door de kill en killall commando’s. Dit signaal heeft geen vooraf gedefinieerde betekenis. Applicaties zijn vrij om dit signaal te negeren of te reageren op welke manier dan ook die de ontwikkelaars hebben geïmplementeerd.
De systemd-resolved daemon reageert op USR1 door de cache naar de systeemlogboeken te schrijven. We kunnen dan de journalctl opdracht om de DNS-vermeldingen eruit te filteren.
We gebruiken de killall commando met USR1 Om het signaal naar de systemd-resolved demon. Merk op dat hoewel we de killall commando, de systemd-resolved daemon blijft draaien. Dit is geen beëindigingssignaal dat we uitzenden.
sudo killall -USR1 systemd-resolved

Nu gebruiken we de journalctl commando met de -u (filteren op systemd unit) optie om de logboekvermeldingen te extraheren die zijn gegenereerd door systemd-resolved . We zullen die uitvoer omleiden naar een tekstbestand met de naam “dns.txt”.
sudo journalctl -u systemd-resolved > dns.txt

We gebruiken de less bestandsviewer om de inhoud van het bestand te bekijken.
less dns.txt

U kunt de in de cache opgeslagen toewijzingen tussen domeinnamen en IP-adressen vinden door door de tekst te scrollen en te zoeken.

We zien een vermelding voor Google met een IP-adres van 216.58.212.196. U kunt dat controleren door het IP-adres in een webbrowser in te voeren. U zou de startpagina van Google Zoeken moeten zien.
Hoe de DNS-cache op Linux te wissen
Door de cache leeg te maken, worden alle vermeldingen verwijderd en wordt het verzamelproces opnieuw gestart. Als die er zijn, verwijdert dit met geweld onjuiste en corrupte vermeldingen uit de cache.
De opdracht is eenvoudig; we gebruiken resolvectl met de flush-caches keuze.
resolvectl flush-caches

We keren stilletjes terug naar de opdrachtregel. Om te bevestigen dat er daadwerkelijk iets is gebeurd, controleren we de DNS-cachestatistieken opnieuw.
resolvectl statistics

We kunnen zien dat de cachegrootte naar nul is gedaald. Het zal in de loop van de tijd toenemen naarmate het nieuwe vermeldingen verzamelt.
Hoe de dnsmasq-cache op Linux te spoelen
De dnsmasq applicatie biedt een DNS-cache en een DHCP-server. Het is populair bij gebruikers die hun eigen DNS-server willen gebruiken, vooral op niet-systemd-installaties.
Het spoelen van de dnsmasq DNS-cache is eenvoudig. We moeten de SIGHUP signaal, dat vertelt de dnsmasq daemon om effectief opnieuw te initialiseren. Hierdoor wordt de DNS-cache gewist. Om het signaal te verzenden gebruiken we de killall commando met de -HUP vlag en de naam van de toepassing.
sudo killall -HUP dnsmasq

Doorgespoeld, met succes
Als uw computer helemaal niet aan het cachen is, hoeft u natuurlijk niets te controleren.
Als het DNS-verzoeken in de cache opslaat maar alles prima werkt, kunt u het ook negeren. Maar als u trage of sporadische webpagina-updates ervaart wanneer u op internet surft, of als u de verkeerde webpagina’s ziet, is het waarschijnlijk een goed moment om uw DNS-cache leeg te maken.
| Linux-opdrachten | ||
| Bestanden |
teer · pv · kat · tac · chmod · grep · verschil · sed · ar · Mens · duwd · popd · fsck · testschijf · volg · fd · pandoc · CD · $PAD · awk · meedoen · jq · vouwen · uniek · dagboekctl · staart · stat · ls · fstab · echo · minder · chgrp · chown · rev · Look · snaren · type · hernoemen · ritssluiting · uitpakken · monteren · umount · installeren · fschijf · mkf’s · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · In · lapje · overzetten · klonen · versnipperen · srm |
|
| Processen |
alias · scherm · bovenkant · leuk · renice · voortgang · strace · systeemd · tmux · chsh · geschiedenis · Bij · partij · vrij · welke · dmesg · chfn · gebruikersmod · ps · chroot · xargs · tty · pink · lsof · vmstat · time-out · muur · ja · doden · slaap · sudo · zo · tijd · groepstoevoeging · gebruikersmod · groepen · lshw · stilgelegd · opnieuw opstarten · stoppen · uitschakelen · wachtwoord · lscpu · crontab · datum · bg · bijv |
|
| Netwerken |
netstat · ping · traceroute · ik p · ss · wie is · mislukt2ban · bmon · graven · vinger · nmap · ftp · krullen · wkrijg · wie · wie ben ik · w · iptables · ssh-keygen · ufw |