At tømme den lokale DNS-cache kan løse HTTP-fejl og beskytte dig mod DNS-spoofing. Sådan kan du gøre det på Linux.
Når du tilgår et websted med dets domænenavn, sender dit system en anmodning til en DNS-server om at få IP-adressen for det pågældende domæne. Dette domæne-IP-adressepar gemmes i DNS-cachen til senere brug, så du ikke behøver at sende anmodninger til DNS-serveren hver gang for at oprette forbindelse.
Men nogle gange bliver den lokale DNS-cache ødelagt og forårsager HTTP-fejl. Heldigvis er det ligetil at skylle og genopbygge DNS-cachen på en Linux-computer. Sådan gør du.
Hvorfor tømme DNS-cache på Linux?
Der er flere grunde til, at du måske ønsker at genopbygge DNS-cachen, der er gemt på dit system. Måske har du en forældet DNS-record for en hjemmeside og ønsker at hente den igen fra DNS-serveren. Eller måske er dit system blevet kompromitteret, og du vil sikre dig, at DNS-cachen ikke er blevet manipuleret, også kendt som DNS-spoofing.
Når du tømmer din DNS-cache, skal systemet pinge DNS-serveren igen og hente den nye domæne-IP-adressepost fra den, og fjerne forældede eller kompromitterede data i processen.
Sådan får du vist den lokale DNS-cache på Linux
Før systemd havde de fleste Linux-distributioner ikke systemdækkende DNS-cache, medmindre et program som dnsmasq eller nscd blev sat op manuelt. systemd leveres med systemd-resolved, en tjeneste, der løser domænenavne til IP-adresser og cacher DNS-posterne.
De følgende afsnit vil guide dig til, hvordan du får vist DNS-cacheindholdet, der er genereret af systemd-resolved, nscd og dnsmasq, så du kan forstå de cachelagrede data, før du beslutter dig for at tømme dem.
Se DNS Cache for systemd-løst
For at se systemd-løste cache-poster skal du først midlertidigt dræbe tjenesten og derefter eksportere dens logfiler til en fil.
Begynd med at sende et SIGUSR1-signal for at dræbe den systemd-løste tjeneste:
sudo killall -USR1 systemd-løst
Brug kommandoen journalctl og standardoutputoperatøren for at gemme outputtet til en tekstfil:
sudo journalctl -u systemd-resolved > ~/cache.txt
Du kan derefter se indholdet af filen ved hjælp af en teksteditor som Vim:
vim ~/cache.txt
I filen skal du søge efter "CACHE:" ved at trykke på Flugt, skriver"/CACHE:", og slår Gå ind. Alle DNS-poster, der er angivet under CACHE: er en del af den lokale DNS-cache. Trykke n for at hoppe til næste sæt DNS-poster, hvis du bruger Vim.
Se den lokale DNS-cache for nscd
For at se den lokale cache, der er genereret af nscd, skal du læse indholdet af nscd-værtsdatabasen ved hjælp af kommandoen strings.
På Debian- og Ubuntu-baserede distros er denne fil placeret på /var/cache/nscd/hosts. Kør følgende kommando for at se filen:
sudo-strenge /var/cache/nscd/hosts | enestående
For at se generel statistik om nscd DNS-cachen skal du bruge -g flag:
sudo nscd -g
Vis DNS-cachen genereret af dnsmasq
dnsmasq gemmer DNS-cachen i hukommelsen, så det er ikke nemt at få de nøjagtige poster. Men du kan sende et kill-signal til dnsmasq og logge dets output for at få behandlet antallet af DNS-forespørgsler.
For at gøre det skal du først sørge for, at dnsmasq er oppe og køre forbi ved hjælp af systemctl-kommandoen:
sudo systemctl status dnsmasq
Hvis status viser Aktiv, kør følgende kommando for at dræbe tjenesten:
sudo pkill -USR1 dnsmasq
Brug journalctl-kommandoen til at udtrække dnsmasq-logfilerne og gemme dem i en tekstfil:
sudo journalctl -u dnsmasq > ~/cache.txt
Se endelig indholdet af filen ved hjælp af et filvisningsværktøj som kat eller mindre:
kat ~/cache.txt
Sådan skylles DNS-cache på Linux
At tømme DNS-cachen betyder at fjerne de cachelagrede DNS-poster fra din computer. Dette tvinger den til at sende en anmodning til DNS-serveren om at hente de nye DNS-poster.
Sådan kan du tømme DNS-cachen på Linux:
Bruger systemd-resolved
Du kan bruge kommandoen resolvectl til at tømme DNS-cachen, der er gemt af systemd-resolved:
sudo resolvectl flush-caches
Hvis du kører Ubuntu 17.04 eller 18.04, skal du bruge kommandoen systemd-resolved til at tømme cachen:
sudo systemd-opløst --flush-caches
Skyl nscd DNS-cachen på Linux
Den mest bekvemme måde at fjerne DNS-cachen for nscd er ved blot at genstarte tjenesten. Du kan gøre det ved at køre:
sudo /etc/init.d/nscd genstart
Hvis det ikke virker, skal du først kontrollere, om den lokale cache, der er gemt på din pc, er vedvarende. Du kan bruge -g flag for at bekræfte det:
sudo nscd -g
Hvis det er tilfældet, skal du bruge -jeg flag med kommandoen nscd for at rydde posterne (jeg står for ugyldiggøre):
sudo nscd -i værter
Fjern dnsmasq DNS-cachen
Det er enkelt at tømme DNS-cachen genereret af dnsmasq. Da cachen er gemt i hukommelsen, sletter genstart af tjenesten alle de gemte poster.
For at genstarte dnsmasq skal du køre følgende systemctl-kommando:
sudo systemctl genstart dnsmasq
Eller udsend følgende kommando:
service dnsmasq genstart
Indtast administratoradgangskoden, hvis du bliver bedt om det. dnsmasq vil nu genstarte, og alle dine eksisterende DNS-poster vil blive fjernet fra cachen.
Efter at have tømt DNS-cachen, er det bedst at se de lokale cache-poster og kontrollere, om dataene blev fjernet. Du kan bruge dig, en af de mange netværksfejlfinding Linux-kommandoer, og kontroller værdien for forespørgselstid i outputtet. Hvis det er mere end 0 msek, blev cachen ryddet (0 msek betyder, at domæneposten stadig er i cachen).
grave google.com
Ryd Google Chromes DNS-cache
Den webbrowser, du ofte bruger, cacherer også DNS-posterne. Når du indtaster en URL, søger systemet efter en cache-indgang i den lokale browser-cache. Hvis den ikke findes, søger den efter posterne i den lokale systemcache. Det er afgørende at rydde din webbrowsers DNS-cache, da den har højere forrang end den systemdækkende cache.
Til demonstration, lad os tømme DNS-cachen i Google Chrome. Der er også måder at gøre det på i andre browsere, så det er bedst at du googler hvordan du gør det til den browser du bruger.
For at begynde skal du skrive "chrome://net-internals/#dns" i URL-linjen og tryk Gå ind:
Klik Ryd værtscache for at rydde de DNS-poster, der er gemt i Google Chrome.
Linux er det bedste operativsystem til at lære netværk
Linux kan virke kompliceret i starten, men hvis du investerer lidt tid i at lære, hvordan det fungerer, vil du hurtigt indse, at det er fantastisk, og måske endda bedre end Windows eller macOS.
De fleste online-servere kører Linux, og det er en af grundene til, at Linux er ideel, hvis du ønsker at lære netværk, eller ønsker at vide, hvordan computere fungerer generelt.