如何在 dnsmasq 中根据每个客户端设置正确的名称解析?

如何在 dnsmasq 中根据每个客户端设置正确的名称解析?

以下是故事内容:

在我的本地网络上,我使用带有 dnsmasq 的 Raspberry Pi 进行名称解析和 DHCP。我们家有两个大人和两个小孩,我正在考虑通过 OpenDNS 限制孩子们的互联网访问。

我有几乎让它正常工作,从开始这个问题本质上,我所做的就是用关键字(“孩子”)“标记”孩子的设备,并通过以下方式将备用 DNS 服务器(OpenDNS)与该标记关联起来:

# regular DNS for most devices
dhcp-option=option:dns-server,192.168.111.11,8.8.8.8,8.8.4.4

# restricted DNS for kids (two OpenDNS IP addresses, and my local DNS server)
dhcp-option=tag:kids,option:dns-server,208.67.222.222,208.67.220.220,192.168.1.11
# IP reservations for kids devices
XX:XX:XX:XX:XX:XX,set:kids,192.168.1.190
YY:YY:YY:YY:YY:YY,set:kids,192.168.1.191

这一方法有效:孩子们的设备访问 OpenDNS 服务器进行名称解析,从而阻止他们访问不适当的网站。

但问题是孩子们无法再访问我们本地网络上的主机。这意味着,例如,他们无法访问我们的本地 Minecraft 服务器或文件共享。我尝试过切换 DNS 服务器的顺序,并将我们的本地 DNS 服务器放在孩子们的顺序的第一位,但这会禁用 OpenDNS 服务器。

我试图想出一个解决方案,而我唯一想到的就是在另一台 Raspberry Pi 上设置第二个 DNS 服务器,但这意味着重复大量我不想跟踪的配置。

如何配置 DNSMasq,以便为两组不同的客户端使用不同的“外部”DNS 服务器正确解析本地地址?

答案1

恐怕这样的配置是不可能的,您需要运行第二个内部 DNS 才能控制使用哪个上游 DNS 服务器。不过,您可以在辅助服务器上设置条件转发器,这样就不需要配置两次了:

  1. 配置辅助 DNS 服务器以进行“限制访问”
  2. 为了便于说明,我们假设主 DNS 服务器上的内部区域为homedomain.local。在辅助 DNS 服务器上配置条件转发器,将所有请求转发homedomain.local到主 DNS 服务器。

这样,任何查询minecraftserver.homedomain.local都会被发送到您的内部 DNS 服务器,但任何其他域的查询都会被发送到 OpenDNS。

相关内容