Linux上的冲洗DNS:SystemD解决,NetworkManager和NSCD

已发表: 2025-09-26

当您的Linux系统在访问网站或解决不正确的域时表现出奇怪的行为时,可能是时候冲洗DNS缓存了。像浏览器的缓存一样,DNS缓存存储临时数据,有助于提高Web浏览速度并降低延迟。但是,当此缓存变得过时或损坏时,它可能导致连接问题。这在域名经常更改的开发或网络方案中尤为重要。在本文中,我们将探讨如何在使用SystemD解决NetworkManagerNSCD的Linux系统中冲洗DNS高速缓存(名称服务缓存守护程序)。

了解Linux中的DNS缓存

DNS缓存是一种在本地存储DNS查找的机制。这样可以防止对同一域名的重复查询对DNS服务器的不满,从而可以增强性能。但是,Linux根据使用的系统组件或服务的不同分配DNS解决责任。

在现代分布中,您最有可能遇到以下解析器系统之一:

  • SystemD分辨:在Ubuntu 18.04+和Fedora等新分布中很常见。
  • NetworkManager:经常与SystemD解决方案或其他后端一起使用。
  • NSCD(名称服务缓存守护程序):在一些传统的UNIX和Enterprise Linux系统中找到。

这些系统中的每一个都以不同的方式处理DNS缓存,这意味着要冲洗缓存的方法也有所不同。让我们详细浏览每个人。

在SystemD解决的潮红DNS缓存

SystemD分解SystemD提供的一项服务,用于管理DNS查询和缓存。它已成为许多主流Linux分布中的标准。您可以验证您的系统是否使用通过运行来解决的SystemD解决:

 systemctl is-active systemd-resolved

如果有效,请继续使用以下命令冲洗DNS缓存:

 sudo systemd-resolve --flush-caches

为了确认缓存已清除或查看当前统计信息,您可以使用:

 systemd-resolve --statistics

该命令显示标准,例如缓存条目,命中和错过的数量,可帮助您确保缓存冲洗成功。

SystemD解决的配置和调试

对于高级用户,该服务的配置位于/etc/systemd/resolved.conf中。您可以调整设置,例如DNS服务器或后备行为。如果您遇到持续的DNS问题,请考虑检查journalctl日志是否已解决系统

 journalctl -u systemd-resolved

当解决域分辨率问题的问题因DNS错误配置或缓存中毒引起的解决方案问题时,这可能非常有用。

使用NetworkManager刷新DNS

NetworkManager是一个实用程序,可在许多Linux发行版中自动处理网络配置,包括GNOME和KDE等桌面环境。尽管NetworkManager本身并未缓存DNS,但它通常决定哪种服务(例如SystemD分辨)处理DNS。

要使用NetworkManager刷新DNS设置,您可以重新启动该服务:

 sudo systemctl restart NetworkManager

该方法通过重新启动连接和相关服务而间接迫使DNS重新分辨率。如果您想获得更多的颗粒状,也可以禁用和重新启用特定的特定网络接口。例如:

 nmcli networking off nmcli networking on

或者,对于特定设备:

 nmcli device disconnect eth0 nmcli device connect eth0

当网络之间切换或解决DNS变化后,在网络之间切换或解决域传播问题时,此方法特别有用。

使用NMCLI检查DNS设置

如果要检查网络管理器正在使用哪个DNS,则命令:

 nmcli dev show | grep DNS

将列出当前活动的DNS地址。当正确应用DHCP或静态地址的DNS设置时,这很有用。

带有NSCD的冲洗DN(名称服务缓存守护程序)

尽管它在现代台式Linux系统中不太常见,但NSCD仍在企业和旧环境中使用。它缓存了名称服务请求,以加快主机名,密码和其他数据库对象的分辨率。首先,确保其已安装和运行:

 sudo systemctl status nscd

如果有效,则潮红DNS缓存很简单:

 sudo nscd -i hosts

该命令告诉NSCD将其无效( -i)用于主机名的缓存条目。如果您想冲洗所有内容,而不仅仅是DNS条目,请使用:

 sudo nscd -I

这将重新加载整个配置并清除所有受支持数据库的缓存数据。

配置和监视NSCD

NSCD通过/etc/nscd.conf配置。您可以为各种数据类型启用或禁用缓存,例如:

  • Passwd
  • 团体
  • 主持人

该文件被充分发音,使其相当接近。通过journalctl -u nscd监视日志,您可以密切关注其行为并确定潜在的问题。

如何确定您正在使用哪种缓存机制

不确定您的Linux机器依赖于哪种系统来缓存?这里有一些快速检查:

  • systemd-resolve --status是否返回有意义的输出?如果是,您的系统可能会使用SystemD解决
  • nscd -g是否提供表条目?您可能正在使用NSCD
  • resolvectl在您的系统上有效吗?这是SystemD分辨的一个很好的提示。
  • dnsmasq还是安装BIND绑定?这表明需要单独步骤的更高级的设置。

在尝试冲洗或调试DNS缓存之前,识别使用的DNS解析器至关重要,因为潮红的缓存无法解决您的问题。

为什么定期冲洗DNS是有益的

尽管DNS缓存可以提高性能,但也可能是有问题的。这是为什么以及何时想冲洗它:

  • 更改DNS条目后:非填充的卡车可能指向旧的IPS或DNS服务器。
  • 解决连通性问题:损坏或中毒的缓存导致决议失败。
  • 开发时代的场景:测试域迁移或在分期和生产服务器之间切换时。

定期冲洗DNS缓存有助于保持系统健康状况,并避免出乎意料的网站访问问题,尤其是对于电力用户,系统管理员和开发人员而言。

高级技巧和工具

如果您在复杂的环境中工作或需要对DNS分辨率进行更多控制,这里有一些奖励工具和提示:

  • DNSMASQ:充当带有缓存功能的轻量级DNS。
  • 绑定(命名):具有可调区域缓存和自定义到期的企业级DNS服务器。
  • dignslookup调试工具以测试实时DNS记录。
  • host简单而直接的,用于查询无缓存中断的DNS记录。
为什么要在生存2中更改钥匙扣?

最后的想法

在Linux中冲洗DNS缓存是一项简单的任务 - 您知道哪种工具或服务处理系统上的DNS分辨率。无论您是使用SystemD解决网络管理器还是NSCD ,都会了解每个人的操作方式都将武装您的技能,以快速解决任何与DNS相关的故障排除方案。保持DNS缓存的清洁不仅仅是良好的卫生,对于当今动态网络环境中可靠,准确的域名分辨率至关重要。