dnsmasq:为不同的客户端自定义名称解析

dnsmasq:为不同的客户端自定义名称解析

我有一个网络,正在运行 dnsmasq 来执行 DHCP 和 DNS。我的网络有几个客户端,每个客户端都需要与主机通信(它们通过向 dnsmasq 发送 DNS 查询来实现master)。我现在想在同一个网络上运行多个主/客户端组,并且我希望能够轻松配置哪个客户端与哪个主服务器相关联。

是否可以配置 dnsmasq,使其对不同的客户端针对某个 DNS 查询给出不同的响应?例如,如果10.0.2.23查询 ,master我希望结果是10.0.3.1。但是,如果10.0.2.24查询 ,master我希望结果是10.0.3.2

我知道我可以通过master在每个客户端的/etc/hosts文件中创建一个条目来实现这一点,但如果这些信息都在一个配置文件中,我会很高兴(例如/etc/dnsmasq.d/masterclient.conf

答案1

TL;DR:显式优于隐式

您可能还希望确保在网络上运行的任何诊断程序也能揭示每对成员之间的连接。

如果 dnsmasq 同时执行 dns 和 dhcp,那么就很容易解决“每个客户端都知道他们的主服务器”问题,并且可以验证正确的设置 - 通过不让 dnsmasq 根据查询者做出不同的响应。

我建议您确保每个客户端都通过将其组作为其完全限定域名的一部分来专门请求其主机:

# make sure your dhcp clients use dnsmasq as dns & split them in groups
#  (you probably already do that baes on either mac or subnet)
dhcp-range=set:group1,10.0.2.0,10.0.2.23,255.255.255.0,4h
dhcp-range=set:group2,10.0.2.24,10.0.2.50,255.255.255.0,4h
dhcp-otion=option:dns-server,0.0.0.0

# based on tags, give them a dns search domain
dhcp-option=tag:group1,option:domain-search,pair1.local
dhcp-option=tag:group2,option:domain-search,pair2.local

# making the respective master address known to them
address=/master.pair1.local/10.0.3.1
address=/master.pair2.local/10.0.3.2

有多种方法可以根据不同的参数来决定哪个客户端属于哪个组;根据决定客户端应该属于哪个组(我的示例)的因素,划分该组dhcp-range可能是足够的,也可能是完全不合适的。

警告:只能根据 DHCP 租用时间将客户端重新配置到不同的组 - 这比 dns TTL 灵活性差。

相关内容