如何测试 DNS 信息是否已传播?

And*_*rew 17 domain-name-system

我为我的一个子域设置了一个新的 DNS 条目(我还没有设置任何 Apache 虚拟主机或类似的东西)。如何检查 DNS 信息是否已传播?

我假设我可以简单地ping my.subdomain.com假设如果它可以解析,它将显示我在 A 记录中指定的 IP 地址。但是,我不知道我的假设是否正确。检查此信息的最佳方法是什么?

ase*_*seq 16

您可以使用 dig 或 nslookup,假设您的(或您的提供商,如果您不运行自己的)名称服务器是 ns1.example.com。

使用 nslookup:

nslookup - ns1.example.com
Run Code Online (Sandbox Code Playgroud)

在提示输入:

my.example.com
Run Code Online (Sandbox Code Playgroud)

如果它解决了您的预期,那么它就可以工作。它应该给你类似的东西:

Name:   example.com
Address: 192.0.43.10
Run Code Online (Sandbox Code Playgroud)

传播到互联网的其他部分可能还需要一段时间,这是您无法控制的。

使用挖掘:

dig@ns1.example.com my.example.com
Run Code Online (Sandbox Code Playgroud)

你应该看到类似的东西:

;; ANSWER SECTION:
example.com.        172800  IN  A   192.0.43.10
Run Code Online (Sandbox Code Playgroud)

仅使用 ping 可能会给您一个想法,但只有当它传播时(由远程名称服务器缓存可能是更好的描述方式)并且您的本地 dns 缓存可能需要刷新。尽管在您的情况下这不适用,因为这是一个新记录。在这种情况下,它应该立即可用。上面的方法更准确地给你一个想法,而不是仅仅 ping 它。

如果您使用 Windows,则命令和语法可能略有不同,但非常相似。

  • +1 如果您正在使用 DNS 进行任何操作,请获取一份 `dig` 的副本(*nix 系统已经拥有它,Windows 有各种可用版本)。 (3认同)
  • -1. 抱歉。我真的是,但这个答案“传播”了 DNS 记录传播的神话,他们肯定不会。您正在寻找的术语是“缓存”,这是基于记录的 TTL 的 DNS 记录发生的情况。由于 OP 指的是新的 DNS 记录,因此不会发生缓存,因此任何寻求解析相关记录的 DNS 客户端都会得到答案......立即......因为它不能被该客户端缓存... 或客户端 DNS 服务器 ... 或任何其他 DNS 服务器。DNS 记录不会传播到“互联网的其余部分”。 (3认同)
  • 我不认为你真的必须坚持确切的定义来表达观点。此外,我认为传播并不是一个不好用的词。从 DNS 记录的缓存确实扩展到更广泛的服务器的意义上讲,它确实涵盖了这个主题。这种传播就是传播所指的。我更新了我的答案以反映新记录立即可用的事实。 (2认同)

joe*_*rty 7

您无法测试 DNS 记录传播,因为不会发生 DNS 传播。您可以测试的是 DNS 客户端或服务器是否缓存了特定的 DNS 记录。

由于这是一个新的 DNS 记录,因此不会发生缓存。假设您的名称服务器已在父服务器上正确注册并且您的名称服务器正常工作,则此 DNS 记录应该立即可供任何和每个 DNS 客户端或服务器使用。


Jim*_*m B 5

虽然其他答案都很好,但请记住,传播给您的内容可能不会传播给我。我通常使用http://www.whatsmydns.net/来查看传播情况,而不是使用 DIG 或 NSlookup 并花一个小时检查世界各地的 DNS 服务器。