Gra*_*ant 17 domain-name-system active-directory mx-record
(重写此问题的大部分内容,因为根据新信息,我的许多原始测试都无关紧要)
我在使用 Server 2012R2 DNS 服务器时遇到问题。这些问题的最大副作用是 Exchange 电子邮件无法通过。在尝试 A 记录之前交换 AAAA 记录的查询。当它看到 AAAA 记录的 SERVFAIL 时,它甚至不尝试 A 记录,它只是放弃。
对于某些域,当查询我的活动目录 DNS 服务器时,我得到 SERVFAIL 而不是 NOERROR 并且没有结果。
我已经从几个不同的运行 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
Run Code Online (Sandbox Code Playgroud)
但是对公共域控制器的查询按预期工作:
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
Run Code Online (Sandbox Code Playgroud)
正如我所说,我已经在两个不同的网络和域上尝试过这个。一个是全新的域,它绝对具有 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 服务器
10/16/2015 9:42:29 AM 0974 PACKET 000000EFF1BF01A0 UDP Rcv 172.16.0.254 a61e Q [2001 D NOERROR] AAAA (7)smtpgw1(3)gov(2)0)(2)ca
UDP 问题信息位于 000000EFF1BF01A0
插座 = 508
远程地址 172.16.0.254,端口 50764
时间查询=4556080,排队=0,过期=0
缓冲区长度 = 0x0fa0 (4000)
消息长度 = 0x002e (46)
信息:
XID 0xa61e
标志 0x0120
QR 0(问题)
操作码 0(查询)
AA 0
0
RD 1
RA 0
0
光盘 0
公元1
RCODE 0(无错误)
QCOUNT 1
帐号 0
NSCOUNT 0
帐户 1
问题部分:
偏移 = 0x000c,RR 计数 = 0
名称“(7)smtpgw1(3)gov(2)on(2)ca(0)”
QTYPE AAAA (28)
QCLASS 1
回答部分:
空的
权威部分:
空的
附加部分:
偏移 = 0x0023,RR 计数 = 0
名称“(0)”
类型选择 (41)
4096级
TTL 0
DLEN 0
数据
缓冲区大小 = 4096
Rcode Ext = 0
Rcode 全 = 0
版本 = 0
标志 = 0
第二个数据包 - 从我的 DNS 服务器查询到他们的 DNS 服务器
10/16/2015 9:42:29 AM 0974 PACKET 000000EFF0A22160 UDP Snd 204.41.8.237 3e6c Q [0000 NOERROR] AAAA (7)smtpgw1(3)gov(2)0)on(2)
UDP 问题信息位于 000000EFF0A22160
插座 = 9812
远程地址 204.41.8.237,端口 53
时间查询=0,排队=0,过期=0
缓冲区长度 = 0x0fa0 (4000)
消息长度 = 0x0023 (35)
信息:
XID 0x3e6c
标志 0x0000
QR 0(问题)
操作码 0(查询)
AA 0
0
0
RA 0
0
光盘 0
广告 0
RCODE 0(无错误)
QCOUNT 1
帐号 0
NSCOUNT 0
帐户 0
问题部分:
偏移 = 0x000c,RR 计数 = 0
名称“(7)smtpgw1(3)gov(2)on(2)ca(0)”
QTYPE AAAA (28)
QCLASS 1
回答部分:
空的
权威部分:
空的
附加部分:
空的
第三个数据包 - 来自他们的 DNS 服务器的响应(NOERROR)
10/16/2015 9:42:29 AM 0974 PACKET 000000EFF2188100 UDP Rcv 204.41.8.237 3e6c RQ [0084 A NOERROR] AAAA (7)smtpgw1(3)gov(2)0(2)0
UDP 响应信息位于 000000EFF2188100
插座 = 9812
远程地址 204.41.8.237,端口 53
时间查询=4556080,排队=0,过期=0
缓冲区长度 = 0x0fa0 (4000)
消息长度 = 0x0023 (35)
信息:
XID 0x3e6c
标志 0x8400
QR 1(响应)
操作码 0(查询)
AA 1
0
0
RA 0
0
光盘 0
广告 0
RCODE 0(无错误)
QCOUNT 1
帐号 0
NSCOUNT 0
帐户 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)2)gov(2)
000000EFF1BF01A0 处的 UDP 响应信息
插座 = 508
远程地址 172.16.0.254,端口 50764
时间查询=4556080,排队=4556080,过期=4556083
缓冲区长度 = 0x0fa0 (4000)
消息长度 = 0x002e (46)
信息:
XID 0xa61e
标志 0x8182
QR 1(响应)
操作码 0(查询)
AA 0
0
RD 1
RA 1
0
光盘 0
广告 0
RCODE 2(SERVFAIL)
QCOUNT 1
帐号 0
NSCOUNT 0
帐户 1
问题部分:
偏移 = 0x000c,RR 计数 = 0
名称“(7)smtpgw1(3)gov(2)on(2)ca(0)”
QTYPE AAAA (28)
QCLASS 1
回答部分:
空的
权威部分:
空的
附加部分:
偏移 = 0x0023,RR 计数 = 0
名称“(0)”
类型选择 (41)
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的回报Google的IPv6地址正确。我已经设置了另一台非域加入的 Server 2012R2 机器,并安装了 DNS 服务器角色,并使用命令进行了测试nslookup -type=aaaa smtpgw1.gov.on.ca localhost。它没有相同的问题。
两个 VM 位于同一主机和同一网络上,因此消除了任何网络/防火墙问题。现在取决于补丁级别或作为域成员/域控制器的不同之处。
应用所有更新,没有任何区别。仔细检查我的新测试服务器和域控制器的 DNS 设置之间是否存在任何配置差异,并且有 - 域控制器设置了转发器。
现在,我确定我在初始测试中尝试过使用转发器而没有尝试过,但我只dig在 linux 机器上尝试过使用它。当我在 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不返回任何答案,但确实有一个权威部分。无论我使用什么解析器,我尝试的大多数其他域也是如此。
那么为什么缺少该权限部分,为什么 Windows DNS 服务器将其视为故障而其他 DNS 服务器没有呢?
根据KB832223
原因
出现此问题的原因是 Windows Server DNS 支持 DNS 扩展机制 (EDNS0) 功能。
EDNS0 允许更大的用户数据报协议 (UDP) 数据包大小。但是,某些防火墙程序可能不允许大于 512 字节的 UDP 数据包。因此,这些DNS数据包可能会被防火墙拦截。
微软有以下解决方案:
解决
要解决此问题,请更新防火墙程序以识别并允许大于 512 字节的 UDP 数据包。有关如何执行此操作的更多信息,请联系防火墙程序的制造商。
Microsoft 提出以下建议来解决该问题:
解决方法
要解决此问题,请关闭基于 Windows 的 DNS 服务器上的 EDNS0 功能。为此,请执行以下操作:
在命令提示符处,键入以下命令,然后按 Enter:
dnscmd /config /enableednsprobes 0注意 在此命令的“enableednsprobes”后面键入 0(零)而不是字母“O”。
| 归档时间: |
|
| 查看次数: |
9934 次 |
| 最近记录: |