Windows DNS Server 2008 R2가 SERVFAIL을 잘못 반환합니다. 0 (QUESTION)

DNS 서버이기도 한 Windows 2008 R2 도메인 컨트롤러가 있습니다. 특정 TLD를 해결할 때 SERVFAIL을 반환합니다.

$ dig bogus.

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

;; QUESTION SECTION:
;bogus.             IN  A

com.위와 같이 DC를 쿼리 할 때 와 같은 실제 TLD에 대해 동일한 결과를 얻습니다 . 예상대로 작동하는 BIND 서버와 비교하십시오.

$ dig bogus. @128.59.59.70

; <<>> DiG 9.8.1 <<>> bogus. @128.59.59.70
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 30141
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;bogus.             IN  A

;; AUTHORITY SECTION:
.           10800   IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2012012501 1800 900 604800 86400

;; Query time: 18 msec
;; SERVER: 128.59.59.70#53(128.59.59.70)
;; WHEN: Wed Jan 25 14:09:14 2012
;; MSG SIZE  rcvd: 98

마찬가지로으로 Windows DNS 서버를 쿼리 dig . any하면 SERVFAIL이 표시되지만 BIND 서버는 예상대로 루트 영역을 반환합니다.

이 문제와 유사한이 소리에 설명 http://support.microsoft.com/kb/968372 나는 두 전달자 (위에서 128.59.59.70을뿐만 아니라 128.59.62.10) 사용에 대한 전제 조건 때문에 루트 힌트 다시 하락하고 제외 노출 문제가 동일하지 않습니다. 그럼에도 불구하고, MaxCacheTTL설명 된대로 레지스트리 수정을 적용하고 DNS와 전체 서버를 다시 시작했지만 문제는 지속됩니다. 이 도메인의 모든 도메인 컨트롤러에서 문제가 발생하고 서버가 자동 Windows 업데이트를 받고 있지만 반년 전에 발생했습니다.

편집하다

다음은 디버그 로그입니다. 클라이언트는 160.39.114.110이며 이는 내 워크 스테이션입니다.

1/25/2012 2:16:01 PM 0E08 PACKET  000000001EA6BFD0 UDP Rcv 160.39.114.110  2e94   Q [0001   D   NOERROR] A      (5)bogus(0)
UDP question info at 000000001EA6BFD0
  Socket = 508
  Remote addr 160.39.114.110, port 49710
  Time Query=1077016, Queued=0, Expire=0
  Buf length = 0x0fa0 (4000)
  Msg length = 0x0017 (23)
  Message:
    XID       0x2e94
    Flags     0x0100
      QR        0 (QUESTION)
      OPCODE    0 (QUERY)
      AA        0
      TC        0
      RD        1
      RA        0
      Z         0
      CD        0
      AD        0
      RCODE     0 (NOERROR)
    QCOUNT    1
    ACOUNT    0
    NSCOUNT   0
    ARCOUNT   0
    QUESTION SECTION:
    Offset = 0x000c, RR count = 0
    Name      "(5)bogus(0)"
      QTYPE   A (1)
      QCLASS  1
    ANSWER SECTION:
      empty
    AUTHORITY SECTION:
      empty
    ADDITIONAL SECTION:
      empty

1/25/2012 2:16:01 PM 0E08 PACKET  000000001EA6BFD0 UDP Snd 160.39.114.110  2e94 R Q [8281   DR SERVFAIL] A      (5)bogus(0)
UDP response info at 000000001EA6BFD0
  Socket = 508
  Remote addr 160.39.114.110, port 49710
  Time Query=1077016, Queued=0, Expire=0
  Buf length = 0x0fa0 (4000)
  Msg length = 0x0017 (23)
  Message:
    XID       0x2e94
    Flags     0x8182
      QR        1 (RESPONSE)
      OPCODE    0 (QUERY)
      AA        0
      TC        0
      RD        1
      RA        1
      Z         0
      CD        0
      AD        0
      RCODE     2 (SERVFAIL)
    QCOUNT    1
    ACOUNT    0
    NSCOUNT   0
    ARCOUNT   0
    QUESTION SECTION:
    Offset = 0x000c, RR count = 0
    Name      "(5)bogus(0)"
      QTYPE   A (1)
      QCLASS  1
    ANSWER SECTION:
      empty
    AUTHORITY SECTION:
      empty
    ADDITIONAL SECTION:
      empty

“IP 필터”를 제외한 디버그 로그 상자의 모든 옵션을 확인했습니다. 반면에 accounts.google.com을 쿼리하면 DNS 서버가 전달자 (예 : 128.59.59.70)로 이동하는 것을 볼 수 있습니다. 이 경우 bogus.캐시에 없는데도 DNS 서버에서 패킷이 나가는 것을 보지 못했습니다 (디버그 로그가 이미 실행 중이며이 서버 bogus.또는 TLD에 대해 처음 쿼리 한 시간입니다 ). 위에 링크 된 Microsoft KB 기사에서와 같이 다른 DNS 서버를 참조하지 않고 SERVFAIL을 반환했습니다.



답변

전달자가 구성되지 않은 Microsoft DNS 서버에서도 비슷한 문제가 발생했습니다. 이 핫픽스는 http://support.microsoft.com/kb/2508835 와 관련이 있습니다. 전달자를 사용하면 적용 가능성이 무효화된다고 말하지는 않습니다.