Linux上的沖洗DNS:SystemD解決,NetworkManager和NSCD

已發表: 2025-09-26

當您的Linux系統在訪問網站或解決不正確的域時表現出奇怪的行為時,可能是時候沖洗DNS緩存了。像瀏覽器的緩存一樣,DNS緩存存儲臨時數據,有助於提高Web瀏覽速度並降低延遲。但是,當此緩存變得過時或損壞時,它可能導致連接問題。這在域名經常更改的開發或網絡方案中尤為重要。在本文中,我們將探討如何在使用SystemD解決NetworkManagerNSCD的Linux系統中沖洗DNS高速緩存(名稱服務緩存守護程序)。

了解Linux中的DNS緩存

DNS緩存是一種在本地存儲DNS查找的機制。這樣可以防止對同一域名的重複查詢對DNS服務器的不滿,從而可以增強性能。但是,Linux根據使用的系統組件或服務的不同分配DNS解決責任。

在現代分佈中,您最有可能遇到以下解析器系統之一:

  • SystemD分辨:在Ubuntu 18.04+和Fedora等新分佈中很常見。
  • NetworkManager:經常與SystemD解決方案或其他後端一起使用。
  • NSCD(名稱服務緩存守護程序):在一些傳統的UNIX和Enterprise Linux系統中找到。

這些系統中的每一個都以不同的方式處理DNS緩存,這意味著要沖洗緩存的方法也有所不同。讓我們詳細瀏覽每個人。

在SystemD解決的潮紅DNS緩存

SystemD分解SystemD提供的一項服務,用於管理DNS查詢和緩存。它已成為許多主流Linux分佈中的標準。您可以驗證您的系統是否使用通過運行來解決的SystemD解決:

 systemctl is-active systemd-resolved

如果有效,請繼續使用以下命令沖洗DNS緩存:

 sudo systemd-resolve --flush-caches

為了確認緩存已清除或查看當前統計信息,您可以使用:

 systemd-resolve --statistics

該命令顯示標準,例如緩存條目,命中和錯過的數量,可幫助您確保緩存沖洗成功。

SystemD解決的配置和調試

對於高級用戶,該服務的配置位於/etc/systemd/resolved.conf中。您可以調整設置,例如DNS服務器或後備行為。如果您遇到持續的DNS問題,請考慮檢查journalctl日誌是否已解決系統

 journalctl -u systemd-resolved

當解決域分辨率問題的問題因DNS錯誤配置或緩存中毒引起的解決方案問題時,這可能非常有用。

使用NetworkManager刷新DNS

NetworkManager是一個實用程序,可在許多Linux發行版中自動處理網絡配置,包括GNOME和KDE等桌面環境。儘管NetworkManager本身並未緩存DNS,但它通常決定哪種服務(例如SystemD分辨)處理DNS。

要使用NetworkManager刷新DNS設置,您可以重新啟動該服務:

 sudo systemctl restart NetworkManager

該方法通過重新啟動連接和相關服務而間接迫使DNS重新分辨率。如果您想獲得更多的顆粒狀,也可以禁用和重新啟用特定的特定網絡接口。例如:

 nmcli networking off nmcli networking on

或者,對於特定設備:

 nmcli device disconnect eth0 nmcli device connect eth0

當網絡之間切換或解決DNS變化後,在網絡之間切換或解決域傳播問題時,此方法特別有用。

使用NMCLI檢查DNS設置

如果要檢查網絡管理器正在使用哪個DNS,則命令:

 nmcli dev show | grep DNS

將列出當前活動的DNS地址。當正確應用DHCP或靜態地址的DNS設置時,這很有用。

帶有NSCD的沖洗DN(名稱服務緩存守護程序)

儘管它在現代台式Linux系統中不太常見,但NSCD仍在企業和舊環境中使用。它緩存了名稱服務請求,以加快主機名,密碼和其他數據庫對象的分辨率。首先,確保其已安裝和運行:

 sudo systemctl status nscd

如果有效,則潮紅DNS緩存很簡單:

 sudo nscd -i hosts

該命令告訴NSCD將其無效( -i)用於主機名的緩存條目。如果您想沖洗所有內容,而不僅僅是DNS條目,請使用:

 sudo nscd -I

這將重新加載整個配置並清除所有受支持數據庫的緩存數據。

配置和監視NSCD

NSCD通過/etc/nscd.conf配置。您可以為各種數據類型啟用或禁用緩存,例如:

  • Passwd
  • 團體
  • 主持人

該文件被充分發音,使其相當接近。通過journalctl -u nscd監視日誌,您可以密切關注其行為並確定潛在的問題。

如何確定您正在使用哪種緩存機制

不確定您的Linux機器依賴於哪種系統來緩存?這裡有一些快速檢查:

  • systemd-resolve --status是否返回有意義的輸出?如果是,您的系統可能會使用SystemD解決
  • nscd -g是否提供表條目?您可能正在使用NSCD
  • resolvectl在您的系統上有效嗎?這是SystemD分辨的一個很好的提示。
  • dnsmasq還是安裝BIND綁定?這表明需要單獨步驟的更高級的設置。

在嘗試沖洗或調試DNS緩存之前,識別使用的DNS解析器至關重要,因為潮紅的緩存無法解決您的問題。

為什麼定期沖洗DNS是有益的

儘管DNS緩存可以提高性能,但也可能是有問題的。這是為什麼以及何時想沖洗它:

  • 更改DNS條目後:非填充的卡車可能指向舊的IPS或DNS服務器。
  • 解決連通性問題:損壞或中毒的緩存導致決議失敗。
  • 開發時代的場景:測試域遷移或在分期和生產服務器之間切換時。

定期沖洗DNS緩存有助於保持系統健康狀況,並避免出乎意料的網站訪問問題,尤其是對於電力用戶,系統管理員和開發人員而言。

高級技巧和工具

如果您在復雜的環境中工作或需要對DNS分辨率進行更多控制,這裡有一些獎勵工具和提示:

  • DNSMASQ:充當帶有緩存功能的輕量級DNS。
  • 綁定(命名):具有可調區域緩存和自定義到期的企業級DNS服務器。
  • dignslookup調試工具以測試實時DNS記錄。
  • host簡單而直接的,用於查詢無緩存中斷的DNS記錄。
為什麼要在生存2中更改鑰匙扣?

最後的想法

在Linux中沖洗DNS緩存是一項簡單的任務 - 您知道哪種工具或服務處理系統上的DNS分辨率。無論您是使用SystemD解決網絡管理器還是NSCD ,都會了解每個人的操作方式都將武裝您的技能,以快速解決任何與DNS相關的故障排除方案。保持DNS緩存的清潔不僅僅是良好的衛生,對於當今動態網絡環境中可靠,準確的域名分辨率至關重要。