我正在基于 Debian 11.0 的 docker 容器内运行 dnsmasq 2.90,作为 Pi-hole 5.18.2 的一部分。
我想配置 dnsmasq 来为多个本地域(.local 和 .subdomain.mydomain.com)提供本地主机名的地址,因为本地应用程序具有硬编码的 .local 域。我一次只能让它适用于一个域。
该容器正在为我的本地网络提供 DNS 和 DHCP 服务。作为 Pi 孔设置的一部分,addn-hosts=/etc/pihole/local.list
添加到.conf
安装在/etc/dnsmasq.d
.此列表包含来自本地和本地可访问子网的约 30 个 IP 地址和主机名的列表,例如:
192.168.1.10 server01
192.168.2.20 server02
100.115.x.x server03
dnsmasq 正在通过 DHCP 为本地搜索域提供服务,如在处安装的单独配置文件中指定的,domain=subdomain.mydomain.com
以及使用.dhcp-option=option:domain-search.subdomain.mydomain.com
/etc/dnsmasq.d
local=/subdomain.mydomain.com/
此搜索域以及 DNS 服务器的 IP 已被我的客户接受并按预期实施:
❯ cat /etc/resolv.conf
…
search subdomain.mydomain.com
nameserver 192.168.2.2
nslookup
主机名的Aaddn-hosts
按预期工作,添加搜索后缀并返回正确的结果:
❯ nslookup
> server01
Server: 192.168.2.2
Address: 192.168.2.2#53
Name: server01.subdomain.mydomain.com
Address: 192.168.1.10
我想为 server01.local 返回相同的 IP:
> server01.local
Server: 192.168.2.2
Address: 192.168.2.2#53
** server can't find server01.local: NXDOMAIN
我尝试将本地添加到 .config 文件中,local=/subdomain.mydomain.com/local/
无论是否包含domain=/subdomain.mydomain.com/local/
单独的domain=subdomain.mydomain.com
domain=local
条目。这要么不会改变行为,要么(如果我添加这两个domain=
条目)nslookup 适用于.local
而不适用于.subdomain.mydomain.com
.
如何让 dnsmasq 响应.local
和.subdomain.mydomain.com
域的主机名 IP?
答案1
对于任何将来发现这一点的人来说,答案(通常都是这样)是我太愚蠢了。
.local 是为 mDNS 保留的因此,通过告诉我的 dnsmasq 设备尝试解析 .local 并宣布它能够解析 .local,我就破坏了 mDNS。我还使用 nslookup 测试了解析,它不能解析 mDNS 查询。
通过删除 dnsmasq 中对 .local 的所有引用,重新启动服务并刷新 DHCP 租约并通过 ping 测试 .local 解析,它正在工作。