Hur man spolar DNS-cache i OS X Yosemite med discoveryutil
Innehållsförteckning:
- Rensa DNS-cache i OS X Yosemite 10.10.4 & OS X 10.10.5
- Rensa DNS-cacher i OS X Yosemite (10.10, 10.10.1, 10.10.2, 10.10.3)
Vissa Mac-användare kan stöta på situationer där de behöver tömma DNS-cache i OS X för att en namnserver ska lösas korrekt, eller för att någon DNS-adressändring ska uppmärksammas av deras individuella 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 också, som om en användare har ändrat filen /etc/hosts och de behöver ändringarna för att träda i kraft utan att starta om Mac.
Långa Mac-användare kommer att veta att återställning av DNS-cache har ändrats i nästan alla versioner av Mac OS X, och OS X Yosemite är inte annorlunda, troligen på grund av upptäckten som ersätter mDNSResponder och sedan byter tillbaka till mDNSResponder återigen. Oavsett vilket förblir att tömma DNS-cache i Yosemite ett terminalkommando, men det skiljer sig något beroende på exakt vilken version du använder av operativsystemet, och det låter dig faktiskt rensa antingen Multicast DNS eller Unicast DNS, eller båda. Du kommer förmodligen att vilja rensa båda för gott skull om du försöker återställa alla DNS-cachar på Mac.
Rensa DNS-cache i OS X Yosemite 10.10.4 & OS X 10.10.5
Från OS X 10.10.4 och vidare till 10.10.5, inklusive 10.11, har Apple hoppat av discoveryd och har ersatt den (eller snarare, återgått till) mDNSResponder. 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;säg cache tömd
Det kommandot tömmer alla DNS-cachar för OS X 10.10.4+.
Långa Mac-användare kanske minns att kommandosträngen i princip är det 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-cacher i OS X Yosemite (10.10, 10.10.1, 10.10.2, 10.10.3)
Du måste använda terminalen för att återställa cacheminnet, du kan hitta Terminal-appen i /Applications/Utilities/ eller starta den med Spotlight. För att helt rensa alla DNS-cachar i den senaste versionen av OS X, rikta in både MDNS (Multicast DNS) och UDNS (Unicast DNS) med två olika kommandon.
Rensa MDNS-cache
sudo discoveryutil mdnsflushcache
Tryck på retur och ange administratörslösenordet när du efterfrågas.
Rensa UDNS-cache
sudo discoveryutil udnsflushcaches
Återigen, tryck på retur och ange administratörslö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-cacher i OS X Yosemite
Du kan också sätta ihop de två ovanstående kommandona om du vill, följande kommer till och med att meddela muntligt när cachen har rensats:
sudo discoveryutil mdnsflushcache;sudo discoveryutil udnsflushcache;säg flushed
MDNS- och UDNS-cache är faktiskt olika, men jag har funnit att för att fungerande DNS-cache faktiskt ska rensa i OS X Yosemite är båda kommandona nödvändiga. Det är fullt möjligt att du bara behöver rensa det ena eller det andra för dina egna behov.
För de som undrar, OS X Yosemite har avskaffat mDNSResponder, så det finns ingen anledning att döda den mDNSResponder-processen för att uppdatera DNS-cachar som i tidigare versioner av Mac OS X.
Kontrollerar DNS-cachedetaljer i OS X Yosemite
Om du ändrar eller ska ändra DNS och du vill se lite detaljer om vad som för närvarande är cachelagrat, kan du använda följande kommandon:
Hämta UDNS-cachestatistik:
sudo discoveryutil udnscachestats
Du kan också hämta detaljer om multicast DNS-cache med följande:
sudo discoveryutil mdnscachestats
Båda dessa kommer att ge information om antalet DNS-poster som är cachade, och ger en rapport som ska se ut så här:
UDNS Cachestatistik: Cachad 962 av 1750
Om du kör dessa kommandon före och efter att ha kört flushcache-variationerna, kommer du att upptäcka att de bör återställas till 0-postcache, som så:
MDNS Cachestatistik: lo0: Cachad 0 av 2000
Hur vet du om det har ändrats?
När du har tömt cacheminnet, om du vill avgöra om en namnserver eller IP verkligen har ändrats kan du använda kommandot 'dig' med URL:en så här:
dig osxdaily.com
dig liknar nslookup, förutom att den har bättre utdata och några fler detaljer ingår, inkluderad frågetid, den inställda DNS-servern som används för att komma åt domänen och en tidsstämpel, som alla kan värdefullt vid felsökning av namnserverproblem. Förresten, om frågetiden för detta visar sig vara trög bör du använda ett verktyg som namebench för att hitta en snabbare DNS-server åt dig, ofta Google DNS eller OpenDNS.
Känner du till ett annat DNS-cachetrick för de senaste versionerna av OS X? Låt oss veta i kommentarerna.