暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DNS

原创 清醒的沉沦 2023-07-14
898

浏览器默认也有DNS缓存机制,Chrome和Firefox浏览器默认都是1分钟缓存。

操作系统DNS缓存:

Windows默认的DNS域名老化时间是5分钟,默认开启DNSlient,可以缓存一些常用的域名。

Linux(CentOS、FreeBSD)默认无DNS缓存,但可使用nscd或者systemd-resolved开操作系统DNS缓存,但不建议这么,Ubuntu默认运行systemd-resolve daemon 用于名称服务器缓存。

macOS严格遵循TTL设置。

客户端清除缓存时间:

# Apple macOS 参考链接:https://support.apple.com/en-us/HT202516
sudo killall -HUP mDNSResponder

# Ubuntu
# 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

# CentOS 默认CentOS 默认不存在 Client 端的 DNS 缓存,通常使用 nscd 来启用 dns 缓存
yum -y install nscd
systemctl enable --now nscd
# 清除缓存即重启 nscd 服务
systemctl restart nscd

--- 6.8 实测 restart 不行 需要reload

# Microsoft Windows
# 清除 dns 缓存
ipconfig /flushdns
# 查看 dns 缓存
ipconfig /displaydns











windows 刷新dns

1.打开开始菜单,输入“CMD”回车打开命令提示符



2.在其中输入“ipconfig /displaydns”回车,即可返回一个缓存的DNS记录列表



3.输入“ipconfig /flushdns”回车,即可刷新DNS缓存



4.遇到有可能是DNS缓存过期而网络不通畅时,可以尝试刷新DNS缓存来解决问题





linux

查看dns 被谁缓存

[root@pg3 ~]# lsof -i :53 -S
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dnsmasq 18898 nobody 4u IPv4 58262 0t0 UDP *:domain
dnsmasq 18898 nobody 5u IPv4 58263 0t0 TCP *:domain (LISTEN)
dnsmasq 18898 nobody 6u IPv6 58264 0t0 UDP *:domain
dnsmasq 18898 nobody 7u IPv6 58265 0t0 TCP *:domain (LISTEN)
[root@pg3 ~]#


1. Linux 刷新 DNS 缓存通用参考
Linux 可以运行 dnsmasq、nscd、unbound 或者 systemd-resolved 作为名称服务缓存守护进程 (sysin)。

dnsmasq
如果你的 DNS 服务器是用 dnsmasq 实现的,用下面这个命令:

service dnsmasq restart
1
如果 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
1
2
3
如果 nscd 服务不存在,先安装 nscd,命令如下:

RHEL 及其兼容发行版:sudo yum install nscd
Debian 及其兼容发行版:sudo apt install nscd
或者其他发行版对应的软件包管理命令
unboud
unbound 使用 unbound-control 命令来管理 DNS 缓存:

# 刷新所有缓存
unbound-control flush all
# 更多命令查看帮助
unbound-control -h
1
2
3
4
如果 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
1
2
3
4
5
6
7
8
如果 resolvectl 无法执行,先安装 systemd-resolved,命令如下:

RHEL 及其兼容发行版:sudo yum install systemd-resolved
Debian 及其兼容发行版:sudo apt install systemd-resolved
或者其他发行版对应的软件包管理命令
BIND (服务端,与上述客户端 DNS 缓存不同)
如果是清除 BIND 服务器上的 CACHE,用这个命令:

rndc flush
1
如果 rndc 无法执行,先安装 bind,命令如下:

RHEL 及其兼容发行版:sudo yum install bind
Debian 及其兼容发行版:sudo apt install bind9
或者其他发行版对应的软件包管理命令
以下对几个主流发行版单独说明。


原文链接:https://blog.csdn.net/netgc/article/details/131380065

https://blog.csdn.net/netgc/article/details/131380065


































以下是在 Linux 上刷新 DNS 缓存的详细步骤:

步骤1:确定你的 Linux 发行版
不同的 Linux 发行版可能使用不同的 DNS 解析工具和服务。在开始之前,首先确定你正在使用的 Linux 发行版。本文将介绍两种常见的发行版:Ubuntu 和 CentOS。

步骤2:Ubuntu 上刷新 DNS 缓存
方法1:使用 systemd-resolved 服务
Ubuntu 使用 systemd-resolved 服务来处理 DNS 解析和缓存。要刷新 DNS 缓存,你可以执行以下命令:

sudo systemd-resolve --flush-caches

这将清除 systemd-resolved 服务的 DNS 缓存,并使其从头开始重新解析 DNS。

方法2:重启 systemd-resolved 服务
另一种方法是重启 systemd-resolved 服务,这将同时清除缓存并重启服务。执行以下命令:

sudo systemctl restart systemd-resolved














步骤3:CentOS 上刷新 DNS 缓存
方法1:使用 NetworkManager 服务
CentOS 使用 NetworkManager 服务来管理网络连接和 DNS 解析。要刷新 DNS 缓存,可以执行以下命令:

sudo systemctl reload NetworkManager

这将重新加载 NetworkManager 服务并清除 DNS 缓存。

方法2:重启 NetworkManager 服务
另一种方法是通过重启 NetworkManager 服务来刷新 DNS 缓存。执行以下命令:

sudo systemctl restart NetworkManager

步骤4:其他 Linux 发行版
对于其他的 Linux 发行版,你可以尝试以下方法之一:

重启网络服务:通过执行 sudo systemctl restart network 或 sudo service network restart 命令来重启网络服务,这可能会刷新 DNS 缓存。

重启计算机:如果上述方法都无效,你可以尝试重启计算机,这将清除 DNS 缓存并重新加载所有网络配置。
结论
通过执行以上步骤,你可以在 Linux 上刷新 DNS 缓存,以获取最新的 DNS 解析结果。请记住,在某些情况下,可能需要等待一段时间才能完全看到新的 DNS 解析结果。
如果你的网络连接存在问题或者 DNS 服务器有其他配置问题,刷新 DNS 缓存可能不会立即生效。此外,不同的 Linux 发行版可能使用不同的工具和服务来处理 DNS 解析和缓存,
因此在执行上述步骤时请确保使用适用于你的发行版的命令和方法。


如果你仍然遇到 DNS 解析问题,你可以尝试使用其他 DNS 解析服务器,或者检查你的网络配置和 DNS 设置是否正确。同时,还可以尝试清除浏览器的 DNS 缓存,因为浏览器也会缓存 DNS 解析结果。


http://www.zzvips.com/news/246591.html


为什么要在 Linux 上刷新 DNS 缓存?
您可能想要重建存储在系统上的 DNS 缓存的原因有多种。也许您有一个过时的 DNS 记录,并希望从 DNS 服务器重新获取它。或者,您的系统可能已受到威胁,
并且您希望确保DNS缓存未被篡改,也称为DNS欺骗。

当您刷新 DNS 缓存时,系统必须再次 ping DNS 服务器并从中获取新的域 IP 地址记录,从而在此过程中删除任何过时或受损的数据。

如何在 Linux 上查看本地 DNS 缓存
在systemd之前,大多数Linux发行版都没有系统范围的DNS缓存,除非像dnsmasq或nscd这样的程序是手动设置的。systemd 附带 systemd-solved,这是一项将域名解析为 IP 地址并缓存 DNS 条目的服务。

以下各节将指导您如何查看由 systemd 解析、nscd 和 dnsmasq 生成的 DNS 缓存内容,以便您在决定刷新缓存数据之前了解缓存的数据。











查看系统解析的 DNS 缓存
要查看 systemd 解析的缓存记录,您需要先暂时终止服务,然后将其日志导出到文件中。

首先发送 SIGUSR1 信号以终止 systemd 解析的服务:

linuxmi@linuxmi ~/www.linuxmi.com
% sudo killall -USR1 systemd-resolved
[sudo] linuxmi 的密码:
使用journalctl 命令和标准输出运算符将输出保存到文本文件:

linuxmi@linuxmi ~/www.linuxmi.com
% sudo journalctl -u systemd-resolved > ~/cache.txt
linuxmi@linuxmi ~/www.linuxmi.com
如何在 Linux 上查看和刷新 DNS 缓存

然后,您可以使用 Vim 等文本编辑器查看文件的内容:

如何在 Linux 上查看和刷新 DNS 缓存

在文件中,搜索“CACHE:”,方法是按Escape,键入“/CACHE:”,然后按Enter键。“CACHE:”下列出的所有 DNS 记录都是本地 DNS 缓存的一部分。如果您使用的是 Vim,请按n跳转到下一组 DNS 条目。

如何在 Linux 上查看和刷新 DNS 缓存

查看 nscd 的本地 DNS 缓存
要查看 nscd 生成的本地缓存,您需要使用 string 命令读取 nscd 主机数据库的内容。

在基于 Debian 和 Ubuntu 的发行版上,此文件位于 /var/cache/nscd/hosts。运行以下命令以查看文件:

linuxmi@linuxmi ~/www.linuxmi.com
% sudo strings /var/cache/nscd/hosts | uniq
如何在 Linux 上查看和刷新 DNS 缓存

要查看有关 nscd DNS 高速缓存的一般统计信息,请使用-g标志:

linuxmi@linuxmi ~/www.linuxmi.com
% sudo nscd -g



















如何在 Linux 上查看和刷新 DNS 缓存

显示由 dnsmasq 生成的 DNS 缓存
dnsmasq 将 DNS 缓存存储在内存中,因此获取确切的记录并不容易。但是您可以向 dnsmasq 发送终止信号并记录其输出以获取处理的 DNS 查询数。

为此,首先,使用systemctl 命令确保dnsmasq 已启动并正在运行:

linuxmi@linuxmi ~/www.linuxmi.com
% sudo systemctl status dnsmasq
如何在 Linux 上查看和刷新 DNS 缓存

如果状态显示“活动 Active”,请运行以下命令以终止该服务:

linuxmi@linuxmi ~/www.linuxmi.com
% sudo pkill -USR1 dnsmasq
如何在 Linux 上查看和刷新 DNS 缓存

使用 journalctl 命令,提取 dnsmasq 日志并将它们保存到文本文件中:

linuxmi@linuxmi ~/www.linuxmi.com
% sudo journalctl -u dnsmasq > ~/cache.txt
最后,使用文件查看实用程序(如 cat 或更少)查看文件的内容:

linuxmi@linuxmi ~/www.linuxmi.com
% cat ~/cache.txt
如何在 Linux 上查看和刷新 DNS 缓存

如何在 Linux 上刷新 DNS 缓存
刷新 DNS 缓存意味着从计算机中删除缓存的 DNS 记录。这会强制它向 DNS 服务器发送请求以检索新的 DNS 条目。
















以下是在 Linux 上刷新 DNS 缓存的方法:

使用 systemd 解析
您可以使用 resolvectl 命令刷新 systemd 解析存储的 DNS 缓存:

linuxmi@linuxmi ~/www.linuxmi.com
% sudo resolvectl flush-caches
如何在 Linux 上查看和刷新 DNS 缓存

如果您运行的是 Ubuntu 17.04 或 18.04,请使用 systemd 解析的命令刷新缓存:

sudo systemd-resolved --flush-caches
在 Linux 上刷新 nscd DNS 缓存
删除 nscd 的 DNS 缓存的最便捷方法是重新启动服务。您可以通过运行以下命令来执行此操作:

linuxmi@linuxmi ~/www.linuxmi.com
% sudo /etc/init.d/nscd restart
如何在 Linux 上查看和刷新 DNS 缓存

如果这不起作用,首先,检查存储在PC上的本地缓存是否持久。您可以使用-g标志进行验证:

sudo nscd -g
如果是这种情况,请使用带有 nscd 命令的–i 标志来清除记录(i代表invalidate):

linuxmi@linuxmi ~/www.linuxmi.com
% sudo nscd -i hosts
删除 dnsmasq DNS 缓存


刷新 dnsmasq 生成的 DNS 缓存很简单。由于缓存存储在内存中,因此重新启动服务会删除所有存储的条目。

要重新启动 dnsmasq,请运行以下 systemctl 命令:

sudo systemctl restart dnsmasq
或者,发出以下命令:

service dnsmasq restart
如果出现提示,请输入管理员密码。dnsmasq 现在将重新启动,所有现有的 DNS 条目将从缓存中删除。

刷新 DNS 缓存后,最好查看本地缓存条目并验证数据是否已成功删除。您可以使用 dig(许多网络故障排除 Linux 命令之一),并检查输出中的“查询时间”值。如果超过 0 毫秒,则缓存已成功清除(0 毫秒表示域记录仍在缓存中)。

dig google.com
清除谷歌浏览器的DNS缓存
您经常使用的 Web 浏览器也会缓存 DNS 记录。输入 URL 时,系统会在本地浏览器缓存中搜索缓存条目。如果未找到,它将检查本地系统缓存中的记录。清除 Web 浏览器的 DNS 缓存至关重要,因为它的优先级高于系统范围的缓存。

为了演示,让我们刷新谷歌浏览器中的DNS缓存。在其他浏览器上也有一些方法可以做到这一点,所以最好 Google 一下如何使用你使用的浏览器做到这一点。

首先,在URL栏中键入“chrome://net-internals/#dns”并按Enter键:

如何在 Linux 上查看和刷新 DNS 缓存

单击清除主机缓存 Clear host cache以清除存储在谷歌浏览器中的DNS条目。



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论