原文:How to find a domain’s authoritative nameservers
如果你更新了你的 DNS 解析但是没有生效,那么有两种可能:
- 你的域名服务器上没有正确的记录;
- 你的域名服务器上有正确的记录,但是旧的记录还在缓存里,你需要等旧的记录超时;
为了能够判断到底是那种情况(你是否需要修改 DNS 配置,或者再继续等等),你需要找到你主机的域名服务器,并且看到上面的记录。
简单但不准确的方法
如果你确信自己最近没有更新 DNS 服务,最简单的方法就是通过执行 dig +short ns DOMAIN
命令查找。
1 |
|
在这种情况下,我们得到了正确的答案。
但是如果你最近更新了你的 DNS 服务,它可能会给你一个不准确的答案。
第一步:查找根域名服务器
在这里我们以查找 rickylss.site
域名服务器为例。
无论我们查找的是什么域名,我们都需要从根域名服务器开始。h.root-servers.net
是 13 个根域名服务器之一,因此 dig @h.root-servers.net
意味着将查询请求发送给 h.root-servers.net
。
1 |
|
我们要的正确答案就在 “AUTHORITY SECTION“ 里:
1 |
|
“AUTHORITY SECTION“ 下的任意一行都行,这里我们直接选第一行;
接下来我们用 a.nic.site
来做第二步:
第二步:查询 .site 域名服务器
同第一步相似,我们查询第一步中找到的 .site 域名服务器
1 |
|
和上次一样,找到 ”AUTHORITY SECTION“ :
1 |
|
成功了!?
现在我们成功找到了 rickylss.site
的域名服务器,和简单但不准确的方法中获取的结果一样。现在我们可以查询 dns14.hichina.com.
直接查找 rickylss.site
的 DNS 记录。
1 |
|
在这里我们再次看到了 ”AUTHORITY SECTION“ ,和前面不一样的是,我们这里出现的是个 SOA 记录。这意味着在这个域名服务器里没有找到 rickylss.site
的记录。换成 www.rickylss.site
进行尝试:
1 |
|
成功找到 ”ANSWER SECTION“ ,对应地址为 49.235.89.141
。
DNS 查询背后发生了什么
我喜欢使用这种方式查找主机的域名服务记录的原因是它模仿了 DNS 查询的步骤。当谷歌的 DNS 解析服务器 8.8.8.8
查询 www.rickylss.site
域名的时候,服务器会首先获取到 dns14.hichina.com.
。
由于这种方法使用了和真实 DNS 查询相同的信息源,因此你每次都能获取正确的结果。
每次我更新我的 DNS 解析服务之后,通常都不会立马更新。因此我会重复上面的步骤,检查一下我的 DNS 记录是否更新了。
其他的方法
除了上面提到的方法,还有其他更简便的方法,但是我不推荐将他们当作主要的方法来使用。
dig +trace DOMAIN
这种方法和上面提到的方法本质相同,因此每次都能拿到正确的结果,但是它的输出让人困惑,所以我不推荐用这种方法。
dig ns DOMAIN
这种方法通常能够拿到正确的结果,但是有两种情况会导致出错:
- 你可能会拿到一个旧的被缓存过的记录;
- 你得到的 NS 记录和我们在这篇文章中描述的方法不是来自同一个地方。举例来说,这个时候我们拿到的 NS 记录不是来自
a.nic.site
而是来自dns14.hichina.com.
通常来说这没什么区别,但是在某些奇怪的情况下就大有不同。
dig soa DOMAIN
你同样可以在 SOA 记录中找到对应的域名服务器
1 |
|
通常这也是没有问题的,但是有两种特殊情况,这个和 dig ns DOMAIN 中提到的情况相似:
- 这个返回来自于权威域名服务器。因此,如果你正在更新你的域名解析服务,你可能拿到错误的结果,因为你的 DNS 解析服务器请求了旧的域名服务器;
- 因为某种原因,你的权威名称服务器可能会返回一个没有正确的名称服务器的 SOA 记录,
whois DOMAIN
通常会返回正确的结果,但是也可能会是旧的缓存的结果;