Linux上的沖洗DNS:SystemD解決,NetworkManager和NSCD
已發表: 2025-09-26當您的Linux系統在訪問網站或解決不正確的域時表現出奇怪的行為時,可能是時候沖洗DNS緩存了。像瀏覽器的緩存一樣,DNS緩存存儲臨時數據,有助於提高Web瀏覽速度並降低延遲。但是,當此緩存變得過時或損壞時,它可能導致連接問題。這在域名經常更改的開發或網絡方案中尤為重要。在本文中,我們將探討如何在使用SystemD解決,NetworkManager或NSCD的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服務器。
-
dig
和nslookup
:調試工具以測試實時DNS記錄。 -
host
:簡單而直接的,用於查詢無緩存中斷的DNS記錄。

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