在 OpenWRT 10.03.1 上安装了 dnsmasq 2.55 的路由器后面的 LAN 中,大多数对顶级域名的 DNS 查询都返回负面结果,例如:
$ dig com. ANY
; <<>> DiG 9.7.3 <<>> com. ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 36108
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;com. IN ANY
;; Query time: 3 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Feb 12 22:37:30 2013
;; MSG SIZE rcvd: 21
当使用某些外部递归服务器(例如dig com. ANY @8.8.8.8
)时,查询结果成功。
我认为问题可能是 dnsmasq 将查询视为.com
对非限定名称的查询com
(终端.
似乎总是被剥离)。但即使将 dnsmasq 配置为转发对 com 域名和非限定名称的查询:
server=/com/8.8.8.8,server=//8.8.8.8
结果是一样的。
但是,有些类型的查询实际上会通过,例如NS
或SOA
。此外,还有一些不会通过并返回 的查询NOXDOMAIN
,ANY
例如DNSKEY
或RRSIG
。
dnsmasq 日志中的相应行是:
Feb 12 21:41:13 myrouter daemon.info dnsmasq[11569]: using nameserver 8.8.8.8#53 for unqualified names
...
Feb 12 21:42:52 myrouter daemon.debug dnsmasq[11569]: query[DNSKEY] com from 192.168.1.5
Feb 12 21:42:52 myrouter daemon.debug dnsmasq[11569]: config com is NXDOMAIN
...
Feb 12 21:43:06 myrouter daemon.debug dnsmasq[11569]: query[NS] com from 192.168.1.5
Feb 12 21:43:06 myrouter daemon.debug dnsmasq[11569]: forwarded com to 8.8.8.8
我想知道是否可以以及如何配置 dnsmasq 以返回这些查询的预期结果。(“正常”主机名的查询正常工作)
答案1
您可能有domain-needed
选项已启用:
-D, --domain-needed
告诉 dnsmasq 永远不要将 A 或 AAAA 查询转发到上游名称服务器,查询内容为纯名称(不含点或域部分)。如果 /etc/hosts 或 DHCP 中未找到该名称,则返回“未找到”答案。
找到设置的位置(/etc/dnsmasq.conf
或命令行参数)并将其删除。
答案2
我猜问题出在域名正则表达式上。这对我来说有效。
只需删除域上的正则表达式:
server=8.8.8.8#53