Har du nogensinde oplevet, at et nydesignet website stadig viser den gamle version, selv om udvikleren sværger på, at alt er lagt over? Eller at Safari kaster en kryptisk SSL-fejl i hovedet på dig, mens kollegaen ved siden af surfer problemfrit? Meget ofte er synderen DNS-cachen - den lille, usynlige huskeseddel i macOS, der gemmer adresseopslag for at spare millisekunder, men som en gang imellem bliver hængende i fortiden.
På IT Forum Danmark får vi jævnligt spørgsmål som: “Domænet er flyttet, hvorfor rammer jeg stadig den gamle server?” eller “Hvorfor virker mailrecordet ikke efter ændringen i går?”. Svaret er ofte simpelt: Tøm DNS-cachen, og prøv igen.
I denne guide viser vi dig - trin for trin - præcis, hvordan du nulstiller DNS-cachen i Terminal på både Sonoma, Ventura, Monterey, Big Sur og ældre versioner af macOS. Undervejs får du korte forklaringer på, hvornår det giver mening at trykke på den virtuelle “nulstil-knap”, hvilke kommandoer der virker i hvilke macOS-udgaver, samt hurtige måder at kontrollere, om operationen rent faktisk gjorde en forskel.
Er du klar til at befri din Mac for stædige DNS-poster og få nettet til at spille igen? Så læs videre - vi lover, det tager mindre tid end at genstarte maskinen.
Hvad er DNS-cachen, og hvornår giver det mening at tømme den?
Domain Name System-cachen i macOS er et lille, lokalt lager hvor operativsystemets mDNSResponder-tjeneste gemmer resultaterne af nyligt foretagne navneopslag. Når du indtaster en webadresse, kan macOS derfor hente IP-adressen direkte fra cachen i stedet for at spørge dine DNS-servere igen, hvilket normalt giver hurtigere sideindlæsning og færre netværkspakker. Problemet opstår, når de gemte poster ikke længere er korrekte - f.eks. fordi et domæne er flyttet til en ny server eller fordi TTL-tiden (Time To Live) ikke blev respekteret. I sådanne situationer vil computeren fortsat sende trafikken til den gamle IP, hvilket kan føre til timeout-fejl, fejlagtige SSL-certifikater eller helt manglende forbindelse.
At tømme systemets DNS-cache er derfor relevant, når
• et domæne eller subdomæne er flyttet til en ny hostingudbyder,
• du netop har oprettet eller ændret A-, CNAME- eller MX-records og vil se ændringen straks,
• du møder uforklarlige SSL-mismatch-fejl, selvom certifikatet er korrekt på serveren,
• Safari, Mail eller andre apps hænger ved “Looking up host…” eller giver DNS-timeouts.
Bemærk forskellen på systemets DNS-cache og browserens cache: Førstnævnte ligger på OS-niveau og deles af alle programmer, mens browserens cache (f.eks. Chromes interne DNS-cache og socket-pool) kun påvirker den enkelte browser. Rydder du kun browserens cache, vil det ikke hjælpe, hvis selve macOS allerede har gemt en ugyldig post - og omvendt.
Forberedelser: krav, versionstjek og kommando-overblik
Forudsætninger: Du skal være logget ind på en brugerkonto med administrator-rettigheder, da de kommende kommandoer køres med sudo. Åbn Apples indbyggede Terminal (Finder → Programmer → Hjælpeprogrammer → Terminal), eller søg efter ”Terminal” med Spotlight (⌘+Mellemrum). Sørg for, at du har en stabil netværksforbindelse - ellers kan det være svært at vurdere, om problemer skyldes DNS-cache eller netværket i sig selv.
Tjek din macOS-version: På menulinjen vælger du → ”Om denne Mac”, hvor versionen står under macOS-logoet (f.eks. macOS Ventura 13.4). Vil du hellere bruge Terminal, kan du køre sw_vers -productVersion
. Versionsnummeret afgør, hvilken kommando du skal bruge til at tømme DNS-cachen.
Kommando-overblik pr. macOS-version:
• macOS 10.10.0 - 10.10.3 (tidlig Yosemite): sudo discoveryutil udnsflushcaches
+ sudo discoveryutil mdnsflushcaches
• macOS 10.10.4 og nyere: sudo dscacheutil -flushcache
efterfulgt af sudo killall -HUP mDNSResponder
• Enkelte mellemliggende builds (bl.a. 10.11 El Capitan betaer) kan desuden kræve sudo killall mDNSResponderHelper
.
Disse kommandoer nulstiller både Unicast- (UDNS) og Multicast-(mDNS) cachene, så navneopslag hentes friskt fra de definerede DNS-servere.
Vigtigt at vide: Terminalen giver ingen synlig bekræftelse, når cachen er tømt; kommandoerne afsluttes blot uden fejl. Ser du ingen fejlmeddelelser, er processen fuldført. Du kan derfor roligt gå videre til at teste navneopslag eller følge med i loggen (f.eks. via log stream --predicate 'process == "mDNSResponder"'
) for at se de nye forespørgsler rulle ind.
Trin-for-trin: Tøm DNS-cachen i Terminal
Åbn først Terminal (find den via Spotlight eller i Programmer ▸ Hjælpeprogrammer). Kør derefter den kombination, som gælder for alle nyere udgaver af macOS - fra macOS 11 (Big Sur) til macOS 14 (Sonoma):sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
Når du trykker Retur efter den første kommando, bliver du mødt af en adgangskode-prompt: indtast din administratoradgangskode (tegnene vises ikke) og tryk Retur igen. Begge kommandoer kører lydløst; ingen bekræftelse er i sigte, men DNS-cachen er nu tømt. Ønsker du en genvej, kan du tilføje et alias til din shell-konfiguration (f.eks. i ~/.zshrc
): alias flushdns="sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder"
, genindlæs filen med source ~/.zshrc
, og fremover nøjes med flushdns
.
Bruger du en ældre macOS-version, er kommandoerne lidt anderledes: I macOS 10.10.0-10.10.3 (tidlig Yosemite) anvendes sudo discoveryutil mdnsflushcache
efterfulgt af sudo discoveryutil udnsflushcaches
. Fra 10.10.4 til og med 10.13 (Sierra/High Sierra) vender Apple tilbage til mDNSResponder
, men enkelte mellemversioner kræver også et sudo killall mDNSResponderHelper
. Som tommelfingerregel: virker dscacheutil
og mDNSResponder
ikke, så prøv discoveryutil
; og hvis navneopslag stadig driller, supplér med mDNSResponderHelper
eller en fuld systemgenstart. På den måde er du dækket ind, uanset om din Mac kører et topmoderne eller et aldrende system.
Verificering, fejlfinding og nyttige tips
Efter en flush er der som nævnt ingen synlig bekræftelse, så du må selv tjekke om de nye poster slår igennem. Det kan du gøre med kommanderne dig domæne.dk, nslookup domæne.dk eller et hurtigt ping domæne.dk og sammenligne svaret (IP-adresse, TTL-værdi) før og efter flushet. Vil du se, hvilke resolver-services der pt. er indlæst i macOS, kan du køre scutil --dns. Endelig kan du åbne et separat Terminal-vindue og køre log stream --info --predicate 'process == "mDNSResponder"'; her dukker der en “Flushed cache”-linje op, hvis mDNSResponder rent faktisk har nulstillet cachen.
Oplever du fortsat døde navneopslag, er første trin ofte et hurtigt netværksreset: slå Wi-Fi fra og til, eller træk Ethernet-kablet ud og ind igen. Hjælper det ikke, kan du tvinge en genindlæsning af resolveren med sudo killall -HUP mDNSResponder (eller sudo killall mDNSResponderHelper på ældre systemer). Vent 5-10 sekunder og test igen med dig. Nogle brugere har også held med bare at skifte til en anden DNS-server (fx 1.1.1.1 eller 8.8.8.8) for at udelukke fejl hos den oprindelige udbyder.
Hvis problemet stadig eksisterer, så gennemgå de sædvanlige syndere: 1) Tjek at de konfigurerede DNS-servere i Systemindstillinger › Netværk er korrekte. 2) Kig i /etc/hosts efter forældede overrides. 3) Deaktiver evt. VPN, firewall eller proxy midlertidigt - de kan cache eller filtrere forespørgsler. 4) Ryd browserens egen DNS-/socket-cache (i Chrome: chrome://net-internals/#dns
). 5) Som sidste udvej kan du genstarte hele maskinen; det nulstiller alle socket-tabeller og lokale caches i én omgang.
Bedste praksis ved DNS-ændringer: planlæg ændringen uden for spidsbelastning, sænk TTL-værdien på forhånd, og hav altid en fald-tilbage-post klar. Efter ændring laver du en hurtig tjekliste: dig fra flere geografiske steder (fx dnschecker.org), flush lokal cache, test HTTPS-certifikater og kør både IPv4 og IPv6 opslag. Gem evt. et alias i ~/.zshrc
: alias flushdns='sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder'
, så er næste flush kun én kommando væk.