< 返回

    如何清除本地DNS緩存

    發布時間:2021/3/10 1:54:01


    每當你訪問網站時,你的操作系統和網絡瀏覽器都會保留該域和相應 IP 地址的記錄,這解決了向DNS 服務器重復查詢的需要,并允許你的系統或瀏覽器快速解析網站的網址。但是在某些情況下,例如:對網絡問題進行故障排除,或者在更改 DNS 解析器之后,你將需要刷新 DNS 緩存。這將清除緩存的 DNS 條目,并根據新配置的 DNS 設置執行后續查找以解析域名。

    本文將講解如何在不同的操作系統和 Web 瀏覽器上刷新 DNS 緩存。



    一、在 Windows 上清除/刷新 DNS 緩存

    對于所有 Windows 版本,清除 DNS 緩存的過程都是相同的。你需要使用管理員權限打開命令提示符并運行 ipconfig /flushdns。

    Windows 10 和 Windows 8

    要在 Windows 10 和 Windows 8 中清除 DNS 緩存,請執行以下步驟:

    1. 在 Windows 搜索欄中鍵入 cmd 。

    2. 右鍵單擊 “命令提示符”,然后右擊 “以管理員身份運行”。這將打開 “命令提示符” 窗口。

    3. 在命令行上,鍵入以下行,然后按回車:

    ipconfig /flushdns

    成功后,系統將返回以下消息:

    Windows IP 配置

    已成功刷新 DNS 解析緩存。

    Windows 7

    要在 Windows 7 中清除 DNS 緩存,請執行以下步驟:

    1. 單擊開始按鈕。

    2. 在開始菜單搜索文本框中鍵入 cmd。

    3. 右鍵單擊 “命令提示符”,然后單擊 “以管理員身份運行”。這將打開 “命令提示符” 窗口。

    4. 在命令行上,鍵入以下行,然后按回車:

    ipconfig /flushdns

    成功后,系統將返回以下消息:

    Windows IP 配置

    已成功刷新 DNS 解析緩存。



    二、在 Linux 上清除/刷新 DNS 緩存

    在 Linux 上,除非已安裝并運行諸如 Systemd-Resolved,DNSMasq 或 Nscd 之類的緩存服務,否則沒有操作系統級 DNS 緩存。根據 Linux 發行版和所使用的緩存服務,清除 DNS 緩存的過程有所不同。

    系統化解決

    大多數現代 Linux 發行版,例如 Ubuntu 18.04,都使用 systemd 解析的服務來緩存 DNS 條目。

    要查找服務是否正在運行,請運行:


    $ sudo systemctl is-active systemd-resolved.service

    如果該服務正在運行,則將打印命令 active,否則將看到 inactive。

    要清除系統解析的 DNS 緩存,你需要鍵入以下命令。


    $ sudo systemd-resolve --flush-caches

    成功后,該命令不會返回任何消息。

    Dnsmasq

    Dnsmasq 是輕量級的 DHCP 和 DNS 緩存名稱服務器。

    如果你的系統使用 DNSMasq 作為緩存服務器,則要清除 DNS 緩存,需要重新啟動 Dnsmasq 服務:


    $ sudo systemctl restart dnsmasq.service

    也可以使用以下命令


    $ sudo service dnsmasq restart

    NSCD

    NSCD 是一個緩存守護程序,它是大多數基于 RedHat 的發行版的首選 DNS 緩存系統。

    如果系統使用 NSCD 來清除 DNS 緩存,則需要重新啟動 NSCD 服務:


    $ sudo systemctl restart nscd.service
    或者
    $ sudo service nscd restart



    三、在 MacOS 上清除/刷新 DNS 緩存

    根據你所運行的版本,在 MacOS 中刷新緩存的命令略有不同。該命令必須以具有系統管理員特權的用戶(sudo 用戶)身份運行。

    要清除 MacOS 中的 DNS 緩存,請執行以下步驟:

    1. 打開查找器。

    2. 轉到應用程序>實用程序>終端。這將打開終端窗口。

    3. 在命令行中,輸入以下行,然后按回車:


    $ sudo killall -HUP mDNSResponder

    輸入你的 sudo 密碼,然后再次按回車。成功后,系統不會返回任何消息。

    對于早期版本的 MacOS,刷新緩存的命令不同。

    · MacOS 版本 10.11 和 10.9


    $ sudo dscacheutil -flushcache
    $ sudo killall -HUP mDNSResponder

    · MacOS 版本 10.10


    $ sudo discoveryutil mdnsflushcache
    $ sudo discoveryutil udnsflushcaches

    · MacOS 版本 10.6 和 10.5


    $ sudo dscacheutil -flushcache



    四、清除/刷新瀏覽器 DNS 緩存

    大多數現代的 Web 瀏覽器都有一個內置的 DNS 客戶端,以防止每次訪問該網站時重復查詢。

    谷歌瀏覽器 Chrome

    要清除 Google Chrome 的 DNS 緩存,請執行以下步驟:

    1. 打開一個新標簽,然后在地址欄輸入 chrome://net-internals/#dnsChrome。

    2. 點擊 “清除主機緩存” 按鈕。

    如果那對你不起作用,請嘗試清除緩存和 Cookie。

    1. 按下 CTRL+Shift+Del 以打開 “清除瀏覽數據” 對話框窗口。

    2. 選擇一個時間范圍。選擇 “所有時間” 以刪除所有內容。

    3. 選中 “Cookie 和其他站點數據” 和 “緩存的圖像和文件” 框。

    4. 點擊 “清除數據” 按鈕。

    此方法適用于所有基于 Chrome 的瀏覽器,包括 Chromium,Vivaldi 和 Opera。

    火狐 Firefox

    要清除 Firefox 的 DNS 緩存,請執行以下步驟:

    1. 在右上角,單擊漢堡包圖標 ☰ 以打開 Firefox 的菜單:

    2. 點擊 ⚙ Options (Preferences) 鏈接。

    3. 單擊左側的 “隱私和安全性” 或 “隱私” 選項卡。

    4. 向下滾動到該 History 部分,然后單擊 Clear History… 按鈕。

    5. 選擇要清除的時間范圍。選擇 “所有內容” 以刪除所有內容。

    6. 選擇所有框,然后單擊 “立即清除” 。

    如果這對你不起作用,請嘗試以下方法并暫時禁用 DNS 緩存。

    1. 打開一個新標簽,然后在 Firefox 的地址欄中輸入 about:config 。

    2. 搜索 network.dnsCacheExpiration,將值暫時設置為 0,然后單擊 “確定”。然后,改回默認值,然后單擊 “確定” 。

    3. 搜索 network.dnsCacheEntries,將值暫時設置為 0,然后單擊 “確定” 。然后,改回默認值,然后單擊 “確定”。


    結論

    如果還存在問題,Linux 和 MacOS 還可以使用 dig 命令來查詢 DNS 并對 DNS 問題進行故障排除。