我知道 DNS 转发器缓存是根据权威名称服务器的响应构建的。但它是否根据其请求过程构建缓存?让我解释一下我的意思。
假设我有以下内容:
- 主机A
- 本地名称服务器 LOCAL (包括 A)
- 转发器 FRWD (LOCAL 转发至 FRWD)
- 名称服务器 INTR,位于 LOCAL 和 FRWD 之间。
- 根域名服务器 ROOT
- 外部名称服务器 EXTR
- 外部主机 B(EXTR 的一部分)
如果 A 查询 B.EXTR,LOCAL 会将请求转发给 FRWD。然后 FRWD 执行 DNS 步骤并使用来自 EXTR 的响应构建缓存。
但是,如果另一个外部名称服务器 EXTR420 向 FRWD 发出请求以解析 A.LOCAL。FRWD 的响应是什么?是 LOCAL 还是 INTR?
答案1
您搞错了 DNS 解析器和 DNS 权威服务器。它们并不相同。
每个域名都属于某个 DNS 区域。每个区域都有自己的 DNS 权威服务器(如果区域很大,则有多个服务器)。权威服务器知道其区域中子域名的地址。DNS 请求通过 DNS 区域服务器链传递。例如,对“some.domain.com”的请求将首先发送到根服务器,该服务器将返回 .com DNS 区域的权威服务器的地址。然后 .com 区域权威服务器将返回 .domain.com 的权威服务器的地址。然后 .domain.com 的服务器将返回 some.domain.com 的最终 IP 地址。
所以,如果 LOCAL 是 A 所在域的权威服务器,那么它就会存储 A 的最终 IP 地址,上级域的权威服务器就会参考它来解析 A 的地址。
如果客户端请求域名,它会将请求发送到其配置中设置的 DNS 服务器(通常是 ISP DNS 解析器)。解析器是一种可以缓存 DNS 记录并返回缓存的 IP 地址(其响应被标记为非权威)的服务器,以避免冗长的权威请求链。如果解析器没有请求域的缓存,它会向权威服务器执行请求。缓存中的记录存储 TTL 秒,然后必须重新请求它们。但是,如果客户端愿意,可以直接向权威服务器请求响应,并从根开始传递整个长长的权威服务器链。
事实上,整个情况要复杂和详细得多,但原理上是这样的。