첫 번째 네임서버가 재귀적이지 않은 경우 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.8.8.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 서버에 내부 도메인을 요청하도록 하는 것이 좋습니다.

관련 정보