Att spola den lokala DNS-cachen kan lösa HTTP-fel och skydda dig från DNS-spoofing. Så här kan du göra det på Linux.
När du går in på en webbplats med hjälp av dess domännamn, skickar ditt system en begäran till en DNS-server för att få IP-adressen för den domänen. Detta domän-IP-adresspar sparas i DNS-cachen för senare användning så att du inte behöver skicka förfrågningar till DNS-servern varje gång för att göra en anslutning.
Men ibland blir den lokala DNS-cachen skadad och orsakar HTTP-fel. Lyckligtvis är det enkelt att spola och bygga om DNS-cachen på en Linux-dator. Så här gör du.
Varför spola DNS-cache på Linux?
Det finns flera anledningar till varför du kanske vill bygga om DNS-cachen som är lagrad på ditt system. Kanske har du en föråldrad DNS-post för en webbplats och vill hämta den igen från DNS-servern. Eller kanske har ditt system äventyrats och du vill se till att DNS-cachen inte har manipulerats. känd som DNS-spoofing.
När du tömmer din DNS-cache måste systemet pinga DNS-servern igen och hämta den nya domän-IP-adressposten från den, och ta bort alla föråldrade eller komprometterade data under processen.
Hur man visar den lokala DNS-cachen på Linux
Innan systemd hade de flesta Linux-distributioner inte systemomfattande DNS-cache, såvida inte ett program som dnsmasq eller nscd konfigurerades manuellt. systemd kommer med systemd-resolved, en tjänst som löser domännamn till IP-adresser och cachar DNS-posterna.
Följande avsnitt kommer att guida dig om hur du visar DNS-cacheinnehållet som genereras av systemd-resolved, nscd och dnsmasq, så att du kan förstå cachad data innan du bestämmer dig för att tömma den.
Visa DNS-cache för systemd-löst
För att se systemupplösta cacheposter måste du först tillfälligt döda tjänsten och sedan exportera dess loggar till en fil.
Börja med att skicka en SIGUSR1-signal för att döda den systemd-lösta tjänsten:
sudo killall -USR1 systemd-löst
Använda sig av kommandot journalctl och standardutdataoperatören för att spara utdata till en textfil:
sudo journalctl -u systemd-resolved > ~/cache.txt
Du kan sedan se innehållet i filen med en textredigerare som Vim:
vim ~/cache.txt
Sök efter "CACHE:" i filen genom att trycka på Fly, skriver"/CACHE:", och slår Stiga på. Alla DNS-poster listade under CACHE: är en del av den lokala DNS-cachen. Tryck n för att hoppa till nästa uppsättning DNS-poster om du använder Vim.
Visa den lokala DNS-cachen för nscd
För att se den lokala cachen som genereras av nscd måste du läsa innehållet i nscd hosts-databasen med kommandot strings.
På Debian- och Ubuntu-baserade distros finns den här filen på /var/cache/nscd/hosts. Kör följande kommando för att visa filen:
sudo strängar /var/cache/nscd/hosts | unik
För att se allmän statistik om nscd DNS-cache, använd -g flagga:
sudo nscd -g
Visa DNS-cachen genererad av dnsmasq
dnsmasq lagrar DNS-cachen i minnet så det är inte lätt att få de exakta posterna. Men du kan skicka en dödsignal till dnsmasq och logga dess utdata för att få antalet DNS-förfrågningar som behandlas.
För att göra det, se först till att dnsmasq är igång med kommandot systemctl:
sudo systemctl status dnsmasq
Om statusen visas Aktiva, kör följande kommando för att döda tjänsten:
sudo pkill -USR1 dnsmasq
Använd kommandot journalctl, extrahera dnsmasq-loggarna och spara dem i en textfil:
sudo journalctl -u dnsmasq > ~/cache.txt
Till sist, se innehållet i filen med hjälp av ett filvisningsverktyg som katt eller mindre:
katt ~/cache.txt
Hur man spolar DNS-cache på Linux
Att tömma DNS-cachen innebär att du tar bort de cachade DNS-posterna från din dator. Detta tvingar den att skicka en begäran till DNS-servern för att hämta de nya DNS-posterna.
Så här kan du tömma DNS-cachen på Linux:
Använder systemd-resolved
Du kan använda kommandot resolvectl för att tömma DNS-cachen som lagras av systemd-resolved:
sudo resolvectl flush-cacher
Om du kör Ubuntu 17.04 eller 18.04, använd kommandot systemd-resolved för att tömma cachen:
sudo systemd-resolved --flush-cacher
Spola nscd DNS-cachen på Linux
Det bekvämaste sättet att ta bort DNS-cachen för nscd är genom att helt enkelt starta om tjänsten. Du kan göra det genom att köra:
sudo /etc/init.d/nscd starta om
Om det inte fungerar, kontrollera först om den lokala cachen som är lagrad på din PC är beständig. Du kan använda -g flagga för att verifiera det:
sudo nscd -g
Om så är fallet, använd -jag flagga med kommandot nscd för att rensa posterna (i står för ogiltigförklara):
sudo nscd -i värdar
Ta bort dnsmasq DNS-cache
Det är enkelt att spola DNS-cachen som genereras av dnsmasq. Eftersom cachen är lagrad i minnet raderas alla lagrade poster om du startar om tjänsten.
För att starta om dnsmasq, kör följande systemctl-kommando:
sudo systemctl starta om dnsmasq
Eller utfärda följande kommando:
service dnsmasq omstart
Ange administratörslösenordet om du uppmanas. dnsmasq kommer nu att starta om och alla dina befintliga DNS-poster kommer att tas bort från cachen.
Efter att ha tömt DNS-cachen är det bäst att se de lokala cache-posterna och verifiera om data har tagits bort. Du kan använda dig, en av de många nätverksfelsökning av Linux-kommandon, och kontrollera värdet för frågetid i utdata. Om det är mer än 0 ms, rensades cachen framgångsrikt (0 ms betyder att domänposten fortfarande finns i cachen).
gräva google.com
Rensa Google Chromes DNS-cache
Den webbläsare du ofta använder cachar också DNS-posterna. När du anger en URL söker systemet efter en cachepost i den lokala webbläsarens cache. Om den inte hittas söker den efter posterna i det lokala systemets cache. Det är viktigt att rensa din webbläsares DNS-cache eftersom den har högre prioritet än den systemomfattande cachen.
För demonstration, låt oss tömma DNS-cachen i Google Chrome. Det finns sätt att göra det på andra webbläsare också, så det är bäst att du googlar hur du gör det för den webbläsare du använder.
För att börja, skriv "chrome://net-internals/#dns" i URL-fältet och tryck Stiga på:
Klick Rensa värdcache för att rensa DNS-posterna lagrade i Google Chrome.
Linux är det bästa operativsystemet för att lära sig nätverk
Linux kan tyckas komplicerat till en början, men om du investerar lite tid i att lära dig hur det fungerar kommer du snabbt att inse att det är fantastiskt, och kanske till och med bättre än Windows eller macOS.
De flesta onlineservrar kör Linux, och det är en av anledningarna till att Linux är idealiskt om du vill lära dig nätverka, eller vill veta hur datorer fungerar i allmänhet.