服务器2012 R2 DNS服务器返回SERVFAIL一些AAAA查询

(重写这个问题的大部分,因为根据新的信息,我的许多原始testing是无关紧要的)

我与Server 2012 R2 DNS服务器有问题。 这些问题的最大的副作用是Exchange电子邮件不通过。 在尝试Alogging之前交换对AAAAlogging的查询。 当它看到SERVFAIL的AAAAlogging,它甚至不尝试Alogging,它只是放弃。

对于某些域,当查询我的活动目录DNS服务器时,我得到SERVFAIL而不是NOERROR而没有结果。

我已经尝试了几个不同的运行DNS的Server 2012 R2域控制器。 其中之一是一个完全独立的域,在不同的防火墙和互联网连接背后的networking上。

我知道导致这个问题的两个地址是smtpgw1.gov.on.camxmta.owm.bell.net

我一直在使用Linux机器上进行testing(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 

正如我所说,我已经尝试了两个不同的networking和域名。 一个是全新的域名,它绝对具有DNS的所有默认设置。 另一个已经迁移到Server 2012,所以从2003/2008年的一些旧设置可能已经结转。 他们两个都得到相同的结果。

使用dmscnd /config /enableednsprobes 0禁用EDNS dmscnd /config /enableednsprobes 0修复了这个问题。 我发现许多关于EDNS的search结果在Server 2003中是一个问题,但是与Server 2012中看到的结果并不相符。防火墙在EDNS上都没有问题。 禁用EDNS应该只是一个临时的解决方法,但它可以防止使用DNSSEC,并可能导致其他问题。

我也看到一些有关服务器2008R2和EDNS的问题,但是这些post说事情在Server 2012中是固定的,所以它应该正常工作。

我也尝试启用DNS的debugging日志。 我可以看到我预期的数据包,但是为什么它返回SERVFAIL并没有给我太多的见解。 以下是DNS服务器debugging日志的相关部分:

第一个数据包 – 从客户端查询到我的DNS服务器

 (2)on(2)ca(0)(10)
在000000EFF1BF01A0 UDP问题信息
   Socket = 508
  远程地址172.16.0.254,端口50764
  时间查询= 4556080,排队= 0,到期= 0
   Buf长度= 0x0fa0(4000)
  消息长度= 0x002e(46)
  信息:
     XID 0xa61e
    标志0x0120
       QR 0(问题)
      操作码0(查询)
       AA 0
       TC 0
       RD 1
       RA 0
       Z 0
       CD 0
       AD 1
       RCODE 0(NOERROR)
     QCOUNT 1
     ACOUNT 0
     NSCOUNT 0
     ARCOUNT 1
    问题部分:
    偏移量= 0x000c,RR计数= 0
    名称“(7)smtpgw1(3)gov(2)on(2)ca(0)”
       QTYPE AAAA(28)
       QCLASS 1
    答案部分:
      空
    授权部分:
      空
    附加部分:
    偏移量= 0x0023,RR计数= 0
    名称“(0)”
       TYPE OPT(41)
       4096级
       TTL 0
       DLEN 0
      数据   
        缓冲区大小= 4096
         Rcode Ext = 0
         Rcode全= 0
        版本= 0
        标志= 0

第二个数据包 – 从我的DNS服务器查询到他们的DNS服务器

 2015年10月16日上午9点42分29秒0974分组000000EFF0A22160 UDP Snd 204.41.8.237 3e6c Q [0000 NOERROR] AAAA(7)smtpgw1(3)gov(2)on(2)ca(0)
 UDP问题信息在000000EFF0A22160
   Socket = 9812
  远程地址204.41.8.237,端口53
  时间查询= 0,排队= 0,到期= 0
   Buf长度= 0x0fa0(4000)
  消息长度= 0x0023(35)
  信息:
     XID 0x3e6c
    标志0x0000
       QR 0(问题)
      操作码0(查询)
       AA 0
       TC 0
       RD 0
       RA 0
       Z 0
       CD 0
       AD 0
       RCODE 0(NOERROR)
     QCOUNT 1
     ACOUNT 0
     NSCOUNT 0
     ARCOUNT 0
    问题部分:
    偏移量= 0x000c,RR计数= 0
    名称“(7)smtpgw1(3)gov(2)on(2)ca(0)”
       QTYPE AAAA(28)
       QCLASS 1
    答案部分:
      空
    授权部分:
      空
    附加部分:
      空

第三个数据包 – 来自其DNS服务器的响应(NOERROR)

 (2)ca(0)上的(2)smtpgw1(3)gov(2)10/16/2015 9:42:29 AM 0974 PACKET 000000EFF2188100 UDP Rcv 204.41.8.237 3e6c RQ [0084 A NOERROR]
 UDP响应信息在000000EFF2188100
   Socket = 9812
  远程地址204.41.8.237,端口53
  时间查询= 4556080,排队= 0,到期= 0
   Buf长度= 0x0fa0(4000)
  消息长度= 0x0023(35)
  信息:
     XID 0x3e6c
    标志为0x8400
       QR 1(RESPONSE)
      操作码0(查询)
       AA 1
       TC 0
       RD 0
       RA 0
       Z 0
       CD 0
       AD 0
       RCODE 0(NOERROR)
     QCOUNT 1
     ACOUNT 0
     NSCOUNT 0
     ARCOUNT 0
    问题部分:
    偏移量= 0x000c,RR计数= 0
    名称“(7)smtpgw1(3)gov(2)on(2)ca(0)”
       QTYPE AAAA(28)
       QCLASS 1
    答案部分:
      空
    授权部分:
      空
    附加部分:
      空

第四个数据包 – 从我的DNS服务器到客户端(SERVFAIL)的响应

 10/16/2015 9:42:29 AM 0974 PACKET 000000EFF1BF01A0 UDP Snd 172.16.0.254 a61e RQ [8281 DR SERVFAIL] AAAA(7)smtpgw1(3)gov(2)on(2)ca(0)
 UDP响应信息在000000EFF1BF01A0
   Socket = 508
  远程地址172.16.0.254,端口50764
  时间查询= 4556080,排队= 4556080,到期= 4556083
   Buf长度= 0x0fa0(4000)
  消息长度= 0x002e(46)
  信息:
     XID 0xa61e
    标志0x8182
       QR 1(RESPONSE)
      操作码0(查询)
       AA 0
       TC 0
       RD 1
       RA 1
       Z 0
       CD 0
       AD 0
       RCODE 2(SERVFAIL)
     QCOUNT 1
     ACOUNT 0
     NSCOUNT 0
     ARCOUNT 1
    问题部分:
    偏移量= 0x000c,RR计数= 0
    名称“(7)smtpgw1(3)gov(2)on(2)ca(0)”
       QTYPE AAAA(28)
       QCLASS 1
    答案部分:
      空
    授权部分:
      空
    附加部分:
    偏移量= 0x0023,RR计数= 0
    名称“(0)”
       TYPE OPT(41)
       CLASS 4000
       TTL 0
       DLEN 0
      数据   
        缓冲区大小= 4000
         Rcode Ext = 0
         Rcode全= 2
        版本= 0
        标志= 0

其他注意事项:

  • 其中一个networking具有本地IPv6互联网访问,另一个不具有IPv6networking访问权限(但使用默认设置在服务器上启用IPv6堆栈)。 似乎不是一个IPv6networking问题
  • 它不会影响所有域。 例如dig @192.168.5.5 -t AAAA serverfault.com返回NOERROR,并且没有结果。 google.com同样的事情正确地返回谷歌的IPv6地址。
  • 试图从KB3014171安装修补程序,没有任何区别。
  • KB3004539的更新已经安装。

编辑2015年11月7日

我已经安装了另外一个非域join的服务器2012R2机器,并安装了DNS服务器angular色,并使用命令nslookup -type=aaaa smtpgw1.gov.on.ca localhost进行了testing。 它没有相同的问题。

两台虚拟机位于相同的主机和同一networking上,因此可以消除任何networking/防火墙问题。 现在是修补程序级别,或者是成为区域成员/域控制器的区别。

编辑2015年11月8日

应用所有更新,没有任何区别。 仔细检查一下,我的新testing服务器和我的域控制器的DNS设置之间是否存在任何configuration差异,并且有 – 域控制器已经安装了转发器。

现在,我敢肯定,我尝试与转发器,并没有在我最初的testing,但我只尝试使用从Linux机器dig 。 当我在Windows机器上使用nslookup时,在有和没有转发器设置的情况下(使用Google,OpenDNS,4.2.2.1和我的ISP DNS服务器),我会得到稍微不同的结果。

随着转发器集,我得到Server failed

没有转发器(所以它使用根DNS服务器),我得到了No IPv6 address (AAAA) records available for smtpgw1.gov.on.ca

但是这与我没有获得IPv6logging的其他域名不一样 – windows上的nslookup只是不会返回其他域名的结果。

有或没有转发器, dig查询我的Windows DNS服务器时仍然显示SERVFAIL这个名字。

问题域和其他看起来相关的域之间有一点区别,即使我不涉及我的Windows DNS服务器:

dig -t aaaa @8.8.8.8 smtpgw1.gov.on.ca没有答案,也没有权威部分。

dig -t aaaa @8.8.8.8 serverfault.com返回任何答案,但确实有权限部分。 所以,我尝试的大部分其他领域,无论使用什么parsing器。

那么,为什么权限部分丢失,为什么Windows DNS服务器在其他DNS服务器不能将其视为失败呢?

    我仔细研究了networking,做了一些阅读。 AAAAlogging的请求在不存在的情况下返回一个SOA。 原来,SOA是针对被请求的不同域。 我怀疑这就是Windows拒绝回应的原因。 为mx.atomwide.com请求AAAA。 针对lgfl.org.uk的响应SOA 我会看看我们是否可以用这些信息取得一些进展。 编辑:仅供将来参考,暂时closures“防止污染的caching”将允许查询成功。 不理想,但certificate这个问题是一个狡猾的DNSlogging。 RFC4074也是一个很好的参考 – 介绍和部分。

    根据KB832223

    原因

    出现此问题的原因是Windows Server DNS中支持的DNS扩展机制(EDNS0)function。

    EDNS0允许更大的用户数据报协议(UDP)数据包大小。 但是,某些防火墙程序可能不允许大于512字节的UDP数据包。 因此,这些DNS数据包可能会被防火墙阻止。

    微软有以下决议:

    parsing度

    要解决此问题,请更新防火墙程序以识别并允许大于512字节的UDP数据包。 有关如何执行此操作的更多信息,请联系您的防火墙程序的制造商。

    Microsoft有以下build议解决此问题:

    解决方法

    要解决此问题,请closures基于Windows的DNS服务器上的EDNS0function。 要做到这一点,采取以下行动:

    在命令提示符处,键入以下命令,然后按Enter键:

    dnscmd /config /enableednsprobes 0

    注意在此命令中的“enableednsprobes”之后键入一个0(零)而不是字母“O”。