DD-WRT:DNSMasq 扩展主机不工作

Cra*_*ker 15 dns dd-wrt dhcp dnsmasq

我有一个运行 DD-WRT 的 Linksys 路由器(固件:DD-WRT v24-sp2 (09/08/09) mini)。我已经成功解析了我的 DHCP 分配系统的 DNS 名称,但只有当我完全限定这些域时。尽管使用了“expand-hosts”DNSMasq 附加选项,该选项应该激活此精确功能。

这是我的 dnsmasq.conf:

interface=br0
resolv-file=/tmp/resolv.dnsmasq
domain=example.com
dhcp-leasefile=/tmp/dnsmasq.leases
dhcp-lease-max=51
dhcp-option=lan,3,10.77.0.5
dhcp-authoritative
dhcp-range=lan,10.77.0.100,10.77.0.149,255.255.0.0,1440m
dhcp-host=00:1A:A0:1D:82:5A,astatichostname,10.77.1.40,infinite
expand-hosts
Run Code Online (Sandbox Code Playgroud)

(仅供参考:example.com 和 astatichostname 是我使用的真实交易名称的占位符。我的网络使用 10.77.0.0/16;我的路由器在 10.77.0.5 上。)

结果:

> nslookup astatichostname 10.77.0.5
Server:     10.77.0.5
Address:    10.77.0.5#53

** server can't find astatichostname: NXDOMAIN

> nslookup astatichostname.example.com 10.77.0.5
Server:     10.77.0.5
Address:    10.77.0.5#53

Name:   astatichostname.example.com
Address: 10.77.1.40
Run Code Online (Sandbox Code Playgroud)

在 DNSMasq 中还有什么可能会导致 expand-host 的问题吗?

phe*_*mer 11

这个问题很老,但它是该问题的顶级谷歌搜索结果之一,我终于弄明白了。

问题是这不是什么expand-hosts。关于它的文档非常模糊,但expand-hosts所做的是将域添加到 中的主机条目/etc/hosts,而不是 dns 查询。所以例如

/etc/hosts:

10.77.0.5 astatichostname
Run Code Online (Sandbox Code Playgroud)

dnsmasq.conf:

expand-hosts
domain=example.com
Run Code Online (Sandbox Code Playgroud)

然后 dns 查询astatichostname.example.com将解析为10.77.0.5(除了仅 的 DNS 查询astatichostname)。



解决方案:

因此,解决方案是让 dd-wrt ​​在/etc/hosts没有域的情况下创建条目,然后告诉 dnsmasqexample.com在完全限定的 A 记录 DNS 查询进入时将这些主机条目视为域的一部分。
为此,您不得不:

  1. example.com域放在Optional Settings下的Setup -> Basic Setup页面的Domain Name字段中。
  2. 服务页面上的DHCP 服务器下的LAN 域设置留空
  3. DNSMasq下的服务页面上添加expand-hosts其他 DNSMasq 选项

1步控制domain=放入dnsmasq.conf文件中的设置。步骤#2从放入的条目中删除域/etc/hosts。当一个完全合格的 DNS 查询进来时,步骤#3将域添加到条目/etc/hosts中。


我很高兴 dd-wrt ​​使这一切变得简单而美好......