我有一台运行 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
(仅供参考: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
还有什么其他因素可能导致 DNSMasq 中的 expand-host 发生故障?
答案1
这个问题很老了,但它是谷歌上关于这个问题的搜索结果中排名靠前的之一,我终于弄明白了。
问题是,它不是这样expand-hosts
做的。关于它的文档非常模糊,但它所做expand-hosts
的是将域添加到主机条目中/etc/hosts
,而不是添加到 DNS 查询中。例如
在 /etc/hosts 中:
10.77.0.5 astatichostname
dnsmasq.conf:
expand-hosts
domain=example.com
然后 的 DNS 查询astatichostname.example.com
将解析为10.77.0.5
(除了 的 DNS 查询astatichostname
)。
解决方案:
因此,解决方案是让 dd-wrt 创建/etc/hosts
不带域的条目,然后告诉 dnsmasqexample.com
在完全合格的 A 记录 DNS 查询进入时将这些主机条目视为域的一部分。
为此,您必须:
- 将
example.com
域名放入域名字段上的设置->基本设置页面下可选设置。 - 空白LAN 域设置在服务页面下DHCP 服务器。
- 添加
expand-hosts
其他 DNSMasq 选项在服务页面下DNSMasq
步#1控制domain=
放入dnsmasq.conf
文件中的设置。步骤#2从输入的条目中删除域/etc/hosts
。步骤#3/etc/hosts
当完全合格的 DNS 查询进入时,将域名添加到条目中。
我很高兴 dd-wrt 让这一切变得简单而美好......
答案2
以下内容适用于我的 DD-WRT:
expand-hosts
local=/lan/
domain=lan
我认为这是因为您缺少local
设置。我也已lan
在 GUI 中将其设置为“LAN 域”。