如何使用 dnsmasq 有条件地重定向 DNS 查询?

如何使用 dnsmasq 有条件地重定向 DNS 查询?

我希望在我的网络中,主机通过和通过 来10.10.10.1解析名称。它们通过DHCP 服务接收 DNS 设置。8.8.8.810.10.10.28.8.4.4dnsmasq

我可以想到两种解决方案:

  • 主机根据其 IP 地址获得一组特定的 DNS 服务器
  • 两个主机都通过dnsmasq服务器进行解析(因此它们都将其 IP 地址作为 DNS 服务器接收)并dnsmasq根据请求主机的源 IP 重定向请求。

这是在 dnsmasq 中可配置的东西吗?

我发现最接近的配置是server=/example.com/8.8.8.88.8.8.8请求重定向到解析example.com。然而,在我的例子中,触发条件的是源,而不是目标。

答案1

也许您应该考虑使用 BIND 中的“视图”功能。我不确定您到底在做什么,但听起来您需要在 LAN 内部和 LAN 外部进行不同的 IP 解析。

BIND 允许您根据源 IP 以不同的结果响应查询。在此处阅读更多信息:https://kb.isc.org/article/AA-00851/0/Understanding-views-in-BIND-9-by-example.html

答案2

您可以通过为其中一个服务器分配一个类别来实现这一点。然后根据该类别发送不同的 DNS 服务器列表。下面的设置使用 mac 地址来设置标签,该标签用于指定不同的服务器列表。有多种条件可用于设置标签。

dhcp-mac=set:alt,00:03:aa:bb:cc:dd
dhcp-option=6,8.8.8.8,8.8.4.4
dhcp-option=alt:6,8.8.4.4,8.8.8.8

/etc/resolv.conf只需将一台服务器上的设置为适当的值就会更简单。

答案3

你可以在 dnsmasq 中使用 -p 选项来运行 dnsmasq 的多个实例并使用 iptables 进行重定向

像这样的事情:

# dnsmasq -p 1054
# dnsmasq -p 1055
# iptables -I INPUT --src NET1/M --dst YOURIP -p udp --dport 53 -j REDIRECT --to-ports 1054
# iptables -I INPUT --src NET2/M --dst YOURIP -p udp --dport 53 -j REDIRECT --to-ports 1055

相关内容