如何在Ubuntu上清除DNS缓存

时间:2020-02-23 14:44:56  来源:igfitidea点击:

每当我们尝试访问时,都会执行DNS名称解析查询来解析其IP地址。
操作系统会缓存此数据,以避免每次都与名称服务器联系。

为什么要清除DNS缓存?

有时,的IP地址在移至另一台服务器时会更改。
在这种情况下,如果我们点击了缓存的IP地址,则该将无法正常运行。

DNS条目具有与之关联的"生存时间(TTL)"值,该值告诉操作系统名称解析服务何时使DNS缓存无效。

但是,如果您想在TTL过期之前访问新的IP地址,唯一的解决方案是刷新DNS缓存。

Ubuntu服务进行DNS名称解析

systemd-resolved.service用于运行DNS查询和维护DNS缓存。

我们可以使用以下命令来检查其状态。

# sudo systemctl status systemd-resolved

我们可以运行以下命令来检查DNS缓存统计信息。

# sudo systemd-resolve --statistics

服务和命令名称略有不同。
命令名称中没有最后一个字符" d"。

如何在Ubuntu上清除DNS缓存?

我们可以运行以下命令来清除Ubuntu上的DNS缓存。

# sudo systemd-resolve --flush-caches

然后,再次检查统计信息以确认"当前缓存大小"为0。

重新启动systemd解析的服务以清除所有DNS缓存统计信息

DNS刷新命令不会清除缓存的命中和未命中统计信息。
如果要清除所有缓存统计信息,则必须重新启动systemd解析的服务。

# sudo systemctl restart systemd-resolved