Slik spyler DNS Cache i OS X Yosemite med discoveryutil

Noen Mac-brukere kan støte på situasjoner der de trenger å spyle DNS-cache i OS X for at en navneserver skal kunne løses riktig, eller at noen DNS-adresseendringer skal bli lagt merke til av den enkelte datamaskinen. Dette er spesielt relevant for systemadministratorer, nettverksadministratorer og webutviklere, men det er sikkert situasjoner der andre brukere kanskje må dumpe og tilbakestille DNS-buffere, som om en bruker har endret filen / etc / hosts og de trenger endringene å tre i kraft uten å starte Mac på nytt.

Longtime Mac-brukere vil vite at tilbakestilling av DNS-cache har endret seg i nesten alle versjoner av Mac OS X, og OS X Yosemite er ikke annerledes, sannsynligvis på grunn av discoveryd som erstatter mDNSResponder, og deretter byttes tilbake til mDNSResponder enda en gang. Uansett er spyling av DNS-cache i Yosemite en terminalkommando, men den adskiller seg litt avhengig av den nøyaktige utgivelsen du bruker av operativsystemet, og det gjør det mulig å slette enten Multicast DNS eller Unicast DNS, eller begge deler. Du vil sannsynligvis slette begge for god mål hvis du prøver å tilbakestille alle DNS-caches på Mac.

Tøm DNS Cache i OS X Yosemite 10.10.4 og OS X 10.10.5

Fra OS X 10.10.4 flyttet videre til 10.10.5, inkludert 10.11, har Apple dratt oppdagetid og erstattet det (eller rettere sagt, tilbake til) mDNSResponder. For å fjerne DNS-caches i OS X Yosemite 10.10.4 og 10.11 El Capitan, og antagelig fremover, er kommandostrengen som følger:

sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;say cache flushed

Den kommandoen spyler alle DNS-caches for OS X 10.10.4+.

Longtime Mac-brukere kan huske at kommandostrengen er i utgangspunktet hva som fungerte i utgivelsen før Yosemite. Med det sagt, vil tidligere versjoner av OS X Yosemite før 10.10.4 bruke en annen kommandostreng som diskuteres nedenfor.

Fjerne DNS-caches i OS X Yosemite (10.10, 10.10.1, 10.10.2, 10.10.3)

Du må bruke Terminal for å tilbakestille hurtigbufferen, du kan finne Terminal-appen i / Programmer / Verktøy / eller starte den med Spotlight. For å fullstendig slette alle DNS-caches i den nyeste versjonen av OS X, målrett både MDNS (Multicast DNS) og UDNS (Unicast DNS) med to forskjellige kommandoer.

Fjern MDNS Cache

sudo discoveryutil mdnsflushcache

Slå tilbake og skriv inn administratorpassordet når du blir bedt om det.

Tøm UDNS Cache

sudo discoveryutil udnsflushcaches

Igjen, trykk tilbake og skriv inn administratorpassordet når du blir bedt om det. Merk at cacher er flertall med sistnevnte kommando, en subtil men viktig syntaksforskjell.

Spyl og tilbakestill alle DNS Caches i OS X Yosemite

Du kan også stryke de to kommandoene sammen hvis du vil, følgende vil selv muntlig kunngjøre når cachene er ryddet:

sudo discoveryutil mdnsflushcache;sudo discoveryutil udnsflushcaches;say flushed

Faktisk er MDNS- og UDNS-cacher annerledes, men jeg har funnet ut at for funksjonell DNS-cache å faktisk slette i OS X Yosemite, er begge kommandoene nødvendige. Det er helt mulig at du bare trenger å rydde den ene eller den andre til dine egne behov.

For de som lurer på, har OS X Yosemite gjort unna med mDNSResponder, så det er ikke nødvendig å drepe den mDNSResponder-prosessen for å oppdatere DNS-caches som i tidligere versjoner av Mac OS X.

Kontrollerer DNS Cache Detaljer i OS X Yosemite

Hvis du endrer eller skal endre DNS, og du vil se noen detaljer om hva som for øyeblikket er cached, kan du bruke følgende kommandoer:

Få UDNS-cachestatistikk:

sudo discoveryutil udnscachestats

Du kan også hente detaljer om multicast DNS-cache med følgende:

sudo discoveryutil mdnscachestats

Begge disse vil gi detaljer om hvor mange DNS-poster som er cached, og tilbyr en rapport som skal se slik ut:

UDNS Cache Stats: Cached 962 of 1750

Hvis du kjører disse kommandoene før og etter å kjøre flushcache-variasjonene, finner du at de burde tilbakestilles til 0 oppføringsbuffer, slik som:

MDNS Cache Stats: lo0: Cached 0 of 2000

Hvordan vet du om det endret seg?

Når du har spylt cache, hvis du vil avgjøre om en navneserver eller IP faktisk har endret seg, kan du bruke kommandoen "grave" med nettadressen slik:

dig osxdaily.com

grave ligner på nslookup, bortsett fra at den har bedre utdata og noen flere detaljer inkludert, inkludert spørringstid, den angitte DNS-serveren som ble brukt til å få tilgang til domenet, og en tidsstempel, som alle kan være verdifulle når du feilsøker navneserverproblemer. Forresten, hvis spørringstiden for dette vises som trist, bør du bruke et verktøy som namebench for å finne en raskere DNS-server for deg, ofte Google DNS eller OpenDNS.

Vet om et annet DNS-cache-triks for de nyeste versjonene av OS X? Gi oss beskjed i kommentarene.