web-dev-qa-db-ja.com

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

この動作は正常ですか?何かご意見は?

29
musashiXXX

これは、検索オプションを使用しない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を追加するだけです。

39

私の場合、それはMicrosoft DNSサーバーのバグであり、EDNS Cookieオプションが設定された要求に対してFORMERR応答(要求形式エラー)を返します。 Digの新しいバージョン(9.11以降)では、デフォルトでdns-cookiesを使用します。これは、Digへの+nocookieまたは+noednsフラグによって防止できます。

$ Dig +nocookie DOMAIN @SERVER

ソース: https://kevinlocke.name/bits/2017/01/20/formerr-from-Microsoft-dns-server-for-Dig/

9
Taha Jahangir

私も同じ問題を抱えていました。 nslookupとDigの両方から送信されたパケットをWiresharkで検査したところ、問題が見つかりました。

Digはクエリで本物のデータビットを設定していました。マンページによると、「これにより、サーバーのセキュリティポリシーに従ってすべての回答セクションと権限セクションがすべて安全であると検証されているかどうかをサーバーに返すように要求されます。」 + noadflagを指定してDigを実行すると、nslookupと同じ結果が返されました。

7
Bob Francis

次の行を使用して、ホームディレクトリの.digrcファイルを使用できます。

+検索

デフォルトの動作を偶然に

2
dudacgf

私はホームwi-fiネットワークでこの問題を経験しました。Windows7ホストで実行されているUbuntu VM内からDigを使用して、適切なgoogle.comを解決しようとしました。 out、しかしnslookupは即座に結果を返しました。

私にとっての解決策は、+noedns$ Dig +noedns google.comを追加することでした。

0
wberry