Большинство DNS-запросов для доменов верхнего уровня из моей локальной сети за маршрутизатором с dnsmasq 2.55 на OpenWRT 10.03.1 возвращают отрицательные результаты, например:
$ 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 настроен на пересылку запросов для comains и неразличимых имен:
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 для возврата ожидаемых результатов по этим запросам. (запросы на "нормальные" имена хостов работают правильно)
У тебя наверняка есть domain-needed
опция включена:
-D, --domain-needed
Указывает dnsmasq никогда не пересылать запросы A или AAAA для простых имен без точек или частей домена вышестоящим серверам имен. Если имя не известно из / etc / hosts или DHCP, то возвращается ответ «не найдено».
Найдите, где это установлено (либо /etc/dnsmasq.conf
или параметры командной строки) и удалите его.
Думаю, проблема в регулярном выражении домена. Это сработало для меня.
Просто удалите регулярное выражение по домену: server=8.8.8.8#53