如何在 Linux 上检查 DNS 传播
虽然 DNS 为互联网主机引入了人类可读的命名方案,但它也带来了与将名称解析为 IP 地址相关的额外开销。对于最终用户而言,此开销意味着访问任何 Internet 主机时会出现额外的 DNS 查找延迟。对于服务提供商来说,这意味着需要维护性能关键的 DNS 基础设施。最大限度地减少这些开销导致了在整个 DNS 层次结构中广泛使用缓存。例如,网络浏览器/操作系统内置的DNS缓存;本地网络的DNS缓存服务器;以及服务提供商运营的本地 DNS 服务器的缓存等。
当涉及到更新 DNS 记录时,如此深的 DNS 缓存链会产生影响。通常,当您更新主机的 DNS 记录时,更新不会立即对外界可见。相反,旧的 DNS 记录可以暂时从各种 DNS 缓存中提供服务。本地 DNS 服务器通常会将每个 DNS 条目在其缓存中保留一段时间,称为“生存时间”(TTL),范围从几分钟到一天不等。因此,典型的 DNS 传播延迟(即看到任何 DNS 更新在全球范围内传播所需的时间)为 24-48 小时。
如果您想检查您的 DNS 记录如何在 Internet 上传播,您可以尝试各种在线 DNS 查找服务。除了此类第三方在线服务之外,还有一种方法可以在 Linux 上本地监控 DNS 传播。
输入dnsyo
。
dnsyo
是一个命令行工具,它可以从 Internet 上的各个有利位置对您的域名执行 DNS 查找。截至撰写本文时,dnsyo
可以查询属于全球 33 个国家/地区 1,500 个网络的 1,800 多个开放 DNS 解析器。通过比较这些服务器的 DNS 查找结果,您可以检查 DNS 是否以及如何在 Internet 上传播。
在 Linux 上安装 dnsyo
要在 Ubuntu、Debian 或 Linux Mint 上安装 dnsyo
:
$ sudo apt-get install python-pip
$ sudo pip install dnsyo --upgrade
要在 CentOS、Fedora 或 RHEL 上安装 dnsyo:
$ sudo yum install python-pip
$ sudo pip install dnsyo --upgrade
使用 dnsyo 跟踪 DNS 传播
默认情况下,dnsyo
随机选择 500 个 DNS 服务器(从大约 1,800 个服务器中),并从中执行 DNS 查找。 dnsyo
会定期自动下载并更新可用 DNS 服务器的列表。
查看域名的 DNS 查找结果:
$ dnsyo linux教程

如果您将域名从一个 IP 地址移至另一个 IP 地址,并且 DNS 记录尚未在全球范围内完全传播,您可能会看到该域解析为任一 IP 地址,具体取决于使用的 DNS 服务器。在上面的示例中,所有响应的 DNS 服务器报告相同的 IP 地址。
请注意,许多高流量网站采用基于 DNS 的负载平衡,其中域名被故意解析为 IP 地址池。在这种情况下,一个域名始终会解析为多个 IP 地址。使用 dnsyo
查看 Twitter.com,例如:

要获取 DNS 查询的更多详细信息(例如,每个 DNS 服务器的 IP 地址/位置),请使用 --extended
选项。
$ dnsyo --extended linux教程

使用dnsyo
,您还可以查询特定的 DNS 记录类型。例如,要查找 Google.com 的 MX 记录:
$ dnsyo google.com MX

以下是 dnsyo 的完整命令行用法。
usage: dnsyo [options] domain [type]
Query lots of DNS servers and colate the results
positional arguments:
domain Domain to query
type Record type (A, CNAME, MX, etc.)
optional arguments:
-h, --help show this help message and exit
--resolvlist RESOLVLIST, -l RESOLVLIST
Location of the yaml resolvers list to download
(http/https)
--verbose, -v Extended debug info
--simple, -s Simple output mode (good for UNIX parsing)
--extended, -x Extended output mode including server addresses
--threads THREADS, -t THREADS
Number of worker threads to use
--servers SERVERS, -q SERVERS
Maximum number of servers to query (or ALL)
--country COUNTRY, -c COUNTRY
Query servers by two letter country code