Кто-нибудь может сказать мне, почему это происходит? Я могу разрешить имя хоста с помощью 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
.