本簡要指南介紹了在 Linux 操作系統上清除或刷新 DNS 緩存的所有可能方法。對於那些想知道的人 DNS緩存 (或者有時稱為 DNS解析緩存) 是由操作系統維護的小型臨時數據庫。存儲有關您訪問的所有網站和其他 Internet 域的信息。也就是說,DNS 緩存包含最近的 DNS 查找。如果您多次訪問同一個網站,操作系統會從本地 DNS 緩存數據庫而不是實際的公共 DNS 服務器中獲取網站的 DNS 記錄。因此,DNS 緩存可以改善網站加載時間並減少源 DNS 服務器帶寬/CPU 消耗。

內容

  1. 為什麼要清除或刷新 DNS 緩存?
  2. 在 Linux 上清除或刷新 DNS 緩存
    1. 1.清除Systemd-Resolve DNS緩存服務
    2. 2.清除Nscd DNS緩存服務
    3. 3.清除綁定/名稱DNS緩存服務
    4. 4.清除Dnsmasq DNS緩存服務

為什麼要清除或刷新 DNS 緩存?

清除本地 DNS 緩存的原因有很多。例如,您可能已經自定義了網站、更改了域的 DNS 設置,或者遇到了 Internet 連接問題。在這種情況下,當您嘗試訪問該站點時,操作系統可能會從本地 DNS 緩存中獲取該站點的緩存版本。因此,清除本地 DNS 緩存會刪除本地 DNS 緩存數據庫中的所有條目,系統會使用來自實際 DNS 服務器的新條目重新進入 DNS 緩存,以顯示網站的新副本。

在 Linux 上清除或刷新 DNS 緩存

默認情況下,未在 Linux 操作系統級別安裝和/或啟用 DNS 緩存。相反,Web 瀏覽器等應用程序維護自己的內部緩存。因此,您只需清除或重新啟動瀏覽器的緩存即可修復互聯網連接問題、解決 DNS 欺騙(例如 DNS 緩存中毒)以及解決舊內容問題。 如果您的 Linux 發行版使用 DNS 緩存服務,您需要手動清除它,如下所述。 有幾種方法可以清除 DNS 緩存。這取決於您的 Linux 發行版和 DNS 緩存服務。以下是清除 Linux 上最常用的 DNS 緩存服務的步驟。

1.清除Systemd-Resolve DNS緩存服務

系統分析 是一個 systemd 服務,為本地應用程序提供系統級 DNS 緩存服務。這是默認安裝的 systemd 軟件包的一部分。 在現代 Linux 操作系統(如 Fedora 和 Ubuntu)上默認啟用 Systemd-resolved 服務。首先,讓我們使用以下命令檢查 systemd-resolved 服務是否處於活動狀態:

$ sudo systemctl is-active systemd-resolved.service

如果啟用了 systemd-resolved 服務,您應該會看到如下內容: “積極的” 在輸出端。如果未激活,它將被打印 “不活動”..

檢查 systemd-resolved 服務是否處於活動狀態

正如您在上面的輸出中看到的,systemd-resolved 服務在我的系統上處於活動狀態。

讓我們使用以下命令查看 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-解決統計

如您所見,上面的輸出列出了當前緩存大小、緩存命中和未命中總數。

要刷新 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
顯示 systemd-solve 統計信息 顯示 systemd-solve 統計信息

2.清除Nscd DNS緩存服務

美國國家標準研究所短缺 n糖果 第二服務 C疼痛 daemon 是一個緩存守護進程,它為最常見的名稱服務請求提供緩存。對於大多數基於 Redhat 的系統,這是推薦的緩存服務。 如果您的 Linux 系統正在使用 nscd 緩存服務,您只需重新啟動 nscd 服務即可清除或刷新本地 DNS 緩存服務,如下所示:

$ sudo systemctl restart nscd.service

再次,

$ sudo service nscd restart

再次,

$ sudo /etc/init.d/nscd restart

3.清除綁定/名稱DNS緩存服務

伯克利互聯網域名 (很快 ) 是當今最流行的開源 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 緩存。以下命令清除 ostechnix.com 域的 DNS 緩存。

$ sudo rndc flushname ostechnix.com

您還可以清除整個 LAN 和 WAN 區域的 DNS 緩存,如下所示:

$ sudo rndc flush lan
$ sudo rndc flush wan

4.清除Dnsmasq DNS緩存服務

域名 支持 PXE 和 TFTP 服務器的輕量級 DHCP 和緩存 DNS 服務器。非常適合用於管理小型網絡的資源有限的路由器和防火牆。

如果您使用 dnsmasq 作為緩存服務,則可以如下刷新本地 DNS 緩存服務:

$ sudo systemctl restart dnsmasq

c的另一種方式要了解 Ubuntu 和其他 Ubuntu 變體(如 Linux Mint)上的本地 DNS 緩存,請運行以下命令:

$ sudo /etc/init.d/dns-clean restart

如果有幫助。

相關閱讀:

  • 在 Ubuntu 16.04 LTS 上安裝和配置 DNS 服務器

DNSDNSCache域名 SystemLinuxLinux 命令