如何使用 nslookup 查找 Web 服务器的 IP

如何使用 nslookup 查找 Web 服务器的 IP

这仅用于教育目的。我目前正在学习 DNS,我读过的所有资料都大致如此:

假设根本没有缓存命中,当被要求解析域名时,DNS 解析器将首先联系根名称服务器,根名称服务器将指向 TLD 名称服务器,该服务器将指向对其正在寻找的域名具有权威性的名称服务器。

现在,在我家里的笔记本电脑中,我的操作系统已预先配置为使用某些 DNS 服务器,我猜该服务器属于我的 ISP,当我使用 nslookup 查询某些内容时,我会立即得到响应。

我正在尝试使用 nslookup 模仿 DNS 解析器的行为。我该怎么做?

好的,我知道根名称服务器的域名(以及 IP 地址)。我该如何继续?

我的猜测是,DNS 解析器在联系根服务器时会要求提供记录A,但是当我尝试执行相同的查询时,我得到:

> www.google.com e.root-servers.net
Server:  e.root-servers.net
Addresses:  2001:500:a8::e
          192.203.230.10

*** e.root-servers.net can't find www.google.com: No response from server

答案1

我不确定 nslookup 是否适合这个工作。“dig”可能更好。事实上,你可以用一个简单的命令来查看权威查找的整个工作过程以及 dig 的所有步骤 -

 dig +trace www.google.com

如果你必须使用 nslookup,我们可以这样做 -

  dig

返回 TLD 服务器的名称,即 [am].root-servers.net。(如果您不想使用 dig 或不知道这些而需要从第一原理进行操作,则这些会被硬编码到递归 DNS 服务器中,因此您需要查看它们的配置或找到可信赖的来源)

然后我们可以查询该服务器并请求 .com ns 记录,如下所示 -

 nslookup -type=ns com. a.root-servers.net

(我认为你可以省略 com. 后面的 . - 结尾部分表示这是一个绝对查询,而不是相对查询)。这将返回 .com 名称服务器的列表 -

;; Truncated, retrying in TCP mode.
Server:     a.root-servers.net
Address:    198.41.0.4#53

Non-authoritative answer:
*** Can't find com: No answer

Authoritative answers can be found from:
com nameserver = e.gtld-servers.net.
com nameserver = b.gtld-servers.net.
com nameserver = j.gtld-servers.net.
com nameserver = m.gtld-servers.net.
com nameserver = i.gtld-servers.net.
com nameserver = f.gtld-servers.net.
com nameserver = a.gtld-servers.net.
com nameserver = g.gtld-servers.net.
com nameserver = h.gtld-servers.net.
com nameserver = l.gtld-servers.net.
com nameserver = k.gtld-servers.net.
com nameserver = c.gtld-servers.net.
com nameserver = d.gtld-servers.net.
e.gtld-servers.net  internet address = 192.12.94.30
e.gtld-servers.net  has AAAA address 2001:502:1ca1::30
b.gtld-servers.net  internet address = 192.33.14.30
b.gtld-servers.net  has AAAA address 2001:503:231d::2:30
j.gtld-servers.net  internet address = 192.48.79.30
j.gtld-servers.net  has AAAA address 2001:502:7094::30
m.gtld-servers.net  internet address = 192.55.83.30
m.gtld-servers.net  has AAAA address 2001:501:b1f9::30
i.gtld-servers.net  internet address = 192.43.172.30
i.gtld-servers.net  has AAAA address 2001:503:39c1::30
f.gtld-servers.net  internet address = 192.35.51.30
f.gtld-servers.net  has AAAA address 2001:503:d414::30
a.gtld-servers.net  internet address = 192.5.6.30
a.gtld-servers.net  has AAAA address 2001:503:a83e::2:30
g.gtld-servers.net  internet address = 192.42.93.30
g.gtld-servers.net  has AAAA address 2001:503:eea3::30
h.gtld-servers.net  internet address = 192.54.112.30
h.gtld-servers.net  has AAAA address 2001:502:8cc::30
l.gtld-servers.net  internet address = 192.41.162.30
l.gtld-servers.net  has AAAA address 2001:500:d937::30
k.gtld-servers.net  internet address = 192.52.178.30
k.gtld-servers.net  has AAAA address 2001:503:d2d::30
c.gtld-servers.net  internet address = 192.26.92.30
c.gtld-servers.net  has AAAA address 2001:503:83eb::30
d.gtld-servers.net  internet address = 192.31.80.30
d.gtld-servers.net  has AAAA address 2001:500:856e::30

我们现在可以从其中一个“com”顶级域名服务器重复相同的请求来获取 googls 服务器 -

 nslookup -type=ns google.com. a.gtld-servers.net

返回

Server:     a.gtld-servers.net
Address:    192.5.6.30#53

Non-authoritative answer:
*** Can't find google.com.: No answer

Authoritative answers can be found from:
google.com  nameserver = ns2.google.com.
google.com  nameserver = ns1.google.com.
google.com  nameserver = ns3.google.com.
google.com  nameserver = ns4.google.com.
ns2.google.com  has AAAA address 2001:4860:4802:34::a
ns2.google.com  internet address = 216.239.34.10
ns1.google.com  has AAAA address 2001:4860:4802:32::a
ns1.google.com  internet address = 216.239.32.10
ns3.google.com  has AAAA address 2001:4860:4802:36::a
ns3.google.com  internet address = 216.239.36.10
ns4.google.com  has AAAA address 2001:4860:4802:38::a
ns4.google.com  internet address = 216.239.38.10

该记录很有趣,因为它指定了 nsX.google.com 的 IP 地址(这称为粘合记录,在这种情况下被编码到 .com 名称服务器中,因为否则会出现一个问题,即您需要 nsX.google.com 才能找到 google.com,但首先您需要找到 google.com 才能到达 nsX.google.com...)

最后,我们可以查询 Google 的一个名称服务器并获取其地址:

  nslookup  www.google.com. 216.239.32.10

我们的答案:

Server:     216.239.32.10
Address:    216.239.32.10#53

Name:   www.google.com
Address: 142.250.66.228
Name:   www.google.com
Address: 2404:6800:4006:810::2004

答案2

如果您要查询根服务器,则应查找。然后,您针对返回的 IP 地址之一com发出另一个查找。然后,您最终可以从最终列表中查找服务器。google.comwww.google.com

您正在做的是要求根服务器递归搜索www.google.com,这是他们没有设置的,他们只会返回顶级域名。

相关内容