㈠ 如何清除dns緩存
DNS 緩存是一個臨時資料庫,用於存儲有關以前的 DNS 查找的信息。換句話說,每當你訪問網站時,你的操作系統和網路瀏覽器都會保留該域和相應 IP 地址的記錄。這消除了對遠程 DNS 伺服器重復查詢的需要,並允許你的 OS 或瀏覽器快速解析網站的 URL。
但是在某些情況下,例如:對網路問題進行故障排除,或者在更改 DNS 解析器之後,你將需要刷新 DNS 緩存。這將清除緩存的 DNS 條目,並根據新配置的 DNS 設置執行後續查找以解析域。
本指南提供有關如何在不同的操作系統和 Web 瀏覽器上刷新 DNS 緩存的說明。
在 Windows 上清除/刷新 DNS 緩存
對於所有 Windows 版本,清除 DNS 緩存的過程都是相同的。你需要使用管理員許可權打開命令提示符並運行 ipconfig /flushdns。
Windows 10 和 Windows 8
要在 Windows 10 和 Windows 8 中清除 DNS 緩存,請執行以下步驟:
在 Windows 搜索欄中鍵入 cmd 。
右鍵單擊 「命令提示符」,然後右擊 「以管理員身份運行」。這將打開 「命令提示符」 窗口。
在命令行上,鍵入以下行,然後按回車:
ipconfig /flushdns
成功後,系統將返回以下消息:
Windows IP Configuration
Successfully flushed the DNS Resolver Cache.
Windows 7
要在 Windows 7 中清除 DNS 緩存,請執行以下步驟:
單擊開始按鈕。
在開始菜單搜索文本框中鍵入 cmd。
右鍵單擊 「命令提示符」,然後單擊 「以管理員身份運行」。這將打開 「命令提示符」 窗口。
在命令行上,鍵入以下行,然後按回車:
ipconfig /flushdns
成功後,系統將返回以下消息:
Windows IP Configuration
Successfully flushed the DNS Resolver Cache.
在 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 緩存,請執行以下步驟:
打開查找器。
轉到應用程序>實用程序>終端。這將打開終端窗口。
在命令行中,輸入以下行,然後按回車:
$ sudo killall -HUP mDNSResponder
輸入你的 sudo 密碼,然後再次按回車。成功後,系統不會返回任何消息。
對於早期版本的 MacOS,刷新緩存的命令不同。
MacOS 版本 10.11 和 10.9
$ sudo dscacheutil -flushcache
$ sudo killall -HUP mDNSResponder
MacOS 版本 10.10
$ sudo discoveryutil mdnsf
㈡ 如何清空linux的DNS緩存
1. DNS存放位置:/etc/resolv.conf ,格式:nameserver 9.181.2.101
2. 如果要disableDNS, 就將該配置文件置為invalid nameserver: echo "nameserver 9.123.253.45" > /etc/resolv.conf
3. 要totally disableDNS, 還需要將系統中的DNS緩存清空:
(1) 用DNS緩存程序NSCD(name service cache daemon)負責管理DNS緩存
service nscd restart
Note: NSCD Name Service Cache Daemon, DNS緩存程序,負責管理DNS緩存。
(2)另一種實現DNS緩存則是用Bind來架設Caching Name Server
rndc flush
(3) 如果你的DNS伺服器是用dnsmasq實現的
sudo dnsmasq restart
Note: DNSmasq是一個輕巧的容易使用的DNS服務工具,它可以應用在內部網和Internet連接的時候的IP地址NAT轉換,也可以用做小型網路的DNS服務
4. 如果在程序中調用getaddrinfo和getnameinfo來獲取域名對應的IP,在同一進程中,上一次成功獲取的結果會被保留下來,即使在下一次調用之前disable了DNS並清空了系統的DNS緩存,下一次仍然能夠解析出正確的IP。此時需要在調用這兩個函數之前用res_init()函數來清空他們自己保留的緩存。