DNSMASQ 为不同的子网提供不同的 dns 结果

问题描述

在我的网络基础设施中,我有多个子网用于隔离不同类型的设备。我希望能够根据请求子网为来自不同 DNS 服务器的不同 DNS 响应提供服务。例如,我想对一个子网使用 Google 的 DNS,但对另一个子网使用 CloudFlare 的反恶意软件 DNS。我还希望能够通过在不同子网上使用不同的“地址”声明来进一步锁定。

有些人完成第一部分的一种方法是使用“dhcp-option”声明为不同的子网提供不同的服务器地址,但这种方式违背了 DNSMASQ 的目的,并将其基本上变成了一个 DHCP 服务器和也无法使用防火墙来限制对端口 53 的访问以控制任何硬编码的 dns 服务器。

我看到的另一个选项是运行 2 个 DNSMASQ 实例,但这会创建一个高度自定义的设置,它不允许任何系统级配置文件或运行我想避免的脚本。

所以我希望有人可以为此提供解决方案。

提前致谢。

解决方法

想必您希望所有子网都使用 DNSMasq 来解析本地域名,但您希望子网使用不同的递归解析器进行 Internet 查询?

您应该能够通过 DHCP 设置来实现这一点(这样每个子网都会收到两个 DNS 条目——一个用于 DNSMasq,一个用于另一个解析器,例如 8.8.8.8)。这些条目将最终出现在每个设备的 /etc/resolv.conf 中,并将在设备需要解析 DNS 时按顺序尝试。如果 DNSMasq 设置为仅解析本地查询,则设备将被迫尝试使用第二个地址(例如 8.8.8.8)来解析 Internet 查询。