在对 bgsu.edu 执行 nslookup 时运行网络捕获时,我注意到我的 DNS 服务器未查询 bgsu.edu 的 SOA 记录。以下是我在捕获中看到的操作顺序:
我的 DNS 服务器向 bgsu.edu 的其中一个根提示服务器发出 A 记录查询。
根提示服务器返回 gTLD 服务器的 NS 记录列表。
我的 DNS 服务器向 bgsu.edu 的其中一个 gTLD 服务器发出 A 记录查询。
gTLD 服务器返回 bgsu.edu 的 NS 记录列表。
我的 DNS 服务器向步骤 4 中返回的 bgsu.edu 的名称服务器之一发出 A 记录查询。
相关域名的名称服务器返回 bgsu.edu 的 A 记录信息。
所以我的问题是:我的 DNS 服务器是否不需要先查询相关域的 SOA 记录?如果不是,那么 SOA 记录究竟是如何使用的?哪些名称服务器会查询 SOA 记录?gTLD 服务器会查询 SOA 记录吗?因此,我在捕获中看不到这一点?我的理解是 SOA 包含 NS 记录的列表,所以 SOA 不应该是第一个查询的记录吗?
答案1
NS 服务器不是 SOA 记录的一部分。SOA 记录和我引用的RFC 1035(3.3.13):
大多数字段仅与名称服务器维护操作有关。
SOA 记录中的字段包括:
MNAME 作为此区域数据的原始或主要来源的名称服务器。
RNAME A 指定负责该区域的人员的邮箱。
SERIAL 区域原始副本的无符号 32 位版本号。区域传输保留此值。此值会回绕,应使用序列空间算法进行比较。
REFRESH 区域需要刷新前的 32 位时间间隔。
重试 重试失败刷新之前应经过的 32 位时间间隔。
EXPIRE 一个 32 位时间值,指定区域不再具有权威性之前可以经过的时间间隔的上限。
MINIMUM 应与任何 RR 一起从此区域导出的无符号 32 位最小 TTL 字段。
除此以外,发生的事情是这样的:
- 您的 DNS 服务器没有缓存 bgsu.edu 的条目,并且不具有权威性,因此它需要询问根提示服务器去哪里寻找正确的 DNS 服务器
- gTLD 具有 GLUE 记录,它只是域名的名称服务器,这是您实际要查询您尝试连接的主机的服务器。
- 您获得 bgsu.edu 的名称服务器
- 您对感兴趣的主机执行 DNS 查询
- 您将获得最初寻找的 DNS 记录。
答案2
该SOA
记录仅用于:
- 辅助服务器检查序列号,看是否需要传输新副本(
AXFR
)或增量更改(IXFR
) - 如果主服务器消失,辅助服务器决定何时停止为区域提供服务
- 告诉递归服务器缓存否定答案的时间(该
MINIMUM
字段不再意味着“最小 TTL”)。 - 动态更新客户端,找到主服务器
普通的递归解析器永远不会明确要求记录SOA
,但更常见的情况是,它会随权威服务器的响应部分一起出现AUTHORITY
。即便如此,它大多只用于上述第 3 点。
普通 DNS 客户端根本不需要 SOA。
答案3
SOA 记录用于传输(主服务器到从服务器/存根服务器)。主服务器有指向它的 SOA 记录。主
服务器还将有一个 NS 记录,表明它拥有该区域的权威副本。
从服务器也将有一个权威副本(并且通常有 NS 记录,因为这些记录是由更高级别的服务器在递归查询中返回的,但不一定)。