(重写这个问题的大部分,因为根据新的信息,我的许多原始testing是无关紧要的)
我与Server 2012 R2 DNS服务器有问题。 这些问题的最大的副作用是Exchange电子邮件不通过。 在尝试Alogging之前交换对AAAAlogging的查询。 当它看到SERVFAIL的AAAAlogging,它甚至不尝试Alogging,它只是放弃。
对于某些域,当查询我的活动目录DNS服务器时,我得到SERVFAIL而不是NOERROR而没有结果。
我已经尝试了几个不同的运行DNS的Server 2012 R2域控制器。 其中之一是一个完全独立的域,在不同的防火墙和互联网连接背后的networking上。
我知道导致这个问题的两个地址是smtpgw1.gov.on.ca
和mxmta.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
其他注意事项:
dig @192.168.5.5 -t AAAA serverfault.com
返回NOERROR,并且没有结果。 google.com
同样的事情正确地返回谷歌的IPv6地址。 我已经安装了另外一个非域join的服务器2012R2机器,并安装了DNS服务器angular色,并使用命令nslookup -type=aaaa smtpgw1.gov.on.ca localhost
进行了testing。 它没有相同的问题。
两台虚拟机位于相同的主机和同一networking上,因此可以消除任何networking/防火墙问题。 现在是修补程序级别,或者是成为区域成员/域控制器的区别。
应用所有更新,没有任何区别。 仔细检查一下,我的新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”。