Hur spola DNS Cache i OS X Yosemite med discoveryutil

Vissa Mac-användare kan stöta på situationer där de behöver spola DNS-cacheminne i OS X för att en namnservern ska kunna lösa sig korrekt, eller för att vissa ändringar av DNS-adresser ska märkas av deras enskilda dator. Detta är särskilt relevant för systemadministratörer, nätverksadministratörer och webbutvecklare, men det finns säkert situationer där andra användare kan behöva dumpa och återställa DNS-cachar, som om en användare har ändrat filen / etc / hosts och de behöver ändringarna att träda i kraft utan att starta om Mac.

Longtime Mac-användare vet att återställande av DNS-cachen har ändrats i nästan alla versioner av Mac OS X, och OS X Yosemite är inte annorlunda, troligen på grund av att DiscoverID ersätter mDNSResponder och sedan återgår till mDNSResponder än en gång. Oavsett att spolning av DNS-cacheminne i Yosemite förblir ett terminalkommando, men det skiljer sig något beroende på det exakta släpp du använder av operativsystemet, och det låter dig rensa antingen Multicast DNS eller Unicast DNS eller båda. Du kommer noga att rensa båda för en bra åtgärd om du försöker återställa alla DNS-cachar på Mac.

Rensa DNS Cache i OS X Yosemite 10.10.4 och OS X 10.10.5

Från OS X 10.10.4 flyttade fram till 10.10.5, inklusive 10.11, har Apple duggat upptäckt och har ersatt det (eller snarare tillbaka till) mDNSResponder. Således, för att rensa DNS-cachar i OS X Yosemite 10.10.4 och 10.11 El Capitan, och förmodligen framåt, är kommandosträngen följande:

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

Det här kommandot spolar alla DNS-cachar för OS X 10.10.4+.

Longtime Mac-användare kan komma ihåg att kommandosträngen är i grunden vad som fungerade i utgåvan före Yosemite. Med det sagt kommer tidigare versioner av OS X Yosemite före 10.10.4 att använda en annan kommandosträng som diskuteras nedan.

Rensa DNS-cachar i OS X Yosemite (10.10, 10.10.1, 10.10.2, 10.10.3)

Du måste använda Terminal för att återställa cachen, du kan hitta Terminal-appen i / Program / Verktyg / eller starta den med Spotlight. För att fullständigt rensa alla DNS-caches i den senaste versionen av OS X, rikta både MDNS (Multicast DNS) och UDNS (Unicast DNS) med två olika kommandon.

Rensa MDNS Cache

sudo discoveryutil mdnsflushcache

Slå tillbaka och skriv in administratörslösenordet när det begärs.

Rensa UDNS Cache

sudo discoveryutil udnsflushcaches

Återigen, tryck tillbaka och skriv in admin-lösenordet när du begär det. Observera att cacher är plural med det senare kommandot, en subtil men viktig syntaxskillnad.

Spola och återställ alla DNS-Caches i OS X Yosemite

Du kan också stränga ovanstående två kommandon tillsammans om du vill, följande kommer även att muntligt meddela när cacherna har rensats:

sudo discoveryutil mdnsflushcache;sudo discoveryutil udnsflushcaches;say flushed

Faktum är att MDNS och UDNS-cachor är olika, men jag har funnit att för funktionella DNS-cachor för att verkligen rensas i OS X Yosemite är båda kommandon nödvändiga. Det är helt möjligt att du bara behöver rensa den ena eller den andra för dina egna behov.

För dem som undrar, OS X Yosemite har gjort bort med mDNSResponder, så det är inte nödvändigt att döda den mDNSResponder-processen för att uppdatera DNS-caches som i tidigare versioner av Mac OS X.

Kontrollera DNS-cache-detaljer i OS X Yosemite

Om du ändrar eller kommer att ändra DNS och du vill se några detaljer om vad som för närvarande är cachet kan du använda följande kommandon:

Få UDNS-cachestatistik:

sudo discoveryutil udnscachestats

Du kan också hämta specifika uppgifter om multicast DNS-cacheminne med följande:

sudo discoveryutil mdnscachestats

Båda dessa kommer att erbjuda detaljer om hur många DNS-poster som är cachade och erbjuder en rapport som ska se ut så här:

UDNS Cache Stats: Cached 962 of 1750

Om du kör dessa kommandon före och efter att ha kört flushcache-variationerna, hittar du att de borde återställas till 0 poster cache, som så:

MDNS Cache Stats: lo0: Cached 0 of 2000

Hur vet du om det ändrats?

När du har spolat cacheminne, om du vill bestämma om en namnserver eller IP faktiskt har ändrats kan du använda kommandot "dig" med URL:

dig osxdaily.com

gräva liknar nslookup, förutom att den har bättre utdata och några mer detaljer inkluderade, inklusive frågetid, den angivna DNS-servern användes för att komma åt domänen och en tidsstämpel, som alla kan vara värdefulla vid felsökning av namnserverproblem. Förresten, om frågestunden för detta dyker upp som trög, borde du använda ett verktyg som namebench för att hitta en snabbare DNS-server för dig, ofta Google DNS eller OpenDNS.

Känna till ett annat DNS-cache-trick för de senaste versionerna av OS X? Låt oss veta i kommentarerna.