我CNAME
在 dnsmasq 中设置如下
cname=ch1-lampe-bureau.swtk.info,switch-3
它被正确解析(switch-3
是一个通过 DHCP 从 dnsmasq 获取其 IP 的设备):
root@rpi1 ~# host switch-3
switch-3 has address 10.200.0.123
root@rpi1 ~# host ch1-lampe-bureau.swtk.info
ch1-lampe-bureau.swtk.info is an alias for switch-3.
switch-3 has address 10.200.0.123
然后我想通过添加以下代码来使 dnsmasq 对我的域具有权威性
auth-zone=swtk.info
auth-server=rpi1.swtk.info
auth-peer=192.168.0.13
区域转移方面,它是有效的:192.168.0.13
可以转移区域。
但s的解析却CNAME
停止了。我仍然可以解析A
记录(switch-3
例如上面的记录),CNAME
但不能。
root@rpi1 ~# host switch-3
switch-3 has address 10.200.0.123
root@rpi1 ~# host ch1-lampe-bureau.swtk.info
Host ch1-lampe-bureau.swtk.info not found: 3(NXDOMAIN)
dnsmasq 的权威性和它解析问题的能力有什么关系CNAME
?
注意:这是内部DNS,与swtk.info
外部注册的域名没有关系。
答案1
这种行为似乎非常dnsmasq
具体,从 DNS 的角度来看,如何遵循这一点并不明显。
在我看来,值得考虑设置一个“真正的”名称服务器(此时对 DNS 的普遍适用理解将变得相关),但这无疑会使设置不太集成。
我自己不是dnsmasq
用户,但在我看来,以下部分来自dnsmasq
手动的解释其在此场景中的行为和要求(重点添加):
当 dnsmasq 配置为权威服务器时,以下数据用于填充权威区域。
--mx-host、--srv-host、--dns-rr、--txt-record、--naptr-record、--caa-record,只要记录名称在权威域中。
--cname 只要记录名称在权威域中。如果 CNAME 的目标不合格,则它以权威区域名称为合格。以这种方式使用的 CNAME (仅)可以是通配符,例如
--cname=*.example.com,default.example.com 来自 /etc/hosts (和 --addn-hosts )以及 --host-record 和 --interface-name 的 IPv4 和 IPv6 地址,前提是该地址属于 --auth-zone 中指定的子网之一。
DHCP 租用的地址,前提是该地址属于 --auth-zone 中指定的子网之一。(如果使用构建的 DHCP 范围,这取决于动态分配给接口的地址,则应使用通过接口的动态地址定义子网的 --auth-zone 形式来确保满足此条件。)
在默认模式下,DHCP 租约具有非限定名称,并且可能具有使用 --domain 构造的限定名称,则权威区域中的名称由非限定名称和区域的域构造。这可能等于或不等于 --domain 指定的值。如果设置了 --dhcp-fqdn,则使用与 DHCP 租约关联的完全限定名称,并且必须与区域的域匹配。
即根据他们手册的上述部分,我的理解是您的cname=ch1-lampe-bureau.swtk.info,switch-3
意思ch1-lampe-bureau.swtk.info. CNAME switch-3.swtk.info.
。
此外,如果还指定了与其分配的 IP 地址匹配的子网,则从 DHCP 注册的名称似乎仅与身份验证区域内的名称一起添加auth-zone=...
。(按照--auth-zone=<domain>[,<subnet>[/<prefix length>][,<subnet>[/<prefix length>].....][,exclude:<subnet>[/<prefix length>]].....]
)
因此目前switch-3.swtk.info.
可能不存在,但如果您为区域指定适当的子网,则该名称应该出现,此时--cname
也应该开始工作。