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

Почему host и nslookup могут разрешить имя, а dig - нет?

Кто-нибудь может сказать мне, почему это происходит? Я могу разрешить имя хоста с помощью host и / или nslookup, но прямой поиск не работает с dig; обратный поиск:

musashixxx@box:~$ host someserver
someserver.somenet.internal has address 192.168.0.252
musashixxx@box:~$ host 192.168.0.252
252.0.168.192.in-addr.arpa domain name pointer someserver.somenet.internal.
musashixxx@box:~$ nslookup someserver
Server:     192.168.0.253
Address:    192.168.0.253#53

Name:   someserver.somenet.internal
Address: 192.168.0.252
musashixxx@box:~$ nslookup 192.168.0.252
Server:     192.168.0.253
Address:    192.168.0.253#53

252.0.168.192.in-addr.arpa  name = someserver.somenet.internal.

musashixxx@box:~$ dig someserver

; <<>> DiG 9.8.1-P1 <<>> someserver
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 55306
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;someserver.            IN  A

;; Query time: 0 msec
;; SERVER: 192.168.0.253#53(192.168.0.253)
;; WHEN: Wed Oct  3 15:47:38 2012
;; MSG SIZE  rcvd: 27

musashixxx@box:~$ dig -x 192.168.0.252

; <<>> DiG 9.8.1-P1 <<>> -x 192.168.0.252
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28126
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;252.0.168.192.in-addr.arpa.    IN  PTR

;; ANSWER SECTION:
252.0.168.192.in-addr.arpa. 3600 IN PTR someserver.somenet.internal.

;; Query time: 0 msec
;; SERVER: 192.168.0.253#53(192.168.0.253)
;; WHEN: Wed Oct  3 15:49:11 2012
;; MSG SIZE  rcvd: 86

Вот как выглядит мой файл resolv.conf:

nameserver 192.168.0.253
search somenet.internal

Это нормально? Есть предположения?

По умолчанию команда dig не использует параметр поиска.

На странице руководства:

   +[no]search
       Use [do not use] the search list defined by the searchlist or
       domain directive in resolv.conf (if any). The search list is not
       used by default.

Изменить: просто добавьте +search чтобы заставить его работать, как dig +search myhost.

В моем случае это ошибка в Microsoft DNS Server, где он возвращает FORMERR ответ (ошибка формата запроса) для запросов с EDNS Cookie набор опций. Более новые версии dig (9.11 и выше) по умолчанию используют dns-cookies. Этого можно избежать, если +nocookie или +noedns флаг копать:

$ dig +nocookie DOMAIN @SERVER

Источник: https://kevinlocke.name/bits/2017/01/20/formerr-from-microsoft-dns-server-for-dig/

У меня была такая же проблема. После проверки пакетов, отправленных как из nslookup, так и с помощью wirehark, я обнаружил проблему.

dig устанавливал в запросе бит аутентичных данных. Согласно странице руководства: «Это запрашивает у сервера ответ, все ли разделы ответа и полномочий проверены как безопасные в соответствии с политикой безопасности сервера». Запустив dig с + noadflag, он вернул те же результаты, что и nslookup.

Вы можете использовать файл .digrc в своем домашнем каталоге со строкой

+ поиск

случайное поведение по умолчанию

У меня возникла эта проблема в моей домашней сети Wi-Fi, пытаясь решить старый добрый google.com из виртуальной машины Ubuntu, работающей на хосте Windows 7, с dig, время ожидания истекло, но nslookup моментально вернул результат.

Решением для меня было добавить +noedns: $ dig +noedns google.com.