排查 DNS 服务器问题

尝试我们的虚拟代理 - 它可以帮助你快速识别和修复常见的 DNS 问题。

本文讨论如何排查有关 DNS 服务器的错误。

检查 IP 配置

  1. 在命令提示符处运行 ipconfig /all,并验证 IP 地址、子网掩码和默认网关。

  2. 检查正在查找的 DNS 服务器的名称是否获得授权。 如果已获得授权,请参阅检查权威数据是否存在问题

  3. 运行以下命令:

    nslookup <name> <IP address of the DNS server>
    

    例如:

    nslookup app1 10.0.0.1
    

    如果收到失败或响应超时消息,请参阅检查是否存在递归问题

  4. 刷新解析程序缓存。 为此,请在管理命令提示符窗口中运行以下命令:

    dnscmd /clearcache
    

    或者,在管理 PowerShell 窗口中运行以下 cmdlet:

    Clear-DnsServerCache
    
  5. 重复步骤 3。

检查 DNS 服务器问题

事件日志

查看以下日志,以了解是否有任何已记录的错误:

  • 应用程序

  • System

  • DNS 服务器

使用 nslookup 查询进行测试

运行以下命令并检查是否可以从客户端计算机访问 DNS 服务器。

nslookup <client name> <server IP address>
  • 如果解析程序返回客户端的 IP 地址,则服务器没有任何问题。

  • 如果解析程序返回“服务器故障”或“查询被拒绝”响应,则区域可能会暂停,或者服务器可能重载。 可查看 DNS 控制台中区域属性的“常规”选项卡来了解它是否已暂停。

如果解析程序返回“对服务器的请求超时”或“服务器无响应”响应,则表示 DNS 服务可能未运行。 尝试通过在服务器上的命令提示符处输入以下内容来重启 DNS 服务器服务:

net start DNS

如果在服务运行时出现问题,服务器可能未侦听 nslookup 查询中使用的 IP 地址。 在 DNS 控制台中服务器属性页的“接口”选项卡上,管理员可以限制 DNS 服务器仅侦听所选地址。 如果已将 DNS 服务器配置为将服务限制为其已配置的 IP 地址的特定列表,则用于联系 DNS 服务器的 IP 地址可能不在列表中。 可以尝试列表中的其他 IP 地址,或将 IP 地址添加到列表中。

在极少数情况下,DNS 服务器可能具有高级安全或防火墙配置。 如果服务器位于只能通过中间主机(如数据包筛选路由器或代理服务器)访问的另一个网络中,则 DNS 服务器可以使用非标准端口监听和接收客户端请求。 默认情况下,nslookup 将查询发送使用 UDP 端口 53 的 DNS 服务器。 因此,如果 DNS 服务器使用任何其他端口,nslookup 查询会失败。 如果你认为这可能是问题所在,请检查是否有意使用中间筛选器来阻止已知 DNS 端口上的流量。 如果不是,请尝试修改防火墙上的数据包筛选器或端口规则,以允许 UDP/TCP 端口 53 上的流量。

检查权威数据是否存在问题

检查返回错误响应的服务器是区域的主服务器(区域的标准主服务器或使用 Active Directory 集成加载区域的服务器)还是托管区域辅助副本的服务器。

如果该服务器是主服务器

此问题可能是由用户向区域输入数据时出现的用户错误引起的。 或者,这可能是由影响 Active Directory 复制或动态更新的问题引起的。

如果该服务器托管区域辅助副本

  1. 检查主服务器(此服务器从中拉取区域传送的服务器)上的区域。

    注意

    可以通过查看 DNS 控制台中辅助区域的属性来确定哪个服务器是主服务器。

    如果主服务器上的名称不正确,请转到步骤 4。

  2. 如果主服务器上的名称正确,请检查主服务器上的序列号是否小于或等于辅助服务器上的序列号。 如果是,请修改主服务器或辅助服务器,使主服务器上的序列号大于辅助服务器上的序列号。

  3. 在辅助服务器上,从 DNS 控制台中或通过运行以下命令强制进行区域传送:

    dnscmd /zonerefresh <zone name>
    

    例如,如果区域为 corp.contoso.com,请输入:dnscmd /zonerefresh corp.contoso.com

  4. 再次检查辅助服务器以查看是否已正确传送区域。 如果没有,则可能存在区域传送问题。 有关详细信息,请参阅区域传送问题

  5. 如果区域已正确传送,请检查数据现在是否正确。 如果情况并非如此,则主要区域中的数据不正确。 此问题可能是由用户向区域输入数据时出现的用户错误引起的。 或者,这可能是由影响 Active Directory 复制或动态更新的问题引起的。

检查是否存在递归问题

为了让递归成功运行,递归查询路径中使用的所有 DNS 服务器必须能够进行响应,并转发正确的数据。 如果它们不能执行上述操作,则递归查询可能会由于以下原因而失败:

  • 查询在完成之前超时。

  • 查询期间使用的服务器无法响应。

  • 查询期间使用的服务器提供错误数据。

开始对原始查询中使用的服务器进行故障排除。 通过查看 DNS 控制台中服务器属性中的“转发器”选项卡,检查此服务器是否将查询转发到另一台服务器。 如果选中了“启用转发器”复选框,并且列出了一台或多台服务器,则此服务器将转发查询。

如果此服务器确实将查询转发到另一台服务器,请检查是否存在会影响此服务器向其转发查询的服务器的问题。 若要检查是否存在问题,请参阅检查 DNS 服务器问题。 当该部分指示你在客户端上执行任务时,请改为在服务器上执行该任务。

如果服务器运行正常且可以转发查询,请重复此步骤,并检查此服务器向其转发查询的服务器。

如果此服务器不会将查询转发到另一台服务器,请测试此服务器是否可以查询根服务器。 为此,请运行以下命令:

nslookup
server <IP address of server being examined>
set q=NS
  • 如果解析程序返回根服务器的 IP 地址,则根服务器与你尝试解析的名称或 IP 地址之间的委派可能已中断。 按照测试中断的委派过程来确定委派中断的位置。

  • 如果解析程序返回“对服务器的请求超时”响应,请检查根目录提示是否指向正常运行的根服务器。 为此,请使用查看当前根目录提示过程。 如果根目录提示确实指向正常运行的根服务器,则可能存在网络问题,或者服务器可能使用阻止解析程序查询服务器的高级防火墙配置,如检查 DNS 服务器问题部分中所述。 也可能是默认递归超时时间过短。

测试中断的委派

通过查询有效的根服务器,按照以下过程开始测试。 该测试将引导你完成查询所有 DNS 服务器(从根服务器到要测试是否委派中断的服务器)的过程。

  1. 在要测试的服务器上的命令提示符处,输入以下内容:

    nslookup
    server <server IP address>
    set norecursion
    set querytype= <resource record type>
    <FQDN>
    

    注意

    资源记录类型是在原始查询中所查询的资源记录类型,FQDN 是所查询的 FQDN(以句点结束)。

  2. 如果响应包含委派服务器的“NS”和“A”资源记录列表,请对每台服务器重复步骤 1,并使用“A”资源记录中的 IP 地址作为服务器 IP 地址。

    • 如果响应不包含“NS”资源记录,则表示委派中断。

    • 如果响应包含“NS”资源记录,但不包含“A”资源记录,请输入“设置递归”,并单独查询“NS”记录中列出的服务器的“A”资源记录。 如果对于区域中的每个 NS 资源记录,找不到“A”资源记录的至少一个有效 IP 地址,则表示委派中断。

  3. 如果确定委派中断,请通过使用委派区域的正确 DNS 服务器的有效 IP 地址,在父区域中添加或更新“A”资源记录来修复此问题。

查看当前根目录提示

  1. 启动 DNS 控制台。

  2. 添加或连接到递归查询失败的 DNS 服务器。

  3. 右键单击该服务器,并选择“属性”。

  4. 单击“根目录提示”。

检查与根服务器的基本连接。

  • 如果根目录提示看上去配置正确,请验证失败的名称解析中使用的 DNS 服务器是否可以通过 IP 地址对根服务器进行 ping 操作。

  • 如果根服务器未响应通过 IP 地址进行的 ping 操作,则根服务器的 IP 地址可能已更改。 但是,很少对根服务器进行重新配置。

区域传送问题

运行以下检查:

  • 检查主 DNS 服务器和辅助 DNS 服务器的事件查看器。

  • 检查主服务器以查看它是否出于安全原因拒绝发送传送内容。

  • 查看 DNS 控制台中区域属性的“区域传送”选项卡。 如果服务器将区域传送限制为服务器列表(如区域属性的“名称服务器”选项卡上列出的服务器),请确保辅助服务器位于该列表中。 确保将服务器配置为发送区域传送。

  • 按照检查 DNS 服务器问题部分中的步骤检查主服务器是否存在问题。 当系统提示你在客户端上执行任务时,请改为在辅助服务器上执行该任务。

  • 检查辅助服务器是否正在运行另一个 DNS 服务器实现,例如 BIND。 如果是,则此问题可能是以下原因之一导致的:

    • Windows 主服务器可能被配置为发送快速区域传送,但第三方辅助服务器可能不支持快速区域传送。 如果情况如此,请从 DNS 控制台中通过在服务器属性的“高级”选项卡上选中“启用 Bind 辅助区域”复选框,禁用主服务器上的快速区域传送。

    • 如果 Windows 服务器上的前向查找区域包含辅助服务器不支持的记录类型(例如 SRV 记录),则辅助服务器在拉取区域时可能会遇到问题。

检查主服务器是否正在运行另一个 DNS 服务器实现,例如 BIND。 如果是,则主服务器上的区域可能包含 Windows 无法识别的不兼容资源记录。

如果主服务器或辅助服务器正在运行另一个 DNS 服务器实现,请检查这两台服务器以确保它们支持相同的功能。 可以在 DNS 控制台中服务器属性页的“高级”选项卡上检查 Windows 服务器。 除了“启用 Bind 辅助区域”框外,此页还包括“名称检查”下拉列表。 这使你能够选择对 DNS 名称中的字符强制实施严格的 RFC 合规性。