备用 DNS 服务器无法解析

备用 DNS 服务器无法解析

我在 Linux 中配置了 DNS 服务器作为转发器。
它仅将 DNS 查询转发到组织的主 DNS 服务器。

在 Windows 客户端(在组织的分支机构中)中,主 DNS 设置为自己的 DNS 服务器,
备用 DNS 服务器设置为我的(转发器 DNS)。

如果我的 DNS 服务器设置为备用,则无法解析。
但是当我的 DNS 服务器设置为主时,解析就可以了。

当设置为备用 DNS 时,如何使我的 DNS 服务器正常工作?

答案1

基本的 DNS 解析器(如 Windows 客户端中的解析器)假设:为其配置的每个 DNS 服务器都知道或可以找到需要知道的一切,如果一台服务器说某些内容不存在,则向另一台服务器询问第二意见是没有意义的。

DNS 服务器在获取信息的来源方面可以具有更大的灵活性。许多 DNS 服务器可以配置为有选择地转发请求:“如果请求是关于域的X.Y.example,则将请求转发到服务器 A,如果是关于任何其他域的请求Y.example,则转发到服务器 B,否则尝试通过询问互联网的 DNS 服务器来自行解决” ”。

但这不是设置 DNS 解析的正常方法。


如果主 DNS 服务器中的信息是关于域的Y.example,并且您的 DNS 服务器有关于子域的信息X.Y.example,那么主 DNS 服务器应该有所谓的胶水记录在其有关域的信息中Y.example。就像是:

X.Y.example.            IN NS <your.DNS.server.name.>

如果您的 DNS 服务器位于域内Y.example(即域X.Y.example或域Y.example或其任何其他子域的一部分),还:

<your.DNS.server.name.> IN A <your DNS server IP address>

NS 记录将告诉主 DNS 服务器联系您的 DNS 服务器以获取有关X.Y.example域的任何信息。这被称为DNS 委托。 A 记录只是提供要连接的地址:a胶水记录


如果您的名称服务器中的信息与不相关的域有关,例如Z.other.example,则有以下三个选项:

  • 主域名服务器可能与您的 DNS 服务器有特殊关系,以便它可以下载Z.other.example域内容的完整副本,并通过定期检查您的 DNS 服务器来自动保持最新状态。这通常称为master/slave关系:您的服务器将是 的主权威机构Z.other.example,但主 DNS 服务器将完全了解该域的内容,并且能够根据下载的数据做出权威答复。

使用 BIND,这意味着您的服务器将具有如下内容:

options {
    allow-transfer { <IP address of primary DNS server>; };
    # The next line is not absolutely necessary but speeds up propagation of updates:
    also-notify { <IP address of primary DNS server>; }; 
    <... any other options here...>
}; 

主服务器将具有:

zone "Z.other.example" { 
    type slave; 
    masters { <IP address of your DNS server>; };
};

是的,这意味着该组织的基本的DNS 服务器将是从属服务器Z.other.example仅适用于域。对于其他域/区域,这不会产生任何影响。

通常这种关系意味着主 DNS 服务器也可以列在该Z.other.example域的 NS 记录中,但是你不必那么做如果该域仅供主 DNS 服务器的用户内部使用。

  • 或者主 DNS 服务器可能被配置为有条件地转发查询:“如果请求是关于 Z.other.example,则将其转发到您的 DNS 服务器而不是执行任何其他操作”。有时,这是通过组织的内部 DNS 域来完成的,这些域的存在不应在任何公共 NS 记录中透露。

为此,主服务器需要:

zone "Z.other.example" { 
    type forward;
    forwarders { <IP of your DNS server>; };
    forward only;
}; 
  • 或者,如果没有特殊配置,则 DNS 服务器必须存在 NS 记录链才能找到您的Z.other.example域:
    • 根DNS服务器必须有NS记录(以及相应的A记录),指出example顶级域的DNS服务器
    • example服务器必须有指向other.example二级域的DNS服务器的NS记录
    • 并且该域的 DNS 服务器other.example必须有指向您负责 的 DNS 服务器的 NS 记录Z.other.example

这样,主 DNS 服务器就能够找到您的域,就像互联网上的任何其他域一样。


如果您尝试让您的 DNS 服务器仅向Y.example域提供一些附加记录,那是行不通的。

如果 DNS 服务器对特定域(不包括委托的子域,如果有)具有权威性,那么它必须始终完全了解该域的内容;对于处于权威地位的 DNS 服务器来说,不存在“可能”这样的事情。如果主 DNS 服务器是该机构的权威机构Y.example,并且在查询时X.Y.example没有该记录且没有匹配的子域委托,则其“没有此类主机/域”响应将是人类术语:

“我知道关于 Y.example 的一切,而且绝对不存在 XYexample 这样的东西。”


从技术上讲,也许可以让主服务器拒绝对您的域的查询,以便客户端会询问备用 DNS 服务器,但是我强烈建议反对

此类设置一开始可能看起来有效,但往往会以意想不到的方式失败,特别是当其中一个或另一个名称服务器暂时无法访问时。许多人尝试过这样的设置,但都失败了。学习经历往往涉及一次痛苦的故障排除过程。不是您的选择和/或更有经验的 DNS 管理员会提醒您帮助解决问题。

相关内容