同时连接多个 dnsmasq 服务器

同时连接多个 dnsmasq 服务器

我的网络中设置了两个 dnsmasq 服务器。我将 dns 服务器添加到我的网络配置中,但我一次只能连接其中一个。当我将这两个服务器添加到路由 ip[192.168.2.1] 中时,我只能连接添加到左侧的第一个 dnsmasq 服务器 - 在本例中为 192.168.2.150

DNS 配置

为什么会发生这种情况?我一直以为其中一个 DNS 服务器不工作了!

我还有另一个问题,每次我向 dnsmasq 服务器添加新主机名并重新启动服务器时,我都需要禁用并重新启用我的 ubuntu 18.04 的网络。

答案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。

(这些使用我上面提到的例子,请在这里正确使用您自己的域。)

相关内容