最初のネームサーバーが再帰的でない場合、DNSクエリが失敗するのはなぜですか?

最初のネームサーバーが再帰的でない場合、DNSクエリが失敗するのはなぜですか?

Windows Active Directoryドメイン内にLinuxボックス(Ubuntu Server 11.10)があり、次のコマンドを使用してドメインに参加しました。同じように開いている。ファイルresolv.confは次のとおりです。

domain mydomain.com
nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 8.8.4.4

192.168.1.1WindowsドメインのWindows DNSサーバーはどこにありますか? ISPサーバーよりも好むGoogleのパブリックDNSサーバーです8.8.8.88.8.4.4

ネットワーク設計の一部の変更により、Windows DNSサーバーで再帰を無効にすることが決定されるまで、設定はうまくいきました。次回Googleサーバーを使用するように設定したので、これはスムーズに進むと思いましたが、そうではありません。

mydomain\myuser@linux-server:~$ dig google.com

; <<>> DiG 9.7.3 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55321
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;google.com.                    IN      A

;; AUTHORITY SECTION:
.                       3600    IN      NS      c.root-servers.net.
.                       3600    IN      NS      d.root-servers.net.
.                       3600    IN      NS      e.root-servers.net.
.                       3600    IN      NS      f.root-servers.net.
.                       3600    IN      NS      g.root-servers.net.
.                       3600    IN      NS      h.root-servers.net.
.                       3600    IN      NS      i.root-servers.net.
.                       3600    IN      NS      j.root-servers.net.
.                       3600    IN      NS      k.root-servers.net.
.                       3600    IN      NS      l.root-servers.net.
.                       3600    IN      NS      m.root-servers.net.
.                       3600    IN      NS      a.root-servers.net.
.                       3600    IN      NS      b.root-servers.net.

;; ADDITIONAL SECTION:
c.root-servers.net.     3600    IN      A       192.33.4.12
d.root-servers.net.     3600    IN      A       128.8.10.90
e.root-servers.net.     3600    IN      A       192.203.230.10
f.root-servers.net.     3600    IN      A       192.5.5.241

;; Query time: 4 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Wed Jan  8 14:02:22 2014
;; MSG SIZE  rcvd: 507

返品:

mydomain\myuser@linux-server:~$ ping google.com
ping: unknown host google.com

また、私のイカプロキシ接続に失敗しました(私はdns_nameserverイカ構成のオプションを使用し、内部DNSサーバーを無視します)。

最初のネームサーバーが再帰を拒否したときにDNS要求が失敗するのはなぜですか?マシンは次のサーバーを試してはいけませんか?これが予想される(設計された)動作である場合はどうすればよいですか?

編集する:NSLOOKUPは異なる(成功した)結果を提供します。

mydomain\myuser@linux-server:~$ nslookup google.com
;; Got recursion not available from 192.168.1.1, trying next server
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 173.194.67.102
Name:   google.com
Address: 173.194.67.138
Name:   google.com
Address: 173.194.67.100
Name:   google.com
Address: 173.194.67.113
Name:   google.com
Address: 173.194.67.139
Name:   google.com
Address: 173.194.67.101

それでは、このアプリケーションは依存していますか?名前解決を要求するすべてのアプリケーションに対して透過的に動作させることができますか(最初のサーバーが再帰を拒否した場合は次のサーバーを試してください)。それとも、名前解決はプログラム自体の責任ですか? (それとも私が何かを逃しているのだろうか?!)…

編集する:mydomain.comまた、このアドレスはインターネットに登録された公開アドレスであり、当社の所有ではないことにも注目する価値があります。私たちがという内部ドメインを設定したように、apple.com私は少なくともまだAppleで働いていないと約束します;-)。

答え1

答えは「状況によって異なります」です。

現時点では、dig基本的にDNS情報をデバッグするためのツールです。したがって、あなたが要求したネームサーバーから返された情報を表示し、これ以上質問を進めません。

他のプログラムの場合、プログラムによって異なります。ほとんどの人はおそらく名前解決のためにオペレーティングシステムの機能を使用します(参考文献を参照man getnameinfo)。他の人はそうではないかもしれません。つまり、非再帰的なネームサーバーを一覧表示すると、見つけるのが難しいいくつかのエラーが発生します。

つまり、リゾルバーリストに非再帰的なネームサーバーを維持するのは悪い考えです。

Windowsサーバーを再帰的に使用したくない場合は、別のサーバーをリゾルバーに設定し、そのサーバーにWindowsサーバーに内部ドメインを要求させることをお勧めします。

関連情報