如何重繪 DNS 快取 (macOS, Linux, Windows)
Unix Linux Windows 如何重繪 DNS 快取 (macOS, FreeBSD, RHEL, CentOS, Debian, Ubuntu, Windows)
請訪問原文鏈接:https://sysin.org/blog/how-to-flush-dns-cache/,查看最新版,原創作品,轉載請保留出處,
作者主頁:sysin.org
重繪或者清除 DNS 快取,通常是因為有過時的 DNS 記錄,需要立刻從服務端重新獲取更新,常見于安全要求或者測驗除錯等場景,

1. Apple macOS
? macOS Catalina and later
打開終端,輸入如下命令來重置 DNS 快取,適用于 macOS 10.15 至 14.x:
sudo killall -HUP mDNSResponder; sudo dscacheutil -flushcache
? OS X Yosemite and later
打開終端,輸入如下命令來重置 DNS 快取,適用于 OS X 10.10.4 至 10.14.x:
sudo killall -HUP mDNSResponder
打開終端,輸入如下命令來重置 DNS 快取,適用于 OS X 10.10 至 10.10.3:
sudo discoveryutil mdnsflushcache
? OS X Mavericks, Mountain Lion, and Lion
打開終端,輸入如下命令來重置 DNS 快取,適用于 OS X 10.9.5 及之前版本:
sudo killall -HUP mDNSResponder
? Mac OS X Snow Leopard
打開終端,輸入如下命令來重置 DNS 快取,適用于 OS X 10.6 至 10.6.8:
sudo dscacheutil -flushcache
參考:Reset the DNS cache in OS X
2. FreeBSD
FreeBSB 自帶 nscd(Name Service Cache Daemon),默認沒有啟用,
以下為 FreeBSD 12 和 13 示例,
運行如下命令啟動 nscd 并設定為開機自動運行 (sysin):
sudo service nscd enable && sudo service nscd start
清除快取即重啟 nscd 服務:
sudo service nscd restart
3. Linux
3.1 Linux 重繪 DNS 快取通用參考
Linux 可以運行 dnsmasq、nscd、unbound 或者 systemd-resolved 作為名稱服務快取守護行程 (sysin),
dnsmasq
如果你的 DNS 服務器是用 dnsmasq 實作的,用下面這個命令:
service dnsmasq restart
如果 dnsmasq 服務不存在,先安裝 dnsmasq,命令如下:
- RHEL 及其兼容發行版:
sudo yum install dnsmasq - Debian 及其兼容發行版:
sudo apt install dnsmasq - 或者其他發行版對應的軟體包管理命令
注:DNSmasq 是一個輕巧的,容易使用的 DNS 服務工具,它可以應用在內部網和 Internet 連接的時候的 IP 地址 NAT 轉換,也可以用做小型網路的 DNS 服務,
nscd
如果是清除 nscd 上的 Cache,可重新啟動 nscd 服務來達成清除 DNS Cache 的效果:
service nscd restart
# 或是
service nscd reload
如果 nscd 服務不存在,先安裝 nscd,命令如下:
- RHEL 及其兼容發行版:
sudo yum install nscd - Debian 及其兼容發行版:
sudo apt install nscd - 或者其他發行版對應的軟體包管理命令
unboud
unbound 使用 unbound-control 命令來管理 DNS 快取:
# 重繪所有快取
unbound-control flush all
# 更多命令查看幫助
unbound-control -h
如果 unbound-control 無法執行,先安裝 unbound,命令如下:
- RHEL 及其兼容發行版:
sudo yum install unbound - Debian 及其兼容發行版:
sudo apt install unbound - 或者其他發行版對應的軟體包管理命令
systemd-resolved
使用 resolvectl 命令重繪 DNS 快取:
# Step 1. 查看 DNS 快取狀況
sudo resolvectl statistics
# Step 2. 清除 DNS 快取,systemd-resolved daemon 默認在所有的 Ubuntu 系統上運行
sudo resolvectl flush-caches
# Step 3. 正在查看驗證結果 (sysin)
sudo resolvectl statistics
如果 resolvectl 無法執行,先安裝 systemd-resolved,命令如下:
- RHEL 及其兼容發行版:
sudo yum install systemd-resolved - Debian 及其兼容發行版:
sudo apt install systemd-resolved - 或者其他發行版對應的軟體包管理命令
BIND (服務端,與上述客戶端 DNS 快取不同)
如果是清除 BIND 服務器上的 CACHE,用這個命令:
rndc flush
如果 rndc 無法執行,先安裝 bind,命令如下:
- RHEL 及其兼容發行版:
sudo yum install bind - Debian 及其兼容發行版:
sudo apt install bind9 - 或者其他發行版對應的軟體包管理命令
以下對幾個主流發行版單獨說明,
3.2. RHEL
包括其兼容發行版:CentOS 及 AlmaLinux、Rocky Linux、Oracle Linux
RHEL 及其兼容發行版,默認不啟用 DNS 查詢快取,
參看:Best practice for DNS caching in RHEL
常見解決方案:
- dnsmasq
- nscd(未來版本可能會移除)
- unbound
- systemd-resolved
dnsmasq
使用 dnsmasq 來啟用 dns 快取:
yum -y install dnsmasq
systemctl enable --now dnsmasq
清除快取即重啟 dnsmasq 服務:
systemctl restart dnsmasq
nscd
使用 nscd 來啟用 dns 快取:
yum -y install nscd
systemctl enable --now nscd
清除快取即重啟 nscd 服務:
systemctl restart nscd
3.3. Ubuntu
Ubuntu 默認運行 systemd-resolved 服務用于名稱服務快取,使用 resolvectl 命令呼叫 systemd-resolved.service 決議主機名、IP 地址、域名、DNS 資源記錄和服務,

systemd-resolved.service 默認啟用:
systemctl is-enabled systemd-resolved.service
enabled
重繪 DNS 快取:
# Ubuntu 22.04 示例
# Step 1. 查看 DNS 快取狀況
sudo resolvectl statistics
# Step 2. 清除 DNS 快取,systemd-resolved daemon 默認在所有的 Ubuntu 系統上運行
sudo resolvectl flush-caches
# Step 3. 正在查看驗證結果 (sysin)
sudo resolvectl statistics
備注:Ubuntu 也可以配置使用 nscd 或者 dnsmasq,
注意:在舊版本中 resolvectl 命令曾經為 systemd-resolve,現已廢棄,命令引數引數略有差異,
# Ubuntu 20.04.5 同時支持 resolvectl 和 systemd-resolve
# Step 1. 查看 DNS 快取狀況
sudo systemd-resolve --statistics
# Step 2. 清除 DNS 快取,systemd-resolve daemon 默認在所有的 Ubuntu 系統上運行
sudo systemd-resolve --flush-caches
# Step 3. 正在查看驗證結果 (sysin)
sudo systemd-resolve --statistics
3.4. Debian
Debian 默認沒有啟用 DNS 快取機制(基本系統),可以配置使用 systemd-resolved.service 來啟用,
以下為 Debian 12 示例,
啟用 systemd-resolved.serivce:
sudo apt install systemd-resolved
查看服務已經啟用:
systemctl is-enabled systemd-resolved.service
enabled
重繪 DNS 快取:
# Step 1. 查看 DNS 快取狀況
sudo resolvectl statistics
# Step 2. 清除 DNS 快取,systemd-resolved daemon 默認在所有的 Ubuntu 系統上運行
sudo resolvectl flush-caches
# Step 3. 正在查看驗證結果 (sysin)
sudo resolvectl statistics
備注:Debian 也可以配置使用 nscd 或者 dnsmasq,
4. Microsoft Windows
清除 dns 快取內容:
ipconfig/flushdns
查看 dns 快取內容:
ipconfig/displaydns
Windows 下的 DNS Cache 是由 DNS Client 后臺行程控制的,你可以在 “服務” 中將其關閉,這樣 windows 就不會進行 DNS 快取,每次都將直接查詢 DNS Server,
上述操作通常也和瀏覽器重繪 DNS 快取配合使用,
- 如何清除瀏覽器的 DNS 快取 (Chrome, Firefox, Safari)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555943.html
標籤:其他
上一篇:為醫生打造專屬數字分身!華為云聯合萬木健康打造醫療醫學科普和患者教育數字人引擎
下一篇:返回列表
