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 查询进入时将这些主机条目视为域的一部分。
为此,您不得不:
example.com域放在Optional Settings下的Setup -> Basic Setup页面的Domain Name字段中。expand-hosts到其他 DNSMasq 选项第1步控制domain=放入dnsmasq.conf文件中的设置。步骤#2从放入的条目中删除域/etc/hosts。当一个完全合格的 DNS 查询进来时,步骤#3将域添加到条目/etc/hosts中。
我很高兴 dd-wrt 使这一切变得简单而美好......