🌐如何在Linux上清除或清除DNS緩存
本快速指南介紹了在Linux操作系統上清除DNS緩存的所有可能方法。 對於那些想知道的人,DNS緩存(或有時稱為DNS解析器緩存)是由操作系統維護的小型臨時數據庫。 它存儲有關訪問的所有網站以及Internet上其他域的信息。 換句話說,DNS緩存包含最新的DNS查詢。 當您多次訪問同一網站時,操作系統將從本地DNS緩存數據庫而不是實際的公共DNS服務器中提取該網站的DNS記錄。 因此,DNS緩存可以縮短網站的加載時間,並減少原始DNS服務器的帶寬/ CPU消耗。
為什麼要刷新或刪除DNS緩存?
刷新本地DNS緩存有很多原因。
例如,您可能已經配置了網站或更改了域的DNS設置,或者在連接Internet時遇到問題。
在這種情況下,如果您嘗試訪問該站點,則您的操作系統很可能會從本地DNS緩存中獲取該站點的緩存版本。
因此,刷新本地DNS緩存將刪除本地DNS緩存數據庫中的所有記錄,並使您的系統使用來自真實DNS服務器的新記錄重新填充DNS緩存,並顯示網站的新副本。
如何在Linux上刷新DNS緩存
默認情況下,未在Linux操作系統級別安裝和/或啟用DNS緩存。
相反,諸如Web瀏覽器之類的應用程序會維護自己的內部緩存。
因此,您只需清除瀏覽器緩存或重新啟動它即可解決Internet連接問題,解決DNS欺騙問題(例如使DNS緩存中毒)和修復過時的內容問題。
如果您的Linux發行版確實使用了任何DNS緩存服務,則需要按如下所述手動刷新它們。
有幾種清除DNS緩存的方法。
這取決於您使用的Linux發行版和DNS緩存服務。
在這裡,我包括了在Linux上刷新最常用的DNS緩存服務的說明。
1. DNS緩存服務Systemd-resolve。
Systemd-resolve是一項systemd服務,為本地應用程序提供系統級DNS緩存服務。
它是默認安裝的systemd軟件包的一部分。
默認情況下,在大多數現代Linux操作系統(例如Fedora和Ubuntu)上啟用此服務。
首先,讓我們使用以下命令檢查systemd-resolved服務是否處於活動狀態:
$ sudo systemctl is-active systemd-resolved.service
如果啟用了systemd-resolved服務,則輸出將顯示“活動”。 如果未激活,系統將顯示“不活躍”。
systemd解析的服務在我的系統上處於活動狀態。
讓我們使用以下命令查看systemd-resolve緩存服務的統計信息:
$ sudo systemd-resolve --statistics
輸出:
DNSSEC supported by current servers: no
Transactions
Current Transactions: 0
Total Transactions: 3117
Cache
Current Cache Size: 58
Cache Hits: 1248
Cache Misses: 1891
DNSSEC Verdicts
Secure: 0
Insecure: 0
Bogus: 0
Indeterminate: 0
如您所見,以上輸出顯示了當前緩存大小,命中數和丟失緩存的總數。
要清除systemd-resolve緩存,請運行:
$ sudo systemd-resolve --flush-caches
如果成功,您將看不到任何輸出。
現在檢查systemd-resolve統計信息,以查看是否已清除本地DNS緩存。
$ sudo systemd-resolve --statistics
現在您將看到當前緩存大小為零。
DNSSEC supported by current servers: no
Transactions
Current Transactions: 0
Total Transactions: 3155
Cache
Current Cache Size: 0
Cache Hits: 1255
Cache Misses: 1922
DNSSEC Verdicts
Secure: 0
Insecure: 0
Bogus: 0
Indeterminate: 0
2.緩存DNS Nscd的服務。
Nscd,簡稱 ñ阿美 s服務 C疼痛 daemon是一個緩存守護程序,它為最常見的命名服務請求提供緩存。
對於大多數基於Redhat的系統,它是首選的緩存服務。
如果您的Linux系統使用的是nscd緩存服務,則可以通過簡單地重新啟動nscd服務來清除本地DNS緩存服務,如下所示:
$ sudo systemctl restart nscd.service
要麼
$ sudo service nscd restart
要麼
$ sudo /etc/init.d/nscd restart
3.綁定/命名DNS緩存服務。
伯克利互聯網名稱域名(簡稱BIND)是當今使用最廣泛的開源DNS服務器。
如果使用BIND緩存DNS查詢,請在Linux上使用以下命令刷新/重置BIND緩存服務:
$ sudo systemctl restart named
要麼
$ sudo service named reload
要麼
$ sudo /etc/init.d/named restart
要麼
$ sudo rndc reload
要麼
$ sudo rndc exec
最新版本的BID還允許您清除特定域的DNS緩存。 以下命令清除itsecforu.ru域的DNS緩存:
$ sudo rndc flushname itsecforu.ru
您還可以清除整個LAN和WAN區域的DNS緩存,如下所示:
$ sudo rndc flush lan
$ sudo rndc flush wan
4. Dnsmasq DNS緩存服務。
Dnsmasq是具有PXE和TFTP服務器支持的輕型DHCP服務器和緩存DNS服務器。
它適用於資源受限的路由器和防火牆來管理小型網絡。
如果將dnsmasq用作緩存服務,則可以清除本地DNS緩存服務,如下所示:
$ sudo systemctl restart dnsmasq
在Ubuntu和其他Ubuntu風格(如Linux Mint)中清除本地DNS緩存的另一種方法是運行以下命令:
$ sudo /etc/init.d/dns-clean restart