我希望在我的网络中,主机通过和通过 来10.10.10.1
解析名称。它们通过DHCP 服务接收 DNS 设置。8.8.8.8
10.10.10.2
8.8.4.4
dnsmasq
我可以想到两种解决方案:
- 主机根据其 IP 地址获得一组特定的 DNS 服务器
- 两个主机都通过
dnsmasq
服务器进行解析(因此它们都将其 IP 地址作为 DNS 服务器接收)并dnsmasq
根据请求主机的源 IP 重定向请求。
这是在 dnsmasq 中可配置的东西吗?
我发现最接近的配置是server=/example.com/8.8.8.8
将8.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