如何在Mac上清除DNS Cache快取暫存區
如果你是Mac的網路系統管理員、網絡開發人員或系統管理員,則可能需要清除macOS上的DNS快取區,原因可能有很多種,特別是如果你希望名稱伺服器正確地解析,或者希望由你的系統檢測到DNS地址的更改。
除上述原因外,如果你已經更改了/etc/ hosts檔案,而你又不想重新啟動電腦,你可能會發現有必要刪除和重置DNS快取區。
如何清除Mac上的DNS快取區
- 重置DNS快取區在每個版本的Mac OS X中的方法都不相同。如果你使用Mac電腦已有一段較長的時間,你可能會發現OS X Yosemite中此重置過程與其他一些較舊版本類似。這可能是因為discoveryd替換了mDNSResponder,然後再次改回mDNSResponder。
- 儘管有這些改變,重置DNS快取區仍然是Yosemite中的一個終端命令,而根據你使用的作業系統的版本,方法可能會有些不同。
- 你需要清除Unicast DNS或Multicast DNS的其中一個,或者兩者都清除。如果你選擇重置Mac上的所有DNS快取區,則必須考慮使用適當的方法清除這兩個快取區。
如果你想以更快捷、更簡單的方式重置DNS快取區,CleanMyMac是你最佳的選擇。CleanMyMac是一個工具程式,旨在清理、優化和維護你的Mac電腦,它還有個功能,只需簡單點擊幾次就能重置DNS快取區。它支援macOS 10.8及以上版本,包括Mojave和Catalina,而且與所有Mac機型兼容,如MacBook Air、MacBook Pro、Mac mini和iMac。你只需要:啟動CleanMyMac>從側欄選單中按一下維護 > 選擇重置DNS快取區 > 點擊運行。這時CleanMyMac已經重置了你的Mac電腦上的DNS快取區。
免費試用
重置macOS Sierra或macOS High Sierra中的DNS快取區
清除macOS Sierra和macOS High Sierra中的DNS快取區,必須使用新命令。
第一步:首先,打開終端應用程式。
只需使用Spotlight search搜索終端或直接轉到Finder→Applications→Utilities。
第二步:然後,你需要輸入以下給出的命令語句。
sudo killall -HUP mDNSResponder;say DNS cache has been flushed
第三步:現在,按 Return/Enter 鍵→然後輸入管理員密碼。
這對sudo的私隱很重要。
現在,請稍候幾分鐘,直到DNS快取區完全清空。完成後,會有語音提示確認你的Mac上重置了DNS快取區,如果上述命令在重置DNS快取區時不起作用,請使用以下替代方法。
第一步:打開終端並輸入以下命令。
sudo killall -HUP mDNSResponder;sudo killall mDNSResponderHelper;sudo dscacheutil -flushcache;say MacOS DNS cache has been cleared
第二步:輸入系統密碼並按Enter/Return鍵。
完成!
清除Mac OS X Yosemite或El Capitan中的DNS快取區
由OSX10.10.4開始,隨著10.11的加入,蘋果已經放棄了discoveryd,並用mDNSResponder替代。故此,要重置OS X Yosemite和Mac OS X El Capitan中的DNS快取區,以及很有可能的未來版本,請使用以下命令字串:
sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder; say cache flushed
使用此命令清除OS X 10.10.4及更高版本的所有DNS快取區。
作為一個使用了Mac一段較長時間的用戶,你可能會記得這個命令字串在Yosemite之前的版本中能起作用。但是,10.10.4之前的OS X Yosemite版本將使用下面提到的不同命令字串。
要重置OS X最新版本的DNS快取區,需要使用終端。在/Applications/Utilities/中找到終端應用程式,或使用Spotlight打開,使用兩個不同的命令來以UDNS (Unicast DNS) 和MDNS (Multicast DNS) 為目標來重置所有DNS快取區。
清除MDNS快取區
OS X Yosemite及更高版本:sudo killall -HUP mDNSResponder
OS X v10.10到v10.10.3:sudo discoveryutil mdnsflushcache
按return鍵並在要求時輸入管理員密碼。
清除UDNS快取區
sudo discoveryutil udnsflushcaches
然後再次按return鍵並在要求時輸入管理員密碼,在第二個命令中,caches是複數的,這是一個細小但至關重要的語法變化。
如何清除和重置OS X Yosemite中的所有DNS快取區
如果有需要,也可以將這兩個命令串在一起。清除快取時,以下命令將會大聲宣讀:
sudo discoveryutil mdnsflushcache;sudo discoveryutil udnsflushcaches;say flushed
毫無疑問,MDNS和UDNS快取區是不同的,但是你可以發現到在OS X Yosemite中運作DNS快取區都要用到這兩個命令才能真正清除乾淨。而對於你個人而言,如果你只需要清除其中一個,也是完全可能的。
值得注意的是,OS X Yosemite已經改用了mDNSResponder。因此你無需像在早期版本的Mac OS X中那樣終止mDNSResponder進程來重置DNS快取區。
如果你使用的是早期版本的OS X,如Mavericks、Mountain Lion或Lion,則重置DNS的命令會有所不同,以下我們總結了早期版本的Mac OS X的終端命令,請看看。
如何在OS X Mavericks、Mountain Lion和Lio中重置DNS快取區
下面的命令會幫助你在OS X v10.9.5及更早版本中重置DNS快取區:
sudo killall -HUP mDNSResponder
如果你使用的是Mac OS X Snow Leopar,那麼終端命令如下,請查看。
如何在Mac OS X Snow Leopard中重置DNS快取區
只需複製貼上以下給出的命令,即可在OS X v10.6到v10.6.8中重置DNS快取區:
sudo dscacheutil -flushcache
如何在OS X El Capitan或Yosemite中檢查DNS快取區的詳細資訊
在更改DNS時,如果要瞭解當時快取區中的內容,可以使用以下命令:
獲取UDNS快取區的數據
sudo discoveryutil udnscachestats
此外,可以使用以下命令恢復multicast DNS快取區的詳細資訊:
sudo discoveryutil mdnscachestats
以上兩個命令都提供DNS快取區的詳細資訊,例如DNS參與的數目,以下方法可獲取更多詳細資訊:
UDNS Cache Stats: Cached 1250 of 1900
如果在執行清除快取區的操作之前及之後運行這些命令,你會發現它們必須把快取區數目重置為0個,如下所示:
MDNS Cache Stats: lo0: Cached 6 of 7500
你如何知道已經成功重置呢
在清除快取區後,如果你希望知道IP或名稱伺服器是否已更改,請使用“dig”命令和以下URL:
dig techelem.com
dig和nslookup非常相似,但是dig提供了額外的資訊,所以是更好的選擇,它提供了用於訪問域的set DNS伺服器、時間標記和包含的査詢時間之類等的詳細資訊;在偵查名稱伺服器問題時,這些詳細資訊都非常有用。如果査詢結果的時間很慢,則必須使用名為namebench的工具來獲得更快的DNS伺服器,通常是OpenDNS或Google DNS。