失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 如何刷新 DNS 缓存 (macOS Linux Windows)

如何刷新 DNS 缓存 (macOS Linux Windows)

时间:2024-01-17 02:13:00

相关推荐

如何刷新 DNS 缓存 (macOS  Linux  Windows)

如何刷新 DNS 缓存 (macOS, Linux, Windows)

Unix Linux Windows 如何刷新 DNS 缓存 (macOS, FreeBSD, RHEL, CentOS, Debian, Ubuntu, Windows)

请访问原文链接:/blog/how-to-flush-dns-cache/,查看最新版。原创作品,转载请保留出处。

作者主页:

刷新或者清除 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 dnsmasqDebian 及其兼容发行版: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 nscdDebian 及其兼容发行版:sudo apt install nscd或者其他发行版对应的软件包管理命令

unboud

unbound 使用 unbound-control 命令来管理 DNS 缓存:

# 刷新所有缓存unbound-control flush all# 更多命令查看帮助unbound-control -h

如果 unbound-control 无法执行,先安装 unbound,命令如下:

RHEL 及其兼容发行版:sudo yum install unboundDebian 及其兼容发行版: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-resolvedDebian 及其兼容发行版:sudo apt install systemd-resolved或者其他发行版对应的软件包管理命令

BIND (服务端,与上述客户端 DNS 缓存不同)

如果是清除 BIND 服务器上的 CACHE,用这个命令:

rndc flush

如果 rndc 无法执行,先安装 bind,命令如下:

RHEL 及其兼容发行版:sudo yum install bindDebian 及其兼容发行版:sudo apt install bind9或者其他发行版对应的软件包管理命令

以下对几个主流发行版单独说明。

3.2. RHEL

包括其兼容发行版:CentOS 及 AlmaLinux、Rocky Linux、Oracle Linux

RHEL 及其兼容发行版,默认不启用 DNS 查询缓存。

参看:Best practice for DNS caching in RHEL

常见解决方案:

dnsmasqnscd(未来版本可能会移除)unboundsystemd-resolved

dnsmasq

使用 dnsmasq 来启用 dns 缓存:

yum -y install dnsmasqsystemctl enable --now dnsmasq

清除缓存即重启 dnsmasq 服务:

systemctl restart dnsmasq

nscd

使用 nscd 来启用 dns 缓存:

yum -y install nscdsystemctl 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.serviceenabled

刷新 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.serviceenabled

刷新 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)

如果觉得《如何刷新 DNS 缓存 (macOS Linux Windows)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。