场景:有三个物理上独立的网络,没有防火墙或路由器将它们连接在一起。每个网络中都有 DNS 服务器,仅解析该网络中的主机。但所有网络都具有相同的域后缀。有些主机是多宿主的,每个网络都有一个接口,这些主机将来自所有三个网络的 DNS 服务器配置为解析器。
问题:每个网络都有一个接口的多宿主主机仅向其主 DNS 服务器发送 DNS 请求。当主 DNS 服务器应答时,它不会继续与下一个 DNS 服务器通信,即使应答是主机名未知。
问题:有没有办法让多宿主主机能够解析所有三个网络中的主机名?
答案1
根据 DNS 的设计,解析器配置中列出的所有名称服务器都假定具有相同的数据。多个名称服务器是为了冗余,而不是为了分割命名空间。因此,如果一个名称服务器回复某个主机名不存在,则该答案被视为权威答案,没有必要向另一个名称服务器征求第二意见。
您的场景可以通过以下两种方式之一解决:
要么为这三个网络创建单独的子域,然后仅将这些子域委托给各自网络中的名称服务器,同时将上级域复制到所有三个网络中的名称服务器。在我看来,这将是最干净的解决方案。
或者设置分割水平 DNS,所有名称服务器都包含所有三个网络的所有信息,并且单独的视图(如果使用 BIND)根据请求主机的 IP 地址仅分发一个网络的数据,再加上一个分发完整数据的多宿主主机视图。