每當(dāng)你訪問網(wǎng)站時(shí),你的操作系統(tǒng)和網(wǎng)絡(luò)瀏覽器都會(huì)保留該域和相應(yīng) IP 地址的記錄,這解決了向DNS 服務(wù)器重復(fù)查詢的需要,并允許你的系統(tǒng)或?yàn)g覽器快速解析網(wǎng)站的網(wǎng)址。但是在某些情況下,例如:對網(wǎng)絡(luò)問題進(jìn)行故障排除,或者在更改 DNS 解析器之后,你將需要刷新 DNS 緩存。這將清除緩存的 DNS 條目,并根據(jù)新配置的 DNS 設(shè)置執(zhí)行后續(xù)查找以解析域名。
本文將講解如何在不同的操作系統(tǒng)和 Web 瀏覽器上刷新 DNS 緩存。
一、在 Windows 上清除/刷新 DNS 緩存
對于所有 Windows 版本,清除 DNS 緩存的過程都是相同的。你需要使用管理員權(quán)限打開命令提示符并運(yùn)行 ipconfig /flushdns。
Windows 10 和 Windows 8
要在 Windows 10 和 Windows 8 中清除 DNS 緩存,請執(zhí)行以下步驟:
1. 在 Windows 搜索欄中鍵入 cmd 。
2. 右鍵單擊 “命令提示符”,然后右擊 “以管理員身份運(yùn)行”。這將打開 “命令提示符” 窗口。
3. 在命令行上,鍵入以下行,然后按回車:
ipconfig /flushdns
成功后,系統(tǒng)將返回以下消息:
Windows IP 配置
已成功刷新 DNS 解析緩存。
Windows 7
要在 Windows 7 中清除 DNS 緩存,請執(zhí)行以下步驟:
1. 單擊開始按鈕。
2. 在開始菜單搜索文本框中鍵入 cmd。
3. 右鍵單擊 “命令提示符”,然后單擊 “以管理員身份運(yùn)行”。這將打開 “命令提示符” 窗口。
4. 在命令行上,鍵入以下行,然后按回車:
ipconfig /flushdns
成功后,系統(tǒng)將返回以下消息:
Windows IP 配置
已成功刷新 DNS 解析緩存。
二、在 Linux 上清除/刷新 DNS 緩存
在 Linux 上,除非已安裝并運(yùn)行諸如 Systemd-Resolved,DNSMasq 或 Nscd 之類的緩存服務(wù),否則沒有操作系統(tǒng)級 DNS 緩存。根據(jù) Linux 發(fā)行版和所使用的緩存服務(wù),清除 DNS 緩存的過程有所不同。
系統(tǒng)化解決
大多數(shù)現(xiàn)代 Linux 發(fā)行版,例如 Ubuntu 18.04,都使用 systemd 解析的服務(wù)來緩存 DNS 條目。
要查找服務(wù)是否正在運(yùn)行,請運(yùn)行:
| $ sudo systemctl is-active systemd-resolved.service |
如果該服務(wù)正在運(yùn)行,則將打印命令 active,否則將看到 inactive。
要清除系統(tǒng)解析的 DNS 緩存,你需要鍵入以下命令。
| $ sudo systemd-resolve --flush-caches |
成功后,該命令不會(huì)返回任何消息。
Dnsmasq
Dnsmasq 是輕量級的 DHCP 和 DNS 緩存名稱服務(wù)器。
如果你的系統(tǒng)使用 DNSMasq 作為緩存服務(wù)器,則要清除 DNS 緩存,需要重新啟動(dòng) Dnsmasq 服務(wù):
| $ sudo systemctl restart dnsmasq.service |
也可以使用以下命令
| $ sudo service dnsmasq restart |
NSCD
NSCD 是一個(gè)緩存守護(hù)程序,它是大多數(shù)基于 RedHat 的發(fā)行版的首選 DNS 緩存系統(tǒng)。
如果系統(tǒng)使用 NSCD 來清除 DNS 緩存,則需要重新啟動(dòng) NSCD 服務(wù):
| $ sudo systemctl restart nscd.service 或者 $ sudo service nscd restart |
三、在 MacOS 上清除/刷新 DNS 緩存
根據(jù)你所運(yùn)行的版本,在 MacOS 中刷新緩存的命令略有不同。該命令必須以具有系統(tǒng)管理員特權(quán)的用戶(sudo 用戶)身份運(yùn)行。
要清除 MacOS 中的 DNS 緩存,請執(zhí)行以下步驟:
1. 打開查找器。
2. 轉(zhuǎn)到應(yīng)用程序>實(shí)用程序>終端。這將打開終端窗口。
3. 在命令行中,輸入以下行,然后按回車:
| $ sudo killall -HUP mDNSResponder |
輸入你的 sudo 密碼,然后再次按回車。成功后,系統(tǒng)不會(huì)返回任何消息。
對于早期版本的 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 緩存
大多數(shù)現(xiàn)代的 Web 瀏覽器都有一個(gè)內(nèi)置的 DNS 客戶端,以防止每次訪問該網(wǎng)站時(shí)重復(fù)查詢。
谷歌瀏覽器 Chrome
要清除 Google Chrome 的 DNS 緩存,請執(zhí)行以下步驟:
1. 打開一個(gè)新標(biāo)簽,然后在地址欄輸入 chrome://net-internals/#dnsChrome。
2. 點(diǎn)擊 “清除主機(jī)緩存” 按鈕。
如果那對你不起作用,請嘗試清除緩存和 Cookie。
1. 按下 CTRL+Shift+Del 以打開 “清除瀏覽數(shù)據(jù)” 對話框窗口。
2. 選擇一個(gè)時(shí)間范圍。選擇 “所有時(shí)間” 以刪除所有內(nèi)容。
3. 選中 “Cookie 和其他站點(diǎn)數(shù)據(jù)” 和 “緩存的圖像和文件” 框。
4. 點(diǎn)擊 “清除數(shù)據(jù)” 按鈕。
此方法適用于所有基于 Chrome 的瀏覽器,包括 Chromium,Vivaldi 和 Opera。
火狐 Firefox
要清除 Firefox 的 DNS 緩存,請執(zhí)行以下步驟:
1. 在右上角,單擊漢堡包圖標(biāo) ? 以打開 Firefox 的菜單:
2. 點(diǎn)擊 ? Options (Preferences) 鏈接。
3. 單擊左側(cè)的 “隱私和安全性” 或 “隱私” 選項(xiàng)卡。
4. 向下滾動(dòng)到該 History 部分,然后單擊 Clear History… 按鈕。
5. 選擇要清除的時(shí)間范圍。選擇 “所有內(nèi)容” 以刪除所有內(nèi)容。
6. 選擇所有框,然后單擊 “立即清除” 。
如果這對你不起作用,請嘗試以下方法并暫時(shí)禁用 DNS 緩存。
1. 打開一個(gè)新標(biāo)簽,然后在 Firefox 的地址欄中輸入 about:config 。
2. 搜索 network.dnsCacheExpiration,將值暫時(shí)設(shè)置為 0,然后單擊 “確定”。然后,改回默認(rèn)值,然后單擊 “確定” 。
3. 搜索 network.dnsCacheEntries,將值暫時(shí)設(shè)置為 0,然后單擊 “確定” 。然后,改回默認(rèn)值,然后單擊 “確定”。
結(jié)論
如果還存在問題,Linux 和 MacOS 還可以使用 dig 命令來查詢 DNS 并對 DNS 問題進(jìn)行故障排除。