🌐如何在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

🌐如何在Linux上清除或清除DNS緩存

如您所見,以上輸出顯示了當前緩存大小,命中數和丟失緩存的總數。

要清除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

Sidebar