答案1
这里的核心问题是您的系统如何处理 DNS 请求,以及大多数系统默认如何处理。
当你在配置中定义 DNS 服务器时,它按定义的顺序进行 - 第 1、第 2、第 3 等。也就是说,这些是要从中请求数据的 DNS 服务器,以及请求数据的顺序如果其中一个服务器无法回复。
DNSMasq 服务器 A 只知道域“foo”,不知道域“bar”。它将响应“foo”和 Internet,但对“bar”返回 NXDOMAIN。但是,服务器仍然响应初始查询,因此它不会测试您的第二台或第三台服务器是否有与 NXDOMAIN(不存在的域,因为 DNS 数据包和查询将在内部存在)相关的任何记录,因为它已经收到了回复。
如果 DNSMasq 服务器 A 没有回复全部并且查询尝试超时,则系统将查询 DNSMasq 服务器 B(第二个顺序)。它将响应“bar”域,但尝试查询“foo”将返回 NXDOMAIN,如上所示。这里的情况相同,但它回应,因此它不会尝试使用第三个 DNS 服务器进行查询。
NXDOMAIN(不存在的主机/域)实际上是来自 DNS 服务器的“有效回复”。系统不会自动尝试查询 DNS 服务器 2 或 3,因为它已收到回复 - 尽管不是您想要的回复。
在这种情况下,您需要配置 dnsmasq 服务器,以便它们知道将不提供服务的域的请求转发到正确的服务器,以便获得有效的答复。这些在 BIND9 中称为“转发器”区域(我使用的是这个区域),并将这些区域中的域请求转发到正确的服务器以获得响应。
配置 dnsmasq 服务器 A 将其对域“bar”的请求转发到 B,并配置 dnsmasq 服务器 B 将其对域“foo”的请求转发到 A。
(这些使用我上面提到的例子,请在这里正确使用您自己的域。)