AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 2219
Accepted
Jono
Jono
Asked: 2010-08-14 13:23:53 +0800 CST2010-08-14 13:23:53 +0800 CST 2010-08-14 13:23:53 +0800 CST

如何清除 DNS 缓存?

  • 772

我刚刚更新了我托管的站点的 DNS 记录 ( ns1, ns2, ns3.myhostingcompany.com),但我仍然得到域注册商停放页面。

我想看看问题是否出在 Ubuntu 的缓存 DNS 记录上。有没有办法清除 Ubuntu 的 DNS 缓存?(如果存在这样的事情?)

networking dns
  • 15 15 个回答
  • 481668 Views

15 个回答

  • Voted
  1. Mike Shultz
    2017-06-27T20:09:25+08:002017-06-27T20:09:25+08:00

    Ubuntu 17.04 及更高版本 (18.04)

    从 Ubuntu 17.04 起,systemd-resolve 用于 DNS。您可以像这样刷新 systemd 的缓存:

    sudo systemd-resolve --flush-caches
    
    • 167
  2. Best Answer
    Li Lo
    2010-08-14T16:13:37+08:002010-08-14T16:13:37+08:00

    对于 18.04 及更高版本

    看看迈克舒尔茨的回答。

    对于 11.10 及以下版本

    Ubuntu 默认情况下不缓存 dns 记录,因此除非您安装了 dns 缓存,否则无需清除任何内容。

    DNS 记录可能由您的提供商的 DNS 服务器缓存,因此如果您想检查您所做的 DNS 更改是否成功,您可以使用 dig 从您的域托管服务询问 DNS 服务器:

    dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

    如果您希望 Ubuntu 开始缓存 dns,我建议pdnsd与resolvconf. nscd是越野车,不可取。

    • 81
  3. user76204
    2012-09-15T12:39:00+08:002012-09-15T12:39:00+08:00

    12.04

    Ubuntu 12.04 使用dnsmasq内置的network-manager,但它不缓存 dns,因此无需刷新它。这是我的示例行syslog来证明这一点:

    dnsmasq[2980]: started, version 2.59 cache disabled
    

    也不需要任何配置dnsmasq。如果您使用股票设置运行,它不会缓存 dns,至于这样做,您必须按照Ubuntu 文章所述明确设置它。

    如果您想刷新您的设置,您可以禁用然后启用网络或运行

    sudo service network-manager restart
    

    这会重新启动dnsmasq,因为它内置于network-manager; 检查你syslog的证据。

    如果您使用 dhcp 的有线连接network manager将直接从您的路由器获取设置,并且您的连接将在您登录 Ubuntu 时自动建立。如果您可以通过 Web 界面访问它,您可以检查路由器中的设置是否正确,并在必要时重新启动它。如果是 dns 的一般问题,您可以尝试使用 Google dns 而不是您的 isp dns,更多信息在此处详述。

    • 70
  4. Oli
    2014-03-18T02:40:37+08:002014-03-18T02:40:37+08:00

    请注意,Ubuntu 从 17.04 开始使用 systemd-resolve ,因此此答案不再适用于最近的 Ubuntu 版本。请参阅“在 Ubuntu 17.04 及更高版本 (18.04) 中刷新 DNS 缓存”

    默认情况下,DNS 在 Ubuntu < 17.04 中不缓存(但可能会缓存在网络或应用程序中)

    要确认一种方式或另一种方式是否dnsmasq正在缓存,请运行ps ax | grep dnsmasq并查看正在运行的命令。这是我的默认 13.10 机器的细分:

    /usr/sbin/dnsmasq \
      --没有解决\
      --保持在前台\
      --无主机\
      --绑定接口\
      --pid-file=/var/run/NetworkManager/dnsmasq.pid \
      --听地址=127.0.1.1 \
      --conf-file=/var/run/NetworkManager/dnsmasq.conf \
      --缓存大小=0 \
      --代理-dnssec \
      --enable-dbus=org.freedesktop.NetworkManager.dnsmasq \
      --conf-dir=/etc/NetworkManager/dnsmasq.d

    /etc/NetworkManager/dnsmasq.d默认为空。所以那里没有任何覆盖,只是检查--cache-size=0意味着我们认为它意味着什么(而不是无限缓存),man dnsmasq显示:

    -c, --cache-size=<cachesize>
      Set the size of dnsmasq's cache. The default is 150 names. 
      Setting the cache size to zero disables caching.
    

    因此,虽然dnsmasq 可以缓存 DNS,但它并不是开箱即用的缓存。您可以检查您的机器和各种配置目录以检查您是否在同一页面上。

    如果您看到缓存问题,这可能发生在以下几个地方之一:

    • 从您的计算机上游。一些路由器缓存。许多公司网络会缓存 DNS。许多 ISP 运行的 DNS 服务器将使用它们自己的缓存。保证网络缓存的唯一方法是使用可以手动刷新的缓存。这就是我喜欢 OpenDNS 的原因。
    • 在客户端应用程序(特别是浏览器)中。应用程序可以执行 Ubuntu 无法影响的各种自己的缓存。Firefox 如何缓存 DNS。如何清除 Chrome 的 DNS 缓存。其他浏览器(和应用程序)可能有自己的机制。
    • 我在这里刮了桶,但也许你已经在 Ubuntu 中安装了一个非标准的 DNS 服务器,而不是在dnsmasq. 有很多: nscd, DJBDNS dnscache(aka TinyDNS), pdns, pdnsd, Bind9 (和它的变种),还有更多我什至不记得了。这些可能会在/etc/resolv.conf(使用 /etc/resolvconf/` 中的配置自动生成该文件)得到证明。下面显示了一个本地截获的 DNS 查询:

      $ nslookup askubuntu.com
      Server:     127.0.1.1
      Address:    127.0.1.1#53
      
      Non-authoritative answer:
      Name:   askubuntu.com
      Address: 198.252.206.24
      

      如果您没有访问 8.8.8.8(或任何您期望的 DNS 服务器),请检查您正在访问的内容。在我的情况下,我可以看到这只是为了dnsmasq将 DNS 查询镜像回 LXC,但在你的情况下,它可能会做坏缓存的事情。

      如果您已完成列出的缓存,则清除每个缓存的过程会有所不同:

      sudo /etc/init.d/nscd reload    # nscd
      sudo /etc/init.d/named restart  # bind9
      

    在一个稍微相关的注释上,请参阅this 以启用缓存dnsmasq。

    • 64
  5. zechariah
    2012-07-22T13:32:33+08:002012-07-22T13:32:33+08:00

    对于 12.04:

    Ubuntu 12.04 使用 dnsmasq 缓存 DNS(请参阅 参考资料man dnsmasq)。使用以下命令清除缓存:

    sudo kill -HUP $(pgrep dnsmasq)
    
    • 40
  6. Mark Davidson
    2010-08-14T13:25:32+08:002010-08-14T13:25:32+08:00

    sudo /etc/init.d/nscd restart

    http://www.ubuntugeek.com/howto-clearflush-dns-cache-in-ubuntu.html

    另请注意,您可以使用 dig 检查并查看您的 DNS 更改是否已传播并查找默认 DNS 服务器以外的其他人。在这种情况下,谷歌 DNS。

    dig @8.8.8.8 example.com

    • 15
  7. Oli
    2010-08-14T13:26:45+08:002010-08-14T13:26:45+08:00

    就个人而言,我会使用 OpenDNS并使用他们的缓存检查功能来强制刷新,以确保更改有效,但您不能保证它们会在 48 小时内为您的用户刷新。

    DNS是一个缓慢的野兽。耐心会让你保持清醒。

    • 11
  8. bikesandcode
    2010-08-14T13:33:16+08:002010-08-14T13:33:16+08:00

    如果您使用的是 nscd:

    sudo /etc/init.d/nscd restart
    

    值得一提的是,缓存它的可能不是操作系统。每个人都喜欢缓存 DNS... 一些测试:

    检查它是新IP还是旧IP。大多数浏览器也会缓存 DNS,因此如果您没有重新启动 Chromium 或其他任何您可能看不到最新版本的浏览器。

    ping yourdomain.com
    

    将 /etc/resolv.conf 中的本地名称服务器切换到另一个提供商 google 或 level ,例如:

    nameserver 8.8.8.8
    nameserver 4.2.2.2
    

    然后再次ping。

    检查以确保您的路由器没有以任何形式缓存 DNS。(因路由器/固件/等而异)

    最后,耐心。DNS 可能需要一些时间才能在整个 Internet 中传播。

    • 7
  9. Benoit
    2014-03-19T02:07:43+08:002014-03-19T02:07:43+08:00

    上面的所有答案都忘记了名称解析中的一件重要事情:通常,您请求名称解析的 DNS 服务器不是自己保存记录的服务器(权威服务器)。由于每个 DNS 记录都带有一个生存时间值,这将迫使解析链中的每个 DNS 服务器在该值提到的秒数内进行缓存。因此,您不仅可以缓存在您的机器中,而且名称查找的结果肯定会缓存在您无法控制的服务器上的某个位置。

    立即通知名称记录更改的唯一解决方案是在权威名称服务器中创建/更新条目时使用 TTL 值 0。但这意味着对于每个名称解析,服务器都会受到攻击,这通常是注册商不允许的。例如,他们可以提供您可以选择的预定义 TTL 值列表。

    我管理不同的域名,并确保更改在权威名称服务器中得到很好的应用,我使用了一个名为的工具,该工具dnstracer可以从 DNS 根目录显示每个服务器上的查找结果。

    总之,即使没有任何 DNS 缓存解决方案,在您更改 DNS 记录和在 PC 上看到更改之间仍然会有延迟。这种延迟很大程度上取决于记录的 TTL 以及您的 PC 和权威名称服务器之间的 DNS 服务器数量。

    • 5
  10. j0inty
    2013-02-26T13:41:24+08:002013-02-26T13:41:24+08:00

    我使用以下命令刷新 12.10 ubuntu 机器上的 dns 缓存,效果非常好。

    sudo kill -HUP $(pgrep dnsmasq)
    

    另一个有用的信号是 SIGUSR1,它将一些统计信息转储到 syslog 或来自以下内容的注释man dnsmasq:

    在 --no-daemon 模式或启用完整日志记录 (-q) 时,会生成缓存内容的完整转储。

    • 2

相关问题

  • 如何设置 VLAN 转发?

  • 如何将主机 Ubuntu 上的 VPN (tun0) 网络适配器映射到 VirtualBox 来宾 Windows?

  • 如何限制下载/上传带宽?

  • 如何通过 Windows 网络共享文件?

  • 面板小程序以文本形式显示当前网络流量?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve