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.

instagram viewer

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.