首页 > 系统相关 >Linux 如何刷新 DNS 缓存

Linux 如何刷新 DNS 缓存

时间:2023-06-25 16:11:37浏览次数:54  
标签:resolved systemd 缓存 sudo DNS Linux nscd

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 记录,需要立刻从服务端重新获取更新,常见于安全要求或者测试调试等场景。

how-to-flush-dns-cache

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

使用 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 资源记录和服务。

Flush DNS Cache on Ubuntu

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 缓存配合使用。

标签:resolved,systemd,缓存,sudo,DNS,Linux,nscd
From: https://www.cnblogs.com/sysin/p/17503161.html

相关文章

  • Linux 服务器CPU超高如何快速定位
    Linux服务器CPU超高如何快速定位原创 senfel 架构集结号 2023-02-2411:07 发表于四川收录于合集#故障排查5个前言在生产环境中有时会遇见服务器CPU超高的问题,特别是重大版本发布后如果有内存泄露很容出现CPU超高,严重可能会达到100%。现在我们使用的服务器都是多核......
  • 六、kubernetes网络-linux网络虚拟化(二)
    1.6初识Linux隧道:ipip前文介绍的tun设备也叫作点对点设备,之所以叫这个名字,是因为tun经常被用来做隧道通信(tunnel)。我们可以通过命令iptunnelhelp查看IP隧道的相关操作。Linux原生支持下列5种L3隧道:·ipip:即IPv4inIPv4,在IPv4报文的基础上封装一个IPv4报文;·GRE:即通用路由封装......
  • Linux 导入
    Linux导入大纲发展历史系统目录结构Shell之Bash常用命令分享发展历史Unix和LinuxUnix操作系统在20世纪60年代构思完成并实现,并在1970年首次发布。由我们的C语言之父,丹尼斯·里奇和肯·汤普逊自行开发。它因容易获取与可移植性高而广泛被学术机构和工商企业采用、......
  • 创建Linux快捷指令
    要创建Linux快捷指令,可以按照以下步骤进行操作:1.打开命令行终端,进入你想要存储快捷指令的目录。2.创建一个新文件,文件名为你想要的快捷指令名称,例如myshortcut。使用文本编辑器打开这个新文件并添加你要执行的命令。例如,如果你想要创建一个叫做myshortcut的指令,当你运行它时会......
  • Linux usb 4. Device 详解【转】
    转自:https://blog.csdn.net/pwl999/article/details/120997525文章目录1.简介2.PlatformLayer2.1PlatformDevice2.2PlatformDriver3.UDC/GadgetLayer3.1GadgetBus3.2GadgetDevice3.2.1EndpointAlloc3.2.2EndPointAccess3.2.3UDCControl3.3GadgetDriver(Con......
  • Linux mem 2.8 Kfence 详解【转】
    转自:https://pwl999.blog.csdn.net/article/details/1244949581.原理介绍Kfence(KernelElectricFence)是Linux内核引入的一种低开销的内存错误检测机制,因为是低开销的所以它可以在运行的生产环境中开启,同样由于是低开销所以它的功能相比较KASAN会偏弱。Kfence的基本原......
  • 通过句柄恢复Linux下误删除的数据库数据文件
    环境介绍:OS:RedhatEnterPrise5.4DB:OracleEnterPriseDatabase11gR2(11.2.3.0)   在数据库正常运行时,运维人员在无意中将部分数据文件删除了,此时数据库管理员并不知道,且数据库运行正常,并没有立即抛出错误和告警;但是开发人员在对某张表进行更新的时候,正好这张表在被删除的......
  • Linux 无法从本地字符界面(tty1-tty6)登陆深度解析
    Linux无法从本地字符界面(tty1-tty6)登陆深度解析作者:吴伟龙(PrudentWoo) 问题描述:    每次装完Oracle数据库之后,本地的tty1-tty6就无法登陆,只能通过vtty或tty7图形终端登陆。 问题现象:     输入完用户名密码之后,自动弹回如下界面:日志信息:[root@nec3~]#tail......
  • DNS 引起经典RAC故障
    DNS引起经典RAC故障作者:吴伟龙(PrudentWoo)一、环境介绍:这是一套四年前部署的RAC系统,之前运行一直很好,没有出过问题,平时基本处于无人管的状态。OS:RedhatEnterPriseLinux5.8x86_x64DB:OracleDatabaseEnterPrise 11.2.0.4GI:OracleGridInfrastructure11.2.0.4二、问题描述......
  • Linux使用HTTP代码示例
    以下是使用Linux命令行发送HTTP请求的示例:1.使用curl命令发送GET请求:```curl ExampleDomain```2.使用curl命令发送POST请求:```curl-XPOST-d"param1=value1&param2=value2" ExampleDomain```3.使用wget命令发送GET请求:```wget ExampleDomain```4.使用wget命令发送POST......