Linux 如何刷新 DNS 缓存

全文:如何刷新 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. 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
  • 或者其他发行版对应的软件包管理命令

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

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. 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

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。


上述操作通常也和浏览器刷新 DNS 缓存配合使用。

  • 如何清除浏览器的 DNS 缓存 (Chrome, Firefox, Safari)

Linux 如何刷新 DNS 缓存相关推荐

  1. linux刷新dns缓存_Linux和Windows客户端的刷新DNS缓存

    linux刷新dns缓存 We may need to flush DNS cache of our client when the site's DNS has been changed. 站点的D ...

  2. 刷新DNS命令 如何刷新DNS缓存(flushdns)

    运行:ipconfig /displaydns这个命令,查看一下本机已经缓存了那些的dns信息的,然后输入下面的命令 ipconfig /flushdns 这时本机的dns缓存信息已经清空了,我们可以 ...

  3. linux mint 修改dns,如何在Ubuntu和LinuxMint中刷新DNS缓存

    本篇文章给大家介绍的内容是关于如何在Ubuntu和LinuxMint中刷新DNS缓存,下面我们来看具体的内容. 域名系统(DNS)是互联网的主干网之一.你无法想象在全球数百万用户的公共网络上运行网站. ...

  4. linux刷新本地dns命令_在Linux/Windows/Mac上刷新DNS缓存的方法

    刷新dns缓存让你可以得到新的域名解析.当你无法正确访问一个新注册的域名时就可以刷新dns缓存试试.刷新dns缓存非常简单,任何时候都以进行.但是不同的系统,Windows.Mac OS和Linux上 ...

  5. linux mint 修改dns,如何在Ubuntu和LinuxMint中刷新DNS缓存-linux运维

    本篇文章给大家介绍的内容是关于如何在Ubuntu和LinuxMint中刷新DNS缓存,下面我们来看具体的内容. 域名系统(DNS)是互联网的主干网之一.你无法想象在全球数百万用户的公共网络上运行网站. ...

  6. linux刷新dns缓存_Linux刷新文件系统缓存

    linux刷新dns缓存 We may drop the file system caches on Linux to free up memory for applications. Kernels ...

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

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

  8. linux dns 刷新_如何为Windows和Linux操作系统刷新DNS?

    linux dns 刷新 Operating systems like Windows, Linux, BSD runs some mechanisms to cache DNS records in ...

  9. Windows刷新dns缓存

    当修改了host文件之后,需要host立即生效,那就需要刷新dns缓存 Windows下刷新dns缓存的命令是: ipconfig /flushdns

最新文章

  1. Synchronized和ReentranLock的区别
  2. java反射机制--reflection
  3. jack语言编译器的实现过程
  4. mysql高效索引之覆盖索引
  5. jdbc连接mysql驱动包_jdbc连接数据库驱动包
  6. @程序员,敏捷开发防坑指南请查收!
  7. Scale-Dependent 3D Geometric Features
  8. Spring Cloud Ribbon 的请求分发与原理
  9. 电子工程师私藏的一个网站
  10. python求幂集_求幂集的算法 - Sethylar的个人页面 - OSCHINA - 中文开源技术交流社区...
  11. 华为云redis安装
  12. android 模拟下雪的效果
  13. SQLserver 外键语句出现“引用了无效的表”
  14. 一、Docker:Linux/Windows在线安装Docker与命令大全总结
  15. 7、LiveCharts--常用属性介绍(三)
  16. 管理就是通过别人完成任务,别怕员工犯错
  17. 唯品会亿级数据服务平台实践
  18. A_A02_001 CH340驱动安装
  19. 数字麦克风和阵列拾音技术的应用
  20. CAD导出DXF再导入PADS出现尺寸大小不一致的解决办法?

热门文章

  1. RequestHTTPResponse
  2. python计算最大公约数和最小公倍数_python求最大公约数和最小公倍数的方法介绍...
  3. 使用FudanNLP分词工具分词并移除停用词
  4. 随机森林调参_机器学习-模型调参利器 gridSearchCV(网格搜索)
  5. python中return outside function-Python Tutorial 学习(九)--Classes
  6. R统计绘图-PCA分析及绘制双坐标轴双序图
  7. Maya2012中英文对照表(三)
  8. Linux----临界区解释
  9. KUKA机器人之备选软件包(ROBOTSENSORINTERFACE,EthernetKRL,profinet,ForceTorqueControl)
  10. 多项式函数曲线拟合——最小二乘法