DNS缓存是一个临时数据库,用于存储有关以前的DNS查找的信息。换句话说,每当你访问网站时,你的操作系统和网络浏览器都会保留该域和相应IP地址的记录。这消除了对远程DNS服务器重复查询的需要,并允许你的OS或浏览器快速解析网站的URL。

但是在某些情况下,例如:对网络问题进行故障排除,或者在更改DNS解析器之后,你将需要刷新DNS缓存。这将清除缓存的DNS条目,并根据新配置的DNS设置执行后续查找以解析域。

本指南提供有关如何在不同的操作系统和Web浏览器上刷新DNS缓存的说明。

在Windows上清除/刷新DNS缓存

对于所有Windows版本,清除DNS缓存的过程都是相同的。你需要使用管理员权限打开命令提示符并运行ipconfig/flushdns。

Windows10和Windows8

要在Windows10和Windows8中清除DNS缓存,请执行以下步骤:

  • 在Windows搜索栏中键入cmd。
  • 右键单击“命令提示符”,然后右击“以管理员身份运行”。这将打开“命令提示符”窗口。
  • 在命令行上,键入以下行,然后按回车:
  • ipconfig/flushdns

    成功后,系统将返回以下消息:

    WindowsIPConfiguration
    SuccessfullyflushedtheDNSResolverCache.
    Windows7

    要在Windows7中清除DNS缓存,请执行以下步骤:

  • 单击开始按钮。
  • 在开始菜单搜索文本框中键入cmd。
  • 右键单击“命令提示符”,然后单击“以管理员身份运行”。这将打开“命令提示符”窗口。
  • 在命令行上,键入以下行,然后按回车:
  • ipconfig/flushdns

    成功后,系统将返回以下消息:

    WindowsIPConfiguration
    SuccessfullyflushedtheDNSResolverCache.
    在Linux上清除/刷新DNS缓存

    在Linux上,除非已安装并运行诸如Systemd-Resolved,DNSMasq或Nscd之类的缓存服务,否则没有操作系统级DNS缓存。根据Linux发行版和所使用的缓存服务,清除DNS缓存的过程有所不同。

    系统化解决

    大多数现代Linux发行版,例如Ubuntu18.04,都使用systemd解析的服务来缓存DNS条目。

    要查找服务是否正在运行,请运行:

    $sudosystemctlis-activesystemd-resolved.service

    如果该服务正在运行,则将打印命令active,否则将看到inactive。

    要清除系统解析的DNS缓存,你需要键入以下命令。

    $sudosystemd-resolve--flush-caches

    成功后,该命令不会返回任何消息。

    Dnsmasq

    Dnsmasq是轻量级的DHCP和DNS缓存名称服务器。

    如果你的系统使用DNSMasq作为缓存服务器,则要清除DNS缓存,需要重新启动Dnsmasq服务:

    $sudosystemctlrestartdnsmasq.service

    也可以使用以下命令

    $sudoservicednsmasqrestart
    NSCD

    NSCD是一个缓存守护程序,它是大多数基于RedHat的发行版的首选DNS缓存系统。

    如果系统使用NSCD来清除DNS缓存,则需要重新启动NSCD服务:

    $sudosystemctlrestartnscd.service
    或者
    $sudoservicenscdrestart
    在MacOS上清除/刷新DNS缓存

    根据你所运行的版本,在MacOS中刷新缓存的命令略有不同。该命令必须以具有系统管理员特权的用户(sudo用户)身份运行。

    要清除MacOS中的DNS缓存,请执行以下步骤:

  • 打开查找器。
  • 转到应用程序>实用程序>终端。这将打开终端窗口。
  • 在命令行中,输入以下行,然后按回车:
  • $sudokillall-HUPmDNSResponder

    输入你的sudo密码,然后再次按回车。成功后,系统不会返回任何消息。

    对于早期版本的MacOS,刷新缓存的命令不同。

    • MacOS版本10.11和10.9
    $sudodscacheutil-flushcache
    $sudokillall-HUPmDNSResponder
    • MacOS版本10.10
    $sudodiscoveryutilmdnsflushcache
    $sudodiscoveryutiludnsflushcaches
    • MacOS版本10.6和10.5
    $sudodscacheutil-flushcache
    清除/刷新浏览器DNS缓存

    大多数现代的Web浏览器都有一个内置的DNS客户端,以防止每次访问该网站时重复查询。

    谷歌浏览器Chrome

    要清除GoogleChrome的DNS缓存,请执行以下步骤:

  • 打开一个新标签,然后在地址栏输入chrome://net-internals/#dnsChrome。
  • 点击“清除主机缓存”按钮。
  • 如果那对你不起作用,请尝试清除缓存和Cookie。

  • 按下CTRL+Shift+Del以打开“清除浏览数据”对话框窗口。
  • 选择一个时间范围。选择“所有时间”以删除所有内容。
  • 选中“Cookie和其他站点数据”和“缓存的图像和文件”框。
  • 点击“清除数据”按钮。
  • 此方法适用于所有基于Chrome的浏览器,包括Chromium,Vivaldi和Opera。

    火狐Firefox

    要清除Firefox的DNS缓存,请执行以下步骤:

  • 在右上角,单击汉堡包图标☰以打开Firefox的菜单:
  • 点击⚙Options(Preferences)链接。
  • 单击左侧的“隐私和安全性”或“隐私”选项卡。
  • 向下滚动到该History部分,然后单击ClearHistory...按钮。
  • 选择要清除的时间范围。选择“所有内容”以删除所有内容。
  • 选择所有框,然后单击“立即清除”。
  • 如果这对你不起作用,请尝试以下方法并暂时禁用DNS缓存。

  • 打开一个新标签,然后在Firefox的地址栏中输入about:config。
  • 搜索network.dnsCacheExpiration,将值暂时设置为0,然后单击“确定”。然后,改回默认值,然后单击“确定”。
  • 搜索network.dnsCacheEntries,将值暂时设置为0,然后单击“确定”。然后,改回默认值,然后单击“确定”。
  • 结论

    至此,你已经了解了如何在Windows,Linux和MacOS操作系统上清除或刷新DNS缓存。

    如果还存在问题,Linux和MacOS还可以使用dig命令来查询DNS并对DNS问题进行故障排除。

    来源:myfreax原文:https://tinyurl.com/yyl2n44e题图:来自谷歌图片搜索版权:本文版权归原作者所有投稿:欢迎投稿,邮箱:editor@hi-linux.com