일부 AAAA 쿼리에 대해 SERVFAIL을 반환하는 서버 2012R2 DNS 서버

일부 AAAA 쿼리에 대해 SERVFAIL을 반환하는 서버 2012R2 DNS 서버

(원래 테스트 중 많은 부분이 새로운 정보와 관련이 없기 때문에 이 질문의 대부분을 다시 작성했습니다.)

Server 2012R2 DNS 서버에 문제가 있습니다. 이러한 문제의 가장 큰 부작용은 Exchange 이메일이 전달되지 않는다는 것입니다. A 레코드를 시도하기 전에 AAAA 레코드에 대한 쿼리를 교환하세요. AAAA 레코드에 대한 SERVFAIL을 보면 A 레코드도 시도하지 않고 그냥 포기합니다.

일부 도메인의 경우 Active Directory DNS 서버에 대해 쿼리할 때 NOERROR 대신 SERVFAIL이 표시되고 결과가 없습니다.

DNS를 실행하는 여러 다른 Server 2012R2 도메인 컨트롤러에서 이 작업을 시도했습니다. 그 중 하나는 다른 방화벽과 인터넷 연결 뒤의 다른 네트워크에 있는 완전히 별도의 도메인입니다.

이 문제의 원인으로 제가 알고 있는 두 개의 주소는 다음 smtpgw1.gov.on.ca과 같습니다.mxmta.owm.bell.net

나는 dig이것을 테스트하기 위해 Linux 컴퓨터에서 사용하고 있습니다 (192.168.5.5는 내 도메인 컨트롤러입니다).

grant@linuxbox:~$ dig @192.168.5.5 smtpgw1.gov.on.ca -t AAAA

; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> @192.168.5.5 smtpgw1.gov.on.ca -t AAAA
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 56328
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;smtpgw1.gov.on.ca.             IN      AAAA

;; Query time: 90 msec
;; SERVER: 192.168.5.5#53(192.168.5.5)
;; WHEN: Wed Oct 21 14:09:10 EDT 2015
;; MSG SIZE  rcvd: 46

그러나 공용 도메인 컨트롤러에 대한 쿼리는 예상대로 작동합니다.

grant@home-ssh:~$ dig @4.2.2.1 smtpgw1.gov.on.ca -t AAAA

; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> @4.2.2.1 smtpgw1.gov.on.ca -t AAAA
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 269
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 8192
;; QUESTION SECTION:
;smtpgw1.gov.on.ca.             IN      AAAA

;; Query time: 136 msec
;; SERVER: 4.2.2.1#53(4.2.2.1)
;; WHEN: Wed Oct 21 14:11:19 EDT 2015
;; MSG SIZE  rcvd: 46

앞서 말했듯이 저는 두 개의 서로 다른 네트워크와 도메인에서 이것을 시도했습니다. 하나는 DNS에 대한 모든 기본 설정이 있는 완전히 새로운 도메인입니다. 다른 하나는 Server 2012로 마이그레이션되었으므로 2003/2008의 일부 이전 설정이 그대로 유지될 수 있습니다. 나는 둘 다에 대해 동일한 결과를 얻습니다.

EDNS를 비활성화하면 dmscnd /config /enableednsprobes 0문제가 해결됩니다. EDNS가 Server 2003에서 문제가 된다는 검색 결과가 많이 보이지만 Server 2012에서 보는 것과 일치하는 것은 많지 않습니다. 두 방화벽 모두 EDNS에 문제가 없습니다. EDNS를 비활성화하는 것은 일시적인 해결 방법일 뿐입니다. DNSSEC 사용을 방해하고 다른 문제가 발생할 수 있습니다.

또한 Server 2008R2 및 EDNS 문제에 대한 게시물을 본 적이 있지만 동일한 게시물에서는 Server 2012에서 문제가 해결되었으므로 제대로 작동해야 한다고 나와 있습니다.

또한 DNS에 대한 디버그 로그를 활성화해 보았습니다. 예상한 패킷을 볼 수 있지만 SERVFAIL을 반환하는 이유에 대해 많은 통찰력을 제공하지는 않습니다. 다음은 DNS 서버 디버그 로그의 관련 부분입니다.

첫 번째 패킷 - 클라이언트에서 내 DNS 서버로 쿼리

2015년 10월 16일 오전 9시 42분 29초 0974 패킷 000000EFF1BF01A0 UDP Rcv 172.16.0.254 a61e Q [2001 D NOERROR] AAAA (7)smtpgw1(3)gov(2)on(2)ca(0)
000000EFF1BF01A0의 UDP 질문 정보
  소켓 = 508
  원격 주소 172.16.0.254, 포트 50764
  시간 쿼리=4556080, 대기 중=0, 만료=0
  버퍼 길이 = 0x0fa0 (4000)
  메시지 길이 = 0x002e (46)
  메시지:
    XID 0xa61e
    플래그 0x0120
      QR 0(질문)
      OP코드 0(쿼리)
      AA 0
      TC 0
      RD 1
      라 0
      Z 0
      CD 0
      AD 1
      RCODE 0(오류)
    QCOUNT 1
    계정 0
    NSCOUNT 0
    ARCOUNT 1
    질문 섹션:
    오프셋 = 0x000c, RR 개수 = 0
    이름 "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      큐타입 AAAA (28)
      Q클래스 1
    답변 섹션:
      비어 있는
    권한 섹션:
      비어 있는
    추가 섹션:
    오프셋 = 0x0023, RR 개수 = 0
    이름 "(0)"
      타입 선택 (41)
      클래스 4096
      TTL 0
      들렌 0
      데이터   
        버퍼 크기 = 4096
        R코드 확장 = 0
        R코드 전체 = 0
        버전 = 0
        플래그 = 0

두 번째 패킷 - 내 DNS 서버에서 해당 DNS 서버로 쿼리

2015년 10월 16일 오전 9:42:29 0974 PACKET 000000EFF0A22160 UDP Snd 204.41.8.237 3e6c Q [0000 NOERROR] AAAA (7)smtpgw1(3)gov(2)on(2)ca(0)
000000EFF0A22160의 UDP 질문 정보
  소켓 = 9812
  원격 주소 204.41.8.237, 포트 53
  시간 쿼리=0, 대기 중=0, 만료=0
  버퍼 길이 = 0x0fa0 (4000)
  메시지 길이 = 0x0023 (35)
  메시지:
    XID 0x3e6c
    플래그 0x0000
      QR 0(질문)
      OP코드 0(쿼리)
      AA 0
      TC 0
      RD 0
      라 0
      Z 0
      CD 0
      광고 0
      RCODE 0(오류)
    QCOUNT 1
    계정 0
    NSCOUNT 0
    ARCOUNT 0
    질문 섹션:
    오프셋 = 0x000c, RR 개수 = 0
    이름 "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      큐타입 AAAA (28)
      Q클래스 1
    답변 섹션:
      비어 있는
    권한 섹션:
      비어 있는
    추가 섹션:
      비어 있는

세 번째 패킷 - DNS 서버의 응답(NOERROR)

2015년 10월 16일 9:42:29 AM 0974 PACKET 000000EFF2188100 UDP Rcv 204.41.8.237 3e6c RQ [0084 A NOERROR] AAAA (7)smtpgw1(3)gov(2)on(2)ca(0)
000000EFF2188100의 UDP 응답 정보
  소켓 = 9812
  원격 주소 204.41.8.237, 포트 53
  시간 쿼리=4556080, 대기 중=0, 만료=0
  버퍼 길이 = 0x0fa0 (4000)
  메시지 길이 = 0x0023 (35)
  메시지:
    XID 0x3e6c
    플래그 0x8400
      QR 1(응답)
      OP코드 0(쿼리)
      AA 1
      TC 0
      RD 0
      라 0
      Z 0
      CD 0
      광고 0
      RCODE 0(오류)
    QCOUNT 1
    계정 0
    NSCOUNT 0
    ARCOUNT 0
    질문 섹션:
    오프셋 = 0x000c, RR 개수 = 0
    이름 "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      큐타입 AAAA (28)
      Q클래스 1
    답변 섹션:
      비어 있는
    권한 섹션:
      비어 있는
    추가 섹션:
      비어 있는

네 번째 패킷 - 내 DNS 서버에서 클라이언트로의 응답(SERVFAIL)

2015년 10월 16일 오전 9시 42분 29초 0974 패킷 000000EFF1BF01A0 UDP Snd 172.16.0.254 a61e RQ [8281 DR SERVFAIL] AAAA (7)smtpgw1(3)gov(2)on(2)ca(0)
000000EFF1BF01A0의 UDP 응답 정보
  소켓 = 508
  원격 주소 172.16.0.254, 포트 50764
  시간 쿼리=4556080, 대기 중=4556080, 만료=4556083
  버퍼 길이 = 0x0fa0 (4000)
  메시지 길이 = 0x002e (46)
  메시지:
    XID 0xa61e
    플래그 0x8182
      QR 1(응답)
      OP코드 0(쿼리)
      AA 0
      TC 0
      RD 1
      RA 1
      Z 0
      CD 0
      광고 0
      RCODE 2(서비스 실패)
    QCOUNT 1
    계정 0
    NSCOUNT 0
    ARCOUNT 1
    질문 섹션:
    오프셋 = 0x000c, RR 개수 = 0
    이름 "(7)smtpgw1(3)gov(2)on(2)ca(0)"
      큐타입 AAAA (28)
      Q클래스 1
    답변 섹션:
      비어 있는
    권한 섹션:
      비어 있는
    추가 섹션:
    오프셋 = 0x0023, RR 개수 = 0
    이름 "(0)"
      타입 선택 (41)
      클래스 4000
      TTL 0
      들렌 0
      데이터   
        버퍼 크기 = 4000
        R코드 확장 = 0
        R코드 전체 = 2
        버전 = 0
        플래그 = 0

기타 참고 사항:

  • 네트워크 중 하나에는 기본 IPv6 인터넷 액세스가 있고 다른 네트워크에는 없습니다(그러나 IPv6 스택은 기본 설정으로 서버에서 활성화됩니다). IPv6 네트워크 문제는 아닌 것 같습니다.
  • 모든 도메인에 영향을 미치지는 않습니다. 예를 들어 dig @192.168.5.5 -t AAAA serverfault.comNOERROR를 반환하고 결과가 없습니다. google.comGoogle의 IPv6 주소를 올바르게 반환하는 경우 에도 마찬가지입니다 .
  • 다음에서 핫픽스 설치를 시도했습니다.KB3014171, 아무런 차이가 없었습니다.
  • 업데이트는KB3004539이미 설치되어 있습니다.

2015년 11월 7일 편집

도메인이 아닌 다른 서버 2012R2 시스템에 가입하고 DNS 서버 역할을 설치하고 명령으로 테스트했습니다 nslookup -type=aaaa smtpgw1.gov.on.ca localhost. 동일한 문제가 없습니다.

두 VM 모두 동일한 호스트 및 동일한 네트워크에 있으므로 네트워크/방화벽 문제가 제거됩니다. 이제는 패치 수준으로 내려갔거나 도메인 구성원/도메인 컨트롤러가 되어 차이를 만들어냈습니다.

2015년 11월 8일 편집

모든 업데이트를 적용했는데 별 차이가 없었습니다. 새 테스트 서버와 도메인 컨트롤러의 DNS 설정 사이에 구성 차이가 있는지 다시 확인했는데, 도메인 컨트롤러에 전달자가 설정되어 있었습니다.

이제 초기 테스트에서는 전달자를 사용하거나 사용하지 않고 시도했지만 digLinux 시스템에서만 시도했습니다. Windows 시스템에서 nslookup을 사용할 때 전달자 설정 유무에 관계없이(Google, OpenDNS, 4.2.2.1 및 ISP DNS 서버로 시도) 결과가 약간 다릅니다.

전달자를 설정하면 Server failed.

전달자가 없으면(따라서 루트 DNS 서버를 사용함) No IPv6 address (AAAA) records available for smtpgw1.gov.on.ca.

그러나 이는 IPv6 레코드가 없는 다른 도메인에 대해 얻은 것과 여전히 동일하지 않습니다. Windows의 nslookup은 다른 도메인에 대한 결과를 반환하지 않습니다.

전달자가 있든 없든 내 Windows DNS 서버를 쿼리할 때 해당 이름이 dig계속 표시됩니다 .SERVFAIL

Windows DNS 서버를 사용하지 않는 경우에도 문제 도메인과 관련이 있는 것으로 보이는 다른 도메인 사이에는 약간의 차이가 있습니다.

dig -t aaaa @8.8.8.8 smtpgw1.gov.on.ca답변이 없으며 권한 섹션도 없습니다.

dig -t aaaa @8.8.8.8 serverfault.com답변을 반환하지 않지만 권한 섹션이 있습니다. 어떤 확인자를 사용하든 관계없이 내가 시도하는 대부분의 다른 도메인도 마찬가지입니다.

그렇다면 해당 권한 섹션이 누락된 이유는 무엇이며, 다른 DNS 서버는 그렇지 않은데 Windows DNS 서버는 이를 실패로 처리하는 이유는 무엇입니까?

답변1

나는 네트워크 테이스를 좀 더 조사하고 약간의 독서를 했습니다. 존재하지 않는 경우 AAAA 레코드에 대한 요청은 SOA를 반환합니다. SOA는 요청된 도메인과 다른 것으로 나타났습니다. 이것이 Windows가 응답을 거부하는 이유라고 생각합니다. mx.atomwide.com에 대해 AAAA를 요청하세요. lgfl.org.uk에 대한 응답 SOA. 이 정보로 어떤 진전을 이룰 수 있는지 알아보겠습니다. 편집: 나중에 참조할 수 있도록 "오염 방지 캐시 보호"를 일시적으로 끄면 쿼리가 성공할 수 있습니다. 이상적이지는 않지만 문제가 의심스러운 DNS 레코드에 있음을 증명합니다. RFC4074도 좋은 참조 자료입니다 - 소개 및 섹션.

답변2

에 따르면KB832223

원인

이 문제는 Windows Server DNS에서 지원되는 DNS용 확장 메커니즘(EDNS0) 기능으로 인해 발생합니다.

EDNS0은 더 큰 UDP(사용자 데이터그램 프로토콜) 패킷 크기를 허용합니다. 그러나 일부 방화벽 프로그램에서는 512바이트보다 큰 UDP 패킷을 허용하지 않을 수 있습니다. 따라서 이러한 DNS 패킷은 방화벽에 의해 차단될 수 있습니다.

Microsoft는 다음과 같은 해결책을 가지고 있습니다.

해결

이 문제를 해결하려면 512바이트보다 큰 UDP 패킷을 인식하고 허용하도록 방화벽 프로그램을 업데이트하십시오. 이를 수행하는 방법에 대한 자세한 내용은 방화벽 프로그램 제조업체에 문의하십시오.

Microsoft에서는 이 문제를 해결하기 위해 다음과 같은 제안을 제시합니다.

해결 방법

이 문제를 해결하려면 Windows 기반 DNS 서버에서 EDNS0 기능을 끄십시오. 이렇게 하려면 다음 조치를 취하십시오.

명령 프롬프트에서 다음 명령을 입력한 후 Enter 키를 누릅니다.

dnscmd /config /enableednsprobes 0

참고 이 명령에서 "enableednsprobes" 뒤에 문자 "O"가 아닌 0(영)을 입력하십시오.

관련 정보