(重写这个问题的大部分,因为根据新的信息,我的许多原始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”。