Å tømme den lokale DNS-bufferen kan løse HTTP-feil og beskytte deg mot DNS-spoofing. Her er hvordan du kan gjøre det på Linux.
Når du går inn på et nettsted ved å bruke domenenavnet, sender systemet en forespørsel til en DNS-server om å få IP-adressen for det domenet. Dette domene-IP-adresseparet lagres i DNS-cachen for senere bruk, slik at du ikke trenger å sende forespørsler til DNS-serveren hver gang for å opprette en tilkobling.
Men noen ganger blir den lokale DNS-cachen ødelagt og forårsaker HTTP-feil. Heldigvis er det enkelt å skylle og gjenoppbygge DNS-cachen på en Linux-datamaskin. Slik gjør du det.
Hvorfor tømme DNS-buffer på Linux?
Det er flere grunner til at du kanskje vil gjenoppbygge DNS-bufferen som er lagret på systemet ditt. Kanskje du har en utdatert DNS-post for et nettsted og ønsker å hente den på nytt fra DNS-serveren. Eller kanskje systemet ditt har blitt kompromittert og du vil forsikre deg om at DNS-cachen ikke er blitt tuklet med, også kjent som DNS-spoofing.
Når du tømmer DNS-bufferen din, må systemet pinge DNS-serveren igjen og hente den nye domene-IP-adresseposten fra den, og fjerne utdaterte eller kompromitterte data i prosessen.
Hvordan se den lokale DNS-bufferen på Linux
Før systemd hadde de fleste Linux-distribusjoner ikke systemomfattende DNS-caching, med mindre et program som dnsmasq eller nscd ble satt opp manuelt. systemd kommer med systemd-resolved, en tjeneste som løser domenenavn til IP-adresser og cacher DNS-oppføringene.
De følgende delene vil veilede deg om hvordan du viser DNS-bufferinnholdet generert av systemd-resolved, nscd og dnsmasq, slik at du kan forstå de bufrede dataene før du bestemmer deg for å tømme den.
Se DNS Cache for systemd-løst
For å se systemoppløste cache-poster må du først drepe tjenesten midlertidig og deretter eksportere loggene til en fil.
Begynn med å sende et SIGUSR1-signal for å drepe den systemd-løste tjenesten:
sudo killall -USR1 systemd-løst
Bruk journalctl-kommandoen og standard utdataoperatør for å lagre utdataene til en tekstfil:
sudo journalctl -u systemd-resolved > ~/cache.txt
Du kan deretter se innholdet i filen ved å bruke et tekstredigeringsprogram som Vim:
vim ~/cache.txt
I filen søker du etter "CACHE:" ved å trykke Flukt, skriver "/CACHE:", og slår Tast inn. Alle DNS-postene som er oppført under CACHE: er en del av den lokale DNS-cachen. trykk n for å hoppe til neste sett med DNS-oppføringer hvis du bruker Vim.
Se den lokale DNS-bufferen for nscd
For å se den lokale hurtigbufferen generert av nscd, må du lese innholdet i nscd hosts-databasen ved å bruke strings-kommandoen.
På Debian- og Ubuntu-baserte distroer er denne filen plassert på /var/cache/nscd/hosts. Kjør følgende kommando for å se filen:
sudo-strenger /var/cache/nscd/hosts | unik
For å se generell statistikk om nscd DNS-cachen, bruk -g flagg:
sudo nscd -g
Vis DNS-bufferen generert av dnsmasq
dnsmasq lagrer DNS-cachen i minnet, så det er ikke lett å få de nøyaktige postene. Men du kan sende et drepesignal til dnsmasq og logge utdataene for å få behandlet antall DNS-spørringer.
For å gjøre det, sørg først for at dnsmasq er oppe og kjører forbi ved å bruke systemctl-kommandoen:
sudo systemctl status dnsmasq
Hvis statusen vises Aktiv, kjør følgende kommando for å drepe tjenesten:
sudo pkill -USR1 dnsmasq
Bruk journalctl-kommandoen, pakk ut dnsmasq-loggene og lagre dem i en tekstfil:
sudo journalctl -u dnsmasq > ~/cache.txt
Til slutt, se innholdet i filen ved hjelp av et filvisningsverktøy som katt eller mindre:
katt ~/cache.txt
Slik tømmer du DNS-buffer på Linux
Å tømme DNS-bufferen betyr å fjerne de bufrede DNS-postene fra datamaskinen. Dette tvinger den til å sende en forespørsel til DNS-serveren om å hente de nye DNS-oppføringene.
Slik kan du tømme DNS-cachen på Linux:
Bruker systemd-løst
Du kan bruke resolvectl-kommandoen til å tømme DNS-bufferen som er lagret av systemd-resolved:
sudo resolvectl flush-cacher
Hvis du kjører Ubuntu 17.04 eller 18.04, bruk systemd-resolved kommandoen for å tømme hurtigbufferen:
sudo systemd-løst --flush-cacher
Tøm nscd DNS-bufferen på Linux
Den mest praktiske måten å fjerne DNS-bufferen for nscd er ved å starte tjenesten på nytt. Du kan gjøre det ved å kjøre:
sudo /etc/init.d/nscd restart
Hvis det ikke fungerer, må du først sjekke om den lokale hurtigbufferen som er lagret på PC-en din, er vedvarende. Du kan bruke -g flagg for å bekrefte det:
sudo nscd -g
Hvis det er tilfelle, bruk -Jeg flagg med nscd-kommandoen for å slette postene (Jeg står for ugyldiggjøre):
sudo nscd -i verter
Fjern dnsmasq DNS Cache
Å tømme DNS-cachen generert av dnsmasq er enkelt. Siden cachen er lagret i minnet, sletter omstart av tjenesten alle lagrede oppføringer.
For å starte dnsmasq på nytt, kjør følgende systemctl-kommando:
sudo systemctl start dnsmasq på nytt
Eller utfør følgende kommando:
service dnsmasq omstart
Skriv inn administratorpassordet hvis du blir bedt om det. dnsmasq vil nå starte på nytt og alle dine eksisterende DNS-oppføringer vil bli fjernet fra hurtigbufferen.
Etter å ha tømt DNS-hurtigbufferen, er det best å se de lokale hurtigbufferoppføringene og bekrefte om dataene ble fjernet. Du kan bruke grave, en av de mange nettverksfeilsøking av Linux-kommandoer, og sjekk verdien for spørringstid i utdataene. Hvis det er mer enn 0 msek, ble hurtigbufferen tømt (0 msek betyr at domeneposten fortsatt er i hurtigbufferen).
grave google.com
Tøm Google Chromes DNS-buffer
Nettleseren du bruker ofte bufrer også DNS-postene. Når du skriver inn en URL, søker systemet etter en cache-oppføring i den lokale nettleserbufferen. Hvis den ikke blir funnet, ser den etter postene i den lokale systembufferen. Det er avgjørende å tømme nettleserens DNS-cache siden den har høyere prioritet enn den systemomfattende cachen.
For demonstrasjon, la oss tømme DNS-bufferen i Google Chrome. Det finnes måter å gjøre det på i andre nettlesere også, så det er best at du googler hvordan du gjør det for nettleseren du bruker.
For å begynne, skriv "chrome://net-internals/#dns" i URL-linjen og trykk Tast inn:
Klikk Tøm vertsbufferen for å slette DNS-oppføringene som er lagret i Google Chrome.
Linux er det beste operativsystemet for å lære nettverk
Linux kan virke komplisert i begynnelsen, men hvis du investerer litt tid i å lære hvordan det fungerer, vil du raskt innse at det er fantastisk, og kanskje til og med bedre enn Windows eller macOS.
De fleste nettservere kjører Linux, og det er en av grunnene til at Linux er ideelt hvis du ønsker å lære nettverk, eller ønsker å vite hvordan datamaskiner fungerer generelt.