Het leegmaken van de lokale DNS-cache kan HTTP-fouten oplossen en u beschermen tegen DNS-spoofing. Hier is hoe je het op Linux kunt doen.
Wanneer u een website bezoekt met behulp van de domeinnaam, stuurt uw systeem een verzoek naar een DNS-server om het IP-adres voor dat domein op te halen. Dit domein-IP-adrespaar wordt opgeslagen in de DNS-cache voor later gebruik, zodat u niet elke keer verzoeken naar de DNS-server hoeft te sturen om verbinding te maken.
Maar soms raakt de lokale DNS-cache beschadigd en veroorzaakt dit HTTP-fouten. Gelukkig is het leegmaken en opnieuw opbouwen van de DNS-cache op een Linux-computer eenvoudig. Hier is hoe het te doen.
Waarom DNS-cache op Linux spoelen?
Er zijn verschillende redenen waarom u de DNS-cache die op uw systeem is opgeslagen opnieuw wilt opbouwen. Misschien heb je een verouderd DNS-record voor een website en wil je dit opnieuw ophalen van de DNS-server. Of misschien is uw systeem gecompromitteerd en wilt u er zeker van zijn dat er niet met de DNS-cache is geknoeid. bekend als DNS-spoofing.
Wanneer u uw DNS-cache leegmaakt, moet het systeem de DNS-server opnieuw pingen en het nieuwe domein-IP-adresrecord ophalen, waarbij alle verouderde of gecompromitteerde gegevens in het proces worden verwijderd.
Hoe de lokale DNS-cache op Linux te bekijken
Vóór systemd hadden de meeste Linux-distributies geen systeembrede DNS-caching, tenzij een programma zoals dnsmasq of nscd handmatig werd ingesteld. systemd wordt geleverd met systemd-resolved, een service die domeinnamen omzet in IP-adressen en de DNS-vermeldingen in de cache opslaat.
In de volgende secties wordt uitgelegd hoe u de inhoud van de DNS-cache kunt bekijken die is gegenereerd door systemd-resolved, nscd en dnsmasq, zodat u de gegevens in de cache kunt begrijpen voordat u besluit deze te wissen.
Bekijk DNS Cache voor systemd-resolved
Om door het systeem opgeloste cacherecords te bekijken, moet u eerst de service tijdelijk beëindigen en vervolgens de logboeken naar een bestand exporteren.
Begin met het verzenden van een SIGUSR1-signaal om de door het systeem opgeloste service te beëindigen:
sudo killall -USR1 systemd-opgelost
Gebruik het journalctl-commando en de standaard uitvoeroperator om de uitvoer in een tekstbestand op te slaan:
sudo journalctl -u systemd-resolved > ~/cache.txt
U kunt vervolgens de inhoud van het bestand bekijken met een teksteditor zoals Vim:
vim ~/cache.txt
Zoek in het bestand naar "CACHE:" door op te drukken Ontsnappen, typen "/CACHE:", en slaan Binnenkomen. Alle onderstaande DNS-records CACHE: maken deel uit van de lokale DNS-cache. druk op N om naar de volgende set DNS-vermeldingen te gaan als u Vim gebruikt.
Bekijk de lokale DNS-cache voor nscd
Om de door nscd gegenereerde lokale cache te bekijken, moet u de inhoud van de nscd hosts-database lezen met behulp van de opdracht strings.
Op op Debian en Ubuntu gebaseerde distro's bevindt dit bestand zich op /var/cache/nscd/hosts. Voer de volgende opdracht uit om het bestand te bekijken:
sudo strings /var/cache/nscd/hosts | uniek
Om algemene statistieken over de nscd DNS-cache te bekijken, gebruikt u de -G vlag:
sudo nscd -g
Geef de DNS-cache weer die is gegenereerd door dnsmasq
dnsmasq slaat de DNS-cache op in het geheugen, dus het is niet eenvoudig om de exacte records te krijgen. Maar u kunt een kill-signaal naar dnsmasq sturen en de uitvoer loggen om het aantal verwerkte DNS-query's te krijgen.
Om dit te doen, moet u er eerst voor zorgen dat dnsmasq actief is met behulp van de systemctl-opdracht:
sudo systemctl-status dnsmasq
Als de status wordt weergegeven Actief, voer de volgende opdracht uit om de service te beëindigen:
sudo pkill-USR1 dnsmasq
Gebruik de opdracht journalctl om de dnsmasq-logboeken uit te pakken en op te slaan in een tekstbestand:
sudo journalctl -u dnsmasq > ~/cache.txt
Bekijk ten slotte de inhoud van het bestand met behulp van een hulpprogramma voor het bekijken van bestanden zoals kat of minder:
kat ~/cache.txt
Hoe DNS-cache op Linux te spoelen
Door de DNS-cache leeg te maken, verwijdert u de DNS-records in de cache van uw computer. Dit dwingt het om een verzoek naar de DNS-server te sturen om de nieuwe DNS-vermeldingen op te halen.
Hier leest u hoe u de DNS-cache op Linux kunt leegmaken:
Systemd-resolved gebruiken
U kunt de opdracht resolvectl gebruiken om de DNS-cache leeg te maken die is opgeslagen door systemd-resolved:
sudo resolvectl flush-caches
Als u Ubuntu 17.04 of 18.04 gebruikt, gebruikt u de opdracht systemd-resolved om de cache leeg te maken:
sudo systemd-resolved --flush-caches
Flush de nscd DNS-cache op Linux
De handigste manier om de DNS-cache voor nscd te verwijderen, is door de service eenvoudig opnieuw te starten. U kunt dit doen door het volgende uit te voeren:
sudo /etc/init.d/nscd opnieuw opstarten
Als dat niet werkt, controleer dan eerst of de lokale cache die op uw pc is opgeslagen, persistent is. U kunt de -G vlag om het te verifiëren:
sudo nscd -g
Gebruik in dat geval de -i markeer met de opdracht nscd om de records te wissen (i betekent ongeldig maken):
sudo nscd -i hosts
Verwijder de dnsmasq DNS-cache
Het leegmaken van de door dnsmasq gegenereerde DNS-cache is eenvoudig. Aangezien de cache in het geheugen is opgeslagen, worden bij het herstarten van de service alle opgeslagen vermeldingen verwijderd.
Voer de volgende systemctl-opdracht uit om dnsmasq opnieuw te starten:
sudo systemctl herstart dnsmasq
Of geef de volgende opdracht:
service dnsmasq opnieuw opstarten
Voer het beheerderswachtwoord in als daarom wordt gevraagd. dnsmasq wordt nu opnieuw opgestart en al uw bestaande DNS-vermeldingen worden uit de cache verwijderd.
Na het leegmaken van de DNS-cache kunt u het beste de lokale cachevermeldingen bekijken en controleren of de gegevens met succes zijn verwijderd. Je kunt dig gebruiken, een van de veel Linux-commando's voor het oplossen van netwerkproblemenen controleer de Query-tijdwaarde in de uitvoer. Als het meer dan 0 msec is, is de cache met succes gewist (0 msec betekent dat het domeinrecord zich nog in de cache bevindt).
graaf google.com
Wis de DNS-cache van Google Chrome
De webbrowser die u vaak gebruikt, slaat ook de DNS-records op in de cache. Wanneer u een URL invoert, zoekt het systeem naar een cachevermelding in de lokale browsercache. Als het niet wordt gevonden, zoekt het naar de records in de lokale systeemcache. Het is van cruciaal belang om de DNS-cache van uw webbrowser te wissen, aangezien deze een hogere prioriteit heeft dan de systeembrede cache.
Laten we ter demonstratie de DNS-cache in Google Chrome leegmaken. Er zijn ook manieren om dit in andere browsers te doen, dus u kunt het beste googlen hoe u dit moet doen voor de browser die u gebruikt.
Typ om te beginnen "chrome://net-internals/#dns" in de URL-balk en druk op Binnenkomen:
Klik Wis hostcache om de DNS-vermeldingen te wissen die zijn opgeslagen in Google Chrome.
Linux is het beste besturingssysteem om netwerken te leren
Linux lijkt in het begin misschien ingewikkeld, maar als je wat tijd investeert in het leren hoe het werkt, zul je snel beseffen dat het fantastisch is, en misschien zelfs beter dan Windows of macOS.
De meeste online servers draaien op Linux, en dat is een van de redenen waarom Linux ideaal is als je wilt leren netwerken, of wilt weten hoe computers in het algemeen werken.