你已将转发器、条件转发器或根提示配置为对外部名称执行名称查找。 但是,不能使用 nslookup
或 Resolve-DnsName
. 本文介绍如何排查与域名系统(DNS)转发器相关的名称解析失败问题。
症状分析
检查无法解析名称的客户端是外部名称还是内部客户端。
如果问题特定于内部域或外部名称,此信息可帮助你查看 DNS 服务器上的域特定配置。检查所有客户端是否都面临此问题,还是仅针对特定客户端。
这样做有助于隔离问题是否特定于 DNS 转发服务器。检查 DNS 服务器。
- 如果名称解析从客户端失败,请检查名称解析是否也从配置了首选 DNS 服务器失败。
- 检查解析是否从 DNS 服务器本身失败。 如果是这样,则可以排除客户端或客户端与 DNS 服务器之间的网络任何问题。
故障排除流程图
疑难解答步骤
步骤 1:检查客户端与 DNS 服务器之间的网络连接
验证 DNS 配置。
ipconfig /all
在客户端上运行并确认配置了正确的 DNS 服务器 IP。 如果不正确,请使用以下命令对其进行配置:Set-DnsClientServerAddress -InterfaceAlias "Interface-Name" -ServerAddresses ("IP1")
检查 UDP 端口 53 通信。 确保允许客户端与 DNS 服务器之间的 UDP 端口 53 通信。
执行从客户端到 DNS 服务器的 ping 测试,反之亦然,以确保基本的网络连接。
步骤 2:检查 DNS 服务器配置
请按照以下步骤验证是否已正确配置此 DNS 服务器,以便能够解析不是本地名称本身。
检查是否为有问题的域配置了条件转发器:
Get-DnsServerZone -Name <domainname>
如果未找到条件转发器,请检查是否配置了常规转发器:
Get-DnsServerForwarder
验证 Useroothints 是否设置为 TRUE。
如果未配置转发器,请检查根提示:
Get-DnsServerRootHint
如果未配置任何名称,则名称解析应失败。 如果是内部域,则需继续创建条件转发器;如果是外部域(最好)创建转发器。
注意
条件转发器或转发器(即 DNS 服务器)需要具有名称的记录,或需要配置为解析名称。
步骤 3:检查 DNS 服务状态和连接性
确保 DNS 服务器服务同时在转发和转发器 DNS 服务器上运行:
Get-Service -Name DNS
如果服务未运行,请启动该服务:
Start-Service -Name DNS
确保允许 DNS 转发服务器与转发器服务器之间的 UDP 端口 53 通信。
步骤 4:收集网络捕获以跟踪 DNS 数据包
在客户端计算机上捕获网络之前,始终建议清除 DNS 客户端缓存:
ipconfig /flushdns
然后,使用以下步骤收集网络捕获:
- 在客户端、DNS 服务器和转发器上启动网络捕获工具(例如 Wireshark)。
- 在客户端上执行
nslookup <name>
以重现失败。 - 停止捕获并查看跟踪。 筛选 UDP 端口 53 以查看相关的 DNS 流量。
分析方案。
以下部分列出了可能会遇到的几种方案。 这些方案涉及条件转发器配置,但如果处理标准转发器,则故障排除步骤相同。
方案 1:网络延迟或超时
DNS 名称服务器 192.168.10.10 将查询转发到第一个转发器 192.168.5.5。 由于网络延迟或中间网络问题,响应不会在 ForwarderTimeout 期间到达 DNS 服务器。 因此,DNS 服务器将查询转发到其配置的下一个转发器,即 192.168.5.6。 同样,由于延迟或中间网络问题,响应不会到达 DNS 服务器。 由于 DNS 服务器无法提取查询 nodeA.contoso.com
的响应,因此它会向客户端发送“服务器失败”响应。
解决方法:与网络团队协作以解决延迟问题。 如果预计延迟,请确保 DNS 服务器有足够的时间等待条件转发器做出的响应,然后再通过增加 ForwarderTimeout 和 RecursionTimeout 时间段来超时。
为此,请参阅 NET:DNS:转发器和条件转发器解析超时。
方案 2:转发器拒绝的查询
DNS 名称服务器 192.168.10.10 将查询转发到条件转发器 192.168.5.5。 在此服务器上,如果有任何策略配置为拒绝或拒绝特定记录或区域的查询,则条件转发器将使用“拒绝”响应响应响应转发 DNS 名称服务器。 现在,DNS 服务器将反过来将此错误转发到客户端,因为服务器失败。 DNS 服务器不会联系第二个条件转发器,因为我们已收到第一个条件转发器(即使这是错误响应)
解决方法:如果转发器是Microsoft Windows DNS 服务器,请检查在条件转发器上配置的任何 DNS 查询解析策略,以“拒绝”区域 fab.com
或某些记录的查询,例如 NodeA.fab.com
。 可以使用命令 get-dnsserverqueryresolutionpolicy
获取已配置策略的列表。 为此,请参阅 Get-DnsServerQueryResolutionPolicy。
如果不应放置任何此类策略,请将其删除以解决问题。
如果是第三方 DNS 服务器,请联系相应的供应商。
方案 3:转发器上缺少记录
DNS 名称服务器 192.168.10.10 将查询转发到第一个条件转发器 192.168.5.5。 在条件转发器上,区域下fab.com
的名称没有主机 A 记录NodeA
。 在这种情况下,条件转发器使用“名称错误”响应响应响应 DNS 服务器。 然后,DNS 服务器会将相同的响应转发给客户端。 DNS 服务器不会在此处联系第二个条件转发器,因为我们已收到来自第一个条件转发服务器的响应。 通常,如果发生这种情况,则会看到某些名称解析失败的症状,不一定是域的所有名称 fab.com
。
解决方法:为相关区域的转发器注册缺失记录,无论是静态还是动态。
数据收集
如果需要Microsoft支持的帮助,建议在联系Microsoft支持人员之前收集有关问题的信息。
- 按照 TroubleShootingScript 工具集简介(TSS)中提供的步骤,使用 TSS 工具下载和收集日志。
- 运行以下命令,在受影响的计算机上启用日志收集:
在 DNS 服务器上:
.\TSS.ps1 -Scenario NET_DNSsrv
在 DNS 客户端上:
.\TSS.ps1 -Scenario NET_DNScli