如何根据源IP或MAC使用不同的DNS转发器?

如何根据源IP或MAC使用不同的DNS转发器?

如何在 Linux 系统上配置 BIND 以根据请求主机的源 IP 和/或 MAC 将 DNS 查询转发到不同的上游转发器?

例如,我可能希望将 DNS 查询从网络上的某些主机发送到 OpenDNS,将其他主机发送到 Google,将所有其他主机发送到我的 ISP。

答案1

解决方案是绑定“视图”。您可以根据源或目标 IP 进行过滤,并将请求路由到视图。您可以提供完全不同的 DNS 区域、转发器和其他处理选项。

https://kb.isc.org/article/AA-00851/0/Understanding-views-in-BIND-9-by-example.html

答案2

我有相同的用例,我按如下方式执行(虽然有点复杂,但效果很好)。

  • 路由器通过 DoT 客户端运行基于 TLS 的 DNS,转发到 nextdns.io。我通过这项服务屏蔽广告和其他东西。
  • 内部 linux 机器上有 2 个 dnsmasq 容器,绑定到同一机器上的不同内部 IP。它们将查询转发到路由器,并通过 TLS 转发到互联网。
  • 1 dnsmasq 执行成人 DNS + DHCP,第二个仅执行儿童 DNS。第一个根据请求客户端的 MAC 地址在 DHCP 响应上设置不同的 DNS 选项 - 我专门配置我的孩子设备以获取我的第二个受限制的 dnsmasq 容器的 DNS,成人则获取另一个。
  • 第二个 dnsmasq 容器仅提供一组受限制的儿童友好域,并为其余域返回 0.0.0.0。

顺便说一句,我还设置了一些 IP 表,强制通过路由器的所有请求都通过 TLS,以处理硬编码 8.8.8.8 或类似内容的不良客户端。

相关内容