通配符子域名是否会获得 DNS 缓存?

通配符子域名是否会获得 DNS 缓存?

如果在 DNS 区域中添加通配符子域名条目,例如:

*.example.com. 3600 IN A <Some IP>

假设要缓存多少查询somerandomsubdomain.example.com?经过一番研究,我发现example.com将在各个点缓存,因此我的 DNS 服务器可以直接查询example.comDNS 服务器以获取后续查询anotherrandom.example.com

但是服务器/路由器/操作系统在缓存时是否也缓存*.example.com通配符条目,因此所有未来对其他随机子域的查询都会example.com立即得到解析?

答案1

通配符扩展仅发生在权威名称服务器上,因此通配符记录本身永远不会被缓存。(首先,您需要手头有所有常规记录才能知道通配符实际上适用于哪些名称。)

不过,通配符扩展所产生的各种记录都有望被缓存。

例如,如果进行了查询foo.example.com. IN A并且发现其与通配符匹配,*.example.com. 3600 IN A 192.0.2.1则结果答案foo.example.com. 3600 IN A 192.0.2.1可以(可能)被缓存。

答案2

如果服务器可以进行区域传输,则它们只能缓存通配符部分。只有当它们属于一个组织(或紧密合作的不同组织)时,它们才会这样做。

如果他们不使用区域传输,他们会进行正向查找(您的路由器肯定只会这样做)。在这种情况下,他们只会收到一条回复,该回复看起来与明确定义记录时完全一样,例如:

notdefined.example.com    60168    IN    A    <someip>

即使他们能得到这样的回报

*.example.com    60168    IN    A    <someip>

他们仍然必须查找 example.com 的所有其他记录,因为任何明确定义的记录都优先于通配符记录。即:

*.example.com.   3600 IN  A <Some IP>
www.example.com.   3600 IN  A <Some IP2>
ftp.example.com.   3600 IN  A <Some IP3>

是有效的。资料来源:RFC 4592RFC 1034

相关内容