DNS 服务器服务支持老化和清理功能。这些功能作为一种机制,用于清理和删除随时间推移而积累于区域数据中的过时资源记录。

借助动态更新功能,计算机在网络上启动时可以将资源记录自动添加到区域。但是,在某些情况下,计算机离开网络时,不会自动删除这些记录。例如,如果计算机在启动时注册自己的主机 (A) 资源记录,且稍后以不正确的方式与网络断开连接,则可能不会删除其主机 (A) 资源记录。如果网络中有移动用户和计算机,则可能频繁发生这种情况。

如果保持为不受管理的状态,则区域数据中过时资源记录的存在可能会导致一些问题:

  • 如果大量过时的资源记录保留在区域中,则它们最终会占用服务器磁盘空间并导致不必要的长时间区域传送。

  • 加载包含了过时资源记录的区域的域名系统 (DNS) 服务器可能使用过期的信息来应答客户端查询,这可能会导致客户端在网络上遇到名称解析问题。

  • 在 DNS 服务器上累积过时资源记录会降低服务器的性能和响应速度。

  • 在某些情况下,区域中存在过时资源记录会阻止其他计算机或主机设备使用 DNS 域名。

为解决这些问题,DNS 服务器服务提供了下列功能:

  • 时间戳,基于在服务器计算机上设置的当前日期和时间,用于以动态方式添加到主要类型区域中的所有资源记录。此外,时间戳记录在启用了老化和清理的标准主要区域中。

    对于手动添加的资源记录,使用的时间戳值为零,表明这些记录不受老化过程影响,它们可以无限期地保留在区域数据中,除非您更改其时间戳或将其删除。

  • 所有合格区域在本地数据中的资源记录的老化,基于指定的刷新时间段。

    只有由 DNS 服务器服务加载的主要类型区域才有资格参与此过程。

  • 超过指定的刷新期间仍然存在的所有资源记录的清理。

    DNS 服务器在执行清理操作时,可以确定资源记录已老化到过时时间点并从区域数据中将这些记录删除。可以将服务器配置为自动执行重复清理操作,也可以在服务器上启动立即清理操作。

    有关详细信息,请参阅启用过时资源记录的自动清理启动立即清理过时资源记录

小心

默认情况下,DNS 服务器服务的老化和清理机制处于禁用状态。只有在完全了解所有参数时,才应启用该功能。否则,可能会将服务器意外地配置为删除不应删除的记录。如果意外地删除了记录,则不仅用户无法解析该记录的查询,而且任何用户都可以创建记录并获得该记录的所有权,即使在配置为进行安全动态更新的区域上也是如此。

服务器将使用每个资源记录特定的时间戳的内容以及可调整或配置的其他老化和清理属性,来确定清理记录的时间。

老化和清理的前提条件

可以使用 DNS 的老化和清理功能之前,必须满足下列几个条件:

  1. 必须在 DNS 服务器和区域上启用清理和老化。

    默认情况下,资源记录的老化和清理处于禁用状态。

  2. 必须以动态方式将资源记录添加到区域,或手动修改这些记录以便在老化和清理操作中使用。

    通常,只有使用 DNS 动态更新协议以动态方式添加的那些资源记录才接受老化和清理。

    另外,还可以对通过非动态方式添加的其他资源记录启用清理。对于采用这种方式(即,从其他 DNS 服务器加载基于文本的区域文件或手动向区域中添加记录)添加到区域中的记录,时间戳的值设置为零。这会导致这些记录不适合在老化和清理操作中使用。

    若要更改此默认值,可以分别管理这些记录,以重置并允许这些记录使用当前的(非零)时间戳值。这样一来,就可以对这些记录执行老化和清理操作。

    有关详细信息,请参阅重置指定资源记录的老化和清理属性

注意

在将区域从标准主要区域更改为 Active Directory 集成区域时,可能需要对区域中的所有现有资源记录启用清理功能。若要对区域中所有现有资源记录启用老化功能,可以使用 AgeAllRecords 命令(可通过 dnscmd 命令行工具使用)。

老化和清理术语

下表指出了已介绍的特别有助于讨论老化和清理的一些新术语或修订术语。

术语 描述

资源记录时间戳

DNS 服务器在执行老化和清理操作时用于确定资源记录删除的日期和时间值。

当前服务器时间

DNS 服务器上的当前日期和时间。此数字可以表示为任何时间点的确切数值。

无刷新间隔

针对每个区域确定的时间间隔(以下面两个事件为界):

  1. 上次刷新记录并设置其时间戳的日期和时间。

  2. 下次有资格刷新记录并重置其时间戳的日期和时间。

需要使用此值来减少对 Active Directory 数据库进行的写入操作次数。默认情况下,此间隔设置为 7 天。不应将此间隔增加到不合理的程度,因为老化和清理功能的优势可能会丢失或减少。

刷新间隔

针对每个区域(由以下两个不同的事件绑定)确定的时间间隔:

  1. 有资格刷新记录并重置其时间戳的最早日期和时间。

  2. 有资格清理记录并将其从区域数据库中删除的最早日期和时间。

此值应足够大,以允许所有客户端都刷新其记录。默认情况下,此间隔设置为 7 天。不应将此间隔增加到不合理的程度,因为老化和清理功能的优势可能会丢失或减少。

开始清理时间

特定时间,以数字表示。此时间由服务器用于确定区域可以进行清理的时间。

清理周期

在服务器上启用自动清理时,此期间表示重复执行自动清理过程之间的时间。此设置的默认值为 7 天。为防止损害 DNS 服务器性能,此设置的最小允许值为 1 小时。

记录刷新

处理对资源记录的 DNS 动态更新时,将只修订资源记录时间戳,而不修订记录的其他特性。

通常出于以下原因进行刷新:

  1. 计算机在网络上重新启动时,如果启动时其名称和 IP 地址信息与关闭前使用的相同名称和地址信息一致,则可以发送刷新,以续订此信息的关联资源记录。

  2. 计算机会在运行的同时发送定期刷新。

    Windows DNS 客户端服务会每 24 小时续订一次客户端资源记录的 DNS 注册。执行此动态更新时,如果动态更新请求没有导致对 DNS 数据库的修改,则认为此操作是刷新,而不是资源记录更新。

  3. 其他网络服务会尝试刷新,如:DHCP 服务器,可以续订客户端地址租约;群集服务器,可以注册并更新群集的记录;以及 Net Logon 服务,可以注册并更新 Active Directory 域控制器所使用的资源记录。

记录更新

处理对资源记录的 DNS 动态更新时,除了修改记录的时间戳外,还会修改其他特性。

通常出于以下原因进行更新:

  1. 向网络中添加新的计算机,且在启动时发送更新以首次使用其配置的区域注册其资源记录。

  2. 区域中包含现有记录的计算机更改 IP 地址,导致针对其在 DNS 区域数据中的修订名称到地址映射发送更新。

  3. Net Logon 服务注册了新的 Active Directory 域控制器。

清理服务器

可选的高级区域参数,用于指定允许执行区域清理的 DNS 服务器的 IP 地址限制列表。

默认情况下,如果未指定此参数,则所有加载目录集成区域的 DNS 服务器(同时也允许清理)都会尝试执行区域清理。在某些情况下,如果只在某些加载目录集成区域的服务器上执行清理更可取,则此参数可能非常有用。

若要设置此参数,必须在区域的 ZoneResetScavengeServers 参数中指定允许清理区域的服务器的 IP 地址列表。可以使用 dnscmd 命令(即用于管理 Windows DNS 服务器的基于命令行的工具)完成此操作。

可以开始清理的时间

满足允许使用清理的所有前提条件后,一旦当前服务器时间大于区域的开始清理时间值,即可开始对服务器区域进行清理。

服务器会设置此时间值,在出现下列情况之一时开始以每个区域为基础进行清理:

  • 对区域启用动态更新。

  • 应用“清除过时资源记录”复选框的状态更改。可以使用 DNS 管理器在适用的 DNS 服务器或其某个主要区域中修改此设置。

  • DNS 服务器会加载允许使用清理功能的主要区域。

    启动服务器计算机时或启动 DNS 服务器服务时会发生这种情况。

  • 区域在服务被暂停后又恢复时。

  • 如果区域是 AD DS 集成区域,则自重新启动 DNS 服务或重新启动域控制器之后必须至少执行一次区域传送。发生上述情况时,DNS 服务器会通过计算以下总和来设置开始清理时间的值:

    当前服务器时间 + 刷新间隔 = 开始清理时间

    在清理操作期间此值用作比较基础。

示例:示例记录的老化和清理过程

若要了解服务器上的老化和清理过程,请考虑单个资源记录的寿命范围和连续阶段,因为它将添加到此过程生效的服务器和区域,然后会被老化并从数据库中删除。

  1. 示例 DNS 主机 host-a.example.microsoft.com 在允许使用老化和清理功能的区域的 DNS 服务器上注册其主机 (A) 资源记录。

  2. 注册记录时,DNS 服务器会根据当前服务器时间在此记录上放置时间戳。

    写入记录时间戳后,DNS 服务器在区域的无刷新间隔期间内不接受对此记录的刷新。但是,在此时间之前,它可以接受更新。例如,如果 host-a.example.microsoft.com 的 IP 地址发生更改,则 DNS 服务器可以接受更新。在这种情况下,服务器还会更新(重置)记录时间戳。

  3. 当非刷新期间过期时,服务器即开始接受刷新此记录的尝试。

    初始非刷新期间结束时,该记录的刷新期间会立即开始。在此期间,服务器不会取消在其剩余的寿命范围内刷新记录的尝试。

  4. 刷新期间及刷新之后,如果服务器收到记录刷新,就会对其进行处理。

    此操作将根据步骤 2 中介绍的方法重置记录的时间戳。

  5. example.microsoft.com 区域的服务器执行了后续清理后,服务器将检查该记录(以及所有的其他区域记录)。

    系统会根据以下总和将每条记录与当前服务器时间进行比较,以确定是否应删除记录:

    记录时间戳 + 区域的无刷新间隔 + 区域的刷新间隔

    • 如果此总和值大于当前服务器时间,则不执行任何操作,且记录在该区域中继续老化。

    • 如果此总和值小于当前服务器时间,则会从服务器内存中当前已加载的任何区域数据中以及目录集成 example.microsoft.com 区域的 Active Directory 域服务 (AD DS) 中适用的 DnsZone 对象存储中删除该记录。


目录