首页 > 系统相关 >RHEL CentOS Debian Ubuntu 如何刷新 DNS 缓存

RHEL CentOS Debian Ubuntu 如何刷新 DNS 缓存

时间:2024-01-03 15:38:25浏览次数:44  
标签:systemd 缓存 发行版 CentOS sudo RHEL DNS Ubuntu nscd


RHEL CentOS Debian Ubuntu 如何刷新 DNS 缓存

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

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

作者主页:sysin.org


刷新或者清除 DNS 缓存,通常是因为有过时的 DNS 记录,需要立刻从服务端重新获取更新,常见于安全要求或者测试调试等场景。

RHEL CentOS Debian Ubuntu 如何刷新 DNS 缓存_flushdns

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

RHEL CentOS Debian Ubuntu 如何刷新 DNS 缓存_ubuntu_02

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


标签:systemd,缓存,发行版,CentOS,sudo,RHEL,DNS,Ubuntu,nscd
From: https://blog.51cto.com/sysin/9085179

相关文章

  • 如何在 Ubuntu 20.04 上以独立模式设置 MinIO 对象存储服务器
    前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。如何在Ubuntu20.04上以独立模式设置MinIO对象存储服务器介绍存储非结构化对象数据blob并使其可通过HTTPAPI(称为对象存储)进行访问的能力是现代技术领域不可或......
  • Ubuntu系统如何安装SVN服务端并通过客户端无公网ip实现远程访问?
    文章目录前言1.Ubuntu安装SVN服务2.修改配置文件2.1修改svnserve.conf文件2.2修改passwd文件2.3修改authz文件3.启动svn服务4.内网穿透4.1安装cpolar内网穿透4.2创建隧道映射本地端口5.测试公网访问6.配置固定公网TCP端口地址6.1保留一个固定的公网TCP端口地址6.2配......
  • 记录 | ubuntu源码编译python3.7.3(指定版本)
    一、安装依赖包sudoapt-getinstall-ymakebuild-essentiallibssl-devzlib1g-devsudoapt-getinstall-ylibbz2-devlibreadline-devlibsqlite3-devwgetcurlllvmsudoapt-getinstall-ylibncurses5-devlibncursesw5-devxz-utilstk-dev二、从Python网页中找......
  • 2K1000开发板虚拟机 ubuntu 更换下载源
    Ubuntu系统软件的下载安装我们通常使用命令“apt-get”,该命令可以实现软件自动下载,安装,配置。该命令采用客户端/服务器的模式,我们的Ubuntu系统作为客户端,当需要下载软件的时候就向服务器发起请求,因此我们需要配置下服务器的地址,也就是更换ubuntu系统的下载源,首先打开......
  • Ubuntu之修改时区/时间
    查看当前时间及时区状态sudotimedatectlstatus#显示当前时区为Asia/Shanghai查看当前系统时间sudodate查看当前系统时间及时区sudodate-R#显示当前时间及对应时区,时区为“+0800”北京时区修改硬件时间修改日期格式:MM月/DD日/YYYY年sudodate-sMM/DD/YYYY修改时间:hh时:mm分......
  • AlmaLinux 8.8 发布 - RHEL 下游免费发行版(CentOS 稳定版的替代品)
    AlmaLinux8.8发布-RHEL下游免费发行版(CentOS稳定版的替代品)AlmaLinuxOS是一个开源、社区驱动的项目,旨在提供CentOS稳定版的替代品。作者主页:sysin.org2023.05.18,AlmaLinux8.8StableNowAvailable!关于新增功能可以参考:RedHatEnterpriseLinux(RHEL)8.8(x86_64,a......
  • Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) - 红帽企业 Linux 9.2 发布
    RedHatEnterpriseLinux(RHEL)9.2(x86_64,aarch64)红帽企业Linux9.2作者主页:sysin.org红帽企业Linux9红帽企业Linux9.2来了红帽2023-05-1112:10发表于北京红帽企业Linux9.2和8.8推动混合云中更大规模的Linux自动化,有助于弥合IT技能差距,确保运营一致性,扩......
  • wsl中的Ubuntu安装远程桌面
    wslUbuntu默认只能打开命令行,看不到图形化界面,有些操作不方便。这里介绍两种方法来远程连接到wsl里VNC因为win10的wsl不支持systemd,所以这种方式只能是Windows11的系统,Window10只能用xrdp1、禁用WSLg在c:\users\用户名下新建一个.wslconfig文件,内容如下:[wsl2]guiApplicati......
  • wsl中的Ubuntu安装远程桌面
    wslUbuntu默认只能打开命令行,看不到图形化界面,有些操作不方便。这里介绍两种方法来远程连接到wsl里VNC因为win10的wsl不支持systemd,所以这种方式只能是Windows11的系统,Window10只能用xrdp1、禁用WSLg在c:\users\用户名下新建一个.wslconfig文件,内容如下:[wsl2]guiApplicat......
  • 在ubuntu中安装Docker
    安装docker如果有旧版本的docker就需要先卸载:sudoapt-getremovedockerdocker-cedocker.iocontainerdrunc更新系统里的所有软件:sudoapt-getupdatesudoapt-getinstall\apt-transport-https\ca-certificates\curl\gnupg\lsb-release......