在OpenWRT 10.03.1上,使用dnsmasq 2.55的路由器之后,来自局域网的顶级域名的大多数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
当使用一些外部recursion服务器(例如dig com. ANY @8.8.8.8 )时,查询结果是成功的。
我认为问题是dnsmasq认为查询.com作为非限定名称com (terminal似乎总是被剥离)的查询。 但即使将dnsmasqconfiguration为转发comcommains和不可分辨名称的查询:
server=/com/8.8.8.8,server=//8.8.8.8
结果是一样的。
但是,一些types的查询实际上是通过的,如NS或SOA 。 除ANY之外的其他一些不传递和返回NOXDOMAIN ,例如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
我想知道是否和如何可以将dnsmasqconfiguration为返回这些查询的预期结果。 (查询“正常”主机名正常工作)
您可能domain-needed启用domain-needed选项:
-D, --domain-needed告诉dnsmasq永远不会将没有点或域部分的简单名称的A或AAAA查询转发给上游名称服务器。 如果从/ etc / hosts或DHCP中不知道该名称,则返回“未find”答案。
find设置的位置( /etc/dnsmasq.conf或命令行参数)并将其删除。