对于域名来说,其 DNS 是否正常运作是件相当重要的事,无论是对于您的网站,您的电子邮件还是与您的域名相关的其它服务。如果您无法掌控您的 DNS,那么什么都是不可能的。

那么,到底要如何检查您的域名的 DNS 是否有问题呢?您应该如何检查了?让我们一起来看看。

首先,什么是 DNS?

首先,当我们谈论检查 DNS 时,我们必须确定我们正在谈论同样的内容。域名系统( Domain Name System),简称为 DNS,是用于将电脑可理解的网路地址(尤其是仅由一串数字所组成的 IP 位址)连结到易于记忆和沟通的域名系统。DNS 既是分层的又是去中心化的。当我们谈论检查 DNS 以及为什么要检查它时,这两者都对其有一定的影响。

DNS 是如何分层的?

DNS 是分层的,因为每个域名都会定义在它的 “母” 域名的 “区域”中,直到根区域,它定义了所有现有的顶级域名(TLD),也就是我们说的域名后缀(有时也称为网域),例如 .com、.org,.net 等。每个顶级域名的区域会去定义以该特定域名后缀结尾的所有域名,且每个域名的区域也会定义该特定域名的所有子域名。

DNS 如何去中心化?

DNS 是去中心化的,因为当前并无存在列出所有域名的主列表,或者至少,如果确实存在这样的列表,它也不会被使用 DNS 系统使用。相反地,每个域名的所有全人负责维护其自己的 “区域文件”,该文件会指出该区域中定义的所有域名。然后在另外一台 “名称伺服器” 上公开,通常会在至少一台权威名称伺服器和至少一台备用名称伺服器上。

因此,当您购买一个域名时,您实际上是在购买该域名区域的控制权,以及在该域名中添加任何项目的权利。

此外也有一系列的 DNS 解析器,它们是专门用于 “解析” 域名的过程的伺服器,换句话说,就是将域名转换为网路地址的伺服器,以便具有域名的电脑可以连接到由其 IP 位址标识的特定电脑。

这个解析器系统也分佈在世界各地的网路中。

当查询域名系统时,例如,当您在浏览器中导航至某个网站时,您的网路域名解析器实际上是第一次发送该查询的位置。通常,这是您的 ISP 的 DNS 解析器,但也可以使用第三方 DNS 解析器,例如 Google 的公共 DNS,或者如果您连接到 VPN,它可能是该网路的 DNS 解析器。

而对于高流量网站来说,其解析器的缓存中可能已经有了答案,这种情况下,它只会从其缓存中将该答案发送给您,而无需查询网路中的其馀部分。如果没有,它将从其分层链上询问下一个解析器。

这个系统使 DNS 解析器可以高度灵活和快速运作,因为它们不必在您每次查询域名时询问权威名称伺服器,但它也可能会给您带来一些小问题。这部份我们稍后会再做详细介绍。

现在您只需要知道,DNS 既是分层的又去中心化的即可。这种分层和去中心化意味着对于每个级别中的每个域名(无论是根域名,顶级域名还是域名),该域名的所有权人必须在权威名称伺服器及一个或多个辅助名称伺服器(基本上是备份)上,发佈人类可读的名称和机器可读的地址之间的对应关係列表。它们也代表着,若要查找域名,您的电脑必须向称为解析器的特殊 DNS 伺服器进行分佈式网路查询,该解析器的工作是为 DNS 查询提供缓存的答案或去查询另一个 DNS 伺服器。

为什么我需要检查域名的 DNS?

到目前为止都还可以理解吗?虽然看似有些複杂,但最终还是值得的!接着,您将了解或许需要检查您域名的 DNS 的几个原因。

我的 DNS 是什么?

您或许想要检查 DNS 的第一个原因是,确认您需要对域名的区域文件进行更改的确切位置,或者换句话说,您需要对域名的配置进行更改,以使其指向新的或与之前不同的伺服器。

例如,假设您在新的代管服务上建立了一个新网站。您需要更新您的 DNS 区域以将其指向新的网站代管伺服器。或者,如果您要变更您的电子邮件供应商,您还需要更新您的域名区域以将您的域名指向新的电子邮件伺服器。

因为,正如我们上面解释的那样,名称伺服器是储存关于域名的 DNS 查询的答案的地方,也就是说,分配给您的域名的名称伺服器将告诉您需要在哪裡进行此更新。

我要在哪裡更新我的 DNS?

不过,您可能想检查 DNS 的另一端。也就是说,您可以检查您对 DNS 区域文件所做的变更是否可供所有人使用。

问题是,由于各种原因,您可能无法立即看到更新结果。作为对潜在问题进行故障排除的一部分,您可能需要检查您的 DNS,尤其是检查您所做的 DNS 更新是否可从不同的 DNS 解析器获得。

我的 DNS 是否有传播延迟的问题?

与此相关,您可能听说过一个称为 “传播延迟” 的概念,或者您可能听说过 “您最多必须等待 2 天才能使您对 DNS 所做的更改套用在网路上” 的说法。

好消息是,“传播延迟” 只是一个没有事实根据的理论。而坏消息是,它被用来解释一个确实存在的问题,但幸运的是,它是可以避免的。

什么是 DNS 传播延迟?

“传播” 是一个用来解释 DNS 机制的术语。就像您传播植物或传播讯息或想法时一样,DNS 更新被称为从更改点向外 “传播” 到网路中的其它部分。根据 DNS 传播的理论,新的 DNS 记录需要一定的时间才能到达网路中的每个角落,因此您可能不会立即看到变化。

真正会发生的是,正如我们上面所描述的,给定的 DNS 解析器要么已经查询到特定的域名,要么没有。如果它查询了一个给定的域名,它要么将 DNS 答案储存在其缓存中,要么没有。

所以,如果某个特定的 DNS 解析器之前曾查询过一个域名,并将答案储存在其缓存中,那么即使您对 DNS 区域文件进行了更新,它仍可能会提供旧的答案。但重要的是要知道,所有 DNS 缓存迟早都会过期,因此只有在缓存尚未过期时,DNS 解析器才会提供旧记录。

如果您正要更新网站的 DNS 记录,但在进行此 DNS 更新之前,您曾在网站浏览器上访问过旧网站,则此延迟就更有可能对您产生影响。

因为您的本地 DNS 解析器的缓存中已经存有旧记录,并且该缓存尚未过期,所以您仍会看到旧网站。但是,如果有人使用从未查询过您的域名区域的 DNS 解析器访问您的网站,他们将会获得新网站作为其查询结果。

记录在缓存中保留的时间长度取决于各个 DNS 解析器的策略,但是,您有一种方法可以指定解析器应在缓存中保留您的 DNS 记录的时间长度。即为我们说的生存时间,或 Time To Live,简称 TTL。其通常以秒为单位,标准生存时间(TTL)通常是 10800 秒,用于常规资源记录的时间为 3 小时,最多 172800 秒或 48 小时,而用于 NS 记录(用于指出您域名的名称伺服器)。由于这些生存时间(TTL)是相对标准的,因此,等待 3 到 48 小时让 DNS 更新 “传播” 成为一种 “常识”,因而有 “DNS 传播延迟” 的迷思。

补充:给定 DNS 记录的生存时间(TTL)不能在您进行 DNS 更新的同时缩短时间,以避免这种延迟。只要原始的生存时间(TTL)有指示,旧有记录就会保留在缓存中。因此,如果您想快速进行更新,就需要先更新旧有记录上的生存时间(TTL)。

我该如何检查我的 DNS?

您可以透过多种方法检查您的 DNS,具体取决于您要检查的 DNS 的些内容,以及您可以使用哪些工具或您喜欢哪些工具。

如何在我的域名註册商的介面中检查我的 DNS?

检查您的名称伺服器

相对容易地,您应该能够透过域名註册商检查您的域名伺服器。事实上,更新和管理域名伺服器是您可以在任何域名註册商的服务中执行的一项基本功能,因此通常您可以很容易地在域名註册商的介面中找到它。

在 Gandi 的介面中,您可以从管理介面中进入 “域名” 管理页面,然后点选 “名称伺服器” 进行确认。

如何在 Gandi 更新您的名称伺服器

检查您的 DNS 纪录

若要查看近期您的 DNS 区域的更新,您可以在您进行变更的同一位置进行检查。如果您使用的是第三方 DNS 供应商,您将无法在您的域名註册商的介面中进行检查您的 DNS,而是必须至您的 DNS 供应商的介面中检查。

如果您使用的是您的域名註册商的 DNS 名称伺服器,您就可以在您的域名註册商的 DNS 介面中检查您的纪录。

如何在 Gandi 检查您的 DNS 纪录

如果您在浏览您的网站时没有看到这些更新的记录,请务必注意生存时间(TTL)的设定。这可以让您了解,网站的相关问题是否与仍储存在缓存中的旧记录有关。

如何在网站上确认我的 DNS?

DNS 查询工具

在您在网路上寻找用于检查网站 DNS 的选项时,区分 DNS 的两个面向很重要:1. 保存有关域名的 DNS 区域讯息的名称服务器,以及 2. “解析”方面,查询并储存 DNS 记录以供使用。

如果您只是在搜寻引擎中查询 “什么是 DNS?”,您可能会找到错误的资讯,因此,这取决于您在寻找的内容。

您可以使用 DNSchecker.org 这样的网站工具。如果您提供要查找的域名,该网站会允许您搜寻名称伺服器或任何类型的记录。

透过寻找 “DNS 查询” 工具,您可能会更幸运地找到这些您在搜寻的服务。虽然它使用 “传播” 这个术语来描述此工具,但 whatsmydns.net 提供了一个有用的工具,让您可以对照来自世界各地不同的网路服务供应商的多个 DNS 伺服器以检查您的 DNS 记录。

您只需输入您的域名,并指明您要查看的记录类型即可。您将看到一张世界地图,其中会显示位于世界各地的哪些域名伺服器拥有您的最新记录。

WHOIS

另一种专门查询用于域名的名称伺服器的方法是使用 Whois 线上查询工具,例如 Gandi 的 whois 查询工具ICANN 的查询工具。ICANN,或网际网路名称与数字位址分配机构,是负责协调整个域名系统的组织,因此当有疑问时,它们可以成为值得信赖的第三方来源。

如何从终端(terminal)检查我的 DNS?

检查 DNS 的最后一个选项是在终端窗口或指令行。

您可以使用三个主要的 DNS 查询指令:

dig host nslookup

其中最详细和最通用的是 dig 功能。在使用 dig 功能时,如果您不只是想知道域名本身指向的位置(即网站的 IP 位址),您应该指定您想要的记录。例如,如果您想查看域名 example.com 用于电子邮件的记录,您可以输入:

dig mx example.com

因为 MX 记录是用于将域名连接到电子邮件服务的记录。意思是,如果您想要检查域名的名称伺服器,您需要在查询中添加 ‘ns’,如下所示:

dig ns example.com

但是,dig 提供的答案很长,有时看起来会令人害怕,因此,如果您只需要名称伺服器的列表,则可以这样做:

dig +short ns example.com

因此,透过 dig 功能,您实际上可以检查您正在使用的 DNS 解析器是否提供了特定的 DNS 记录,或者您可以检查您的域名使用的名称伺服器。

您可以使用 host 来完成 dig 本身所做的事情,并透过添加 ‘mx’来获得下方结果:

$ host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 0 .

这比 dig +short 所得的结果更具可读性。但是,您不能使用 host 来查找名称服务器(或 NS 记录)。 不过,您可以使用 nslookup

然而,nslookup 只会提供您 IP 位址,而非名称伺服器的名称。因此,dig ns 会是您最好的选择,而如果您想要最简洁的答案,那么就选择 dig +short ns

检查您的 DNS

了解如何检查您的域名的 DNS 对于能够管理您的域名和与之关联的服务至关重要。我们已经深入了解如何检查您域名的 DNS,但还有另一种我们没有介绍却可以用来检查您的 DNS 的方法:检查您的电脑用于访问网路的 DNS

为此,我们建议您检查您的电脑的 DNS 设置(取决于您的操作系统,这些设置在您电脑的网路设置中)。不然,您也可以使用线上工具或命令行进行检查。

DNS 是网路运行的核心系统,因此,知道如何准确了解您或您的域名在该系统中的位置是非常有价值。