当我运行 DNS 查询时,我能看到会发生什么吗?

网络工程 域名解析
2021-07-08 05:36:26

我的理解是,当我的计算机要解析主机名时,它会首先询问 DHCP 分配的 DNS 服务器。如果那些人不知道,它会询问“根服务器”,然后他们会服从另一台服务器等。

使用 dig 或类似工具,是否有可能以类似于 traceroute 显示数据包如何传输到某个目的地的方式查看被询问的服务器字符串!

4个回答

正如其他人已经回答的那样,大多数情况下,主机向指定的解析器发送递归查询,通常是本地服务器或路由器,通常属于 ISP 或 Google 的知名(分布式)8.8.8.88.8.4.4. 通常它会定义一对,如果第一个没有响应,它会在超时后移动到下一个。

名称解析器可以自由使用他们喜欢的任何算法,包括只要求NS记录(for com.stackexchange.com.从顶部开始)然后是A记录。还有缓存,在响应的生存时间参数内。

要了解特定名称解析器的作用,您需要监视数据包或访问服务器。

但是,如果您试图遵循一个链,您当然可以手动执行此操作,例如调试损坏的委派、丢失粘合记录等。

要解决的A记录www.stackexchange.com

从列表中找到一个根区域服务器,每个解析器都会安装它:http : //www.internic.net/domain/named.root

我们选择第一个, 198.4.10.4

问问谁:

nslookup -norecurse -query=ns www.stackexchange.com 198.41.0.4

根服务器说“别问我,问com问题e.gtld-servers.net”,并提供了有用的地址:

Authoritative answers can be found from:
com nameserver = e.gtld-servers.net.
e.gtld-servers.net  internet address = 192.12.94.30
(other answers trimmed)

问问e.gtld-servers.net谁:

nslookup -norecurse -query=ns www.stackexchange.com 192.12.94.30

他说“别问我,问stackexchange.com问题ns-925”,并很有帮助地给出了地址。

Non-authoritative answer:
*** Can't find www.stackexchange.com: No answer
Authoritative answers can be found from:
stackexchange.com   nameserver = ns-925.awsdns-51.net.
ns-925.awsdns-51.net    internet address = 205.251.195.157
...

我们看到这ns-925是我们所追求的域的名称服务器 ( stackexchange.com) 所以我们要求A记录:

nslookup -norecurse -query=a www.stackexchange.com 205.251.195.157

他说给出了CNAME回应:

www.stackexchange.com   canonical name = stackexchange.com.

但由于它也是一个名称服务器,它(有帮助地)给了我们A记录的CNAME记录:

Name:   stackexchange.com
Address: 151.101.129.69

普通的 DNS 客户端只查询(DHCP 或静态)分配的 DNS 服务器。通常只有 DNS 服务器查询根服务器,执行递归查询

您可以使用您选择的数据包捕获并过滤 UDP (TCP) 源或目标端口 53,以查看与任何 DNS 服务器的通信。

DNS 客户端使用的服务器和确切方法取决于操作系统或应用程序,并且此处无关紧要。

我认为您正在寻找 dig +trace。以下命令

dig +trace networkengineering.stackexchange.com 

将查询根名称服务器 (NS) 以获取 .com 的 NS,然后查询 .com NS 获取 stackexchange 的 NS,最后将获得网络工程的答案。

是的 !当计算机 A 解析域名时。首先,递归 dns 请求将从 computerA 发起到 computerA 上配置的本地 dns 服务器。如果本地 DNS 缓存没有记录,它会将请求转发到 ISP 提供的名称服务器,从名称服务器请求转发到根服务器,从根服务器请求转发到顶级域服务器,从顶级域服务器请求转发到权威 dns服务器

流动 ...

本地 DNS ===> ISP 名称服务器 ===> 根服务器 ===> 顶级域服务器 (TLD)==> 权威 DNS 服务器