Назад | Перейти на главную страницу

Большинство DNS-запросов для TLD не проходят через dnsmasq

Большинство 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