域名系统 (DNS) 客户端计算机可使用动态更新在发生更改时,随时向 DNS 服务器注册和动态更新其资源记录。这减少了手动管理区域记录的需要,尤其是对于频繁移动或更改位置并使用动态主机配置协议 (DHCP) 获取 IP 地址的客户端更是如此。

DNS 客户端服务和 DNS 服务器服务都支持使用动态更新,如征求意见文档 (RFC) 2136“域名系统中的动态更新”中所述那样。DNS 服务器服务允许在配置为加载标准主要区域或目录集成区域的每台服务器上以区域为基础启用或禁用动态更新。默认情况下,将 DNS 客户端服务配置为 TCP/IP 时,该服务会以动态方式更新 DNS 中的主机 (A) 资源记录。

客户端计算机和服务器计算机更新其 DNS 名称的方式

默认情况下,以静态方式配置为 TCP/IP 的计算机会尝试以动态方式针对其已安装网络连接所配置并使用的 IP 地址注册主机 (A) 资源记录和指针 (PTR) 资源记录。默认情况下,所有计算机都会根据其完全限定的域名 (FQDN) 来注册记录。

主要的计算机全名 (FQDN) 基于附加到计算机名称中的计算机主 DNS 后缀

其他注意事项:

  • 默认情况下,DNS 客户端不会尝试对顶级域 (TLD) 区域进行动态更新。以单标签名称命名的任何区域都会被视为 TLD 区域,例如 com、edu、blank、my-company。若要将 DNS 客户端配置为允许对 TLD 区域进行动态更新,则可以使用“更新顶级域区域”策略设置,或者可以修改注册表。

  • 默认情况下,计算机的 FQDN 的主 DNS 后缀部分与计算机所加入的 Active Directory 域服务 (AD DS) 域的名称相同。若要允许使用不同的主 DNS 后缀,域管理员可以通过在域对象容器中修改 msDS-AllowedDNSSuffixes 属性来创建一个可用后缀的限制列表。此属性由域管理员使用 Active Directory 服务接口 (ADSI) 或轻型目录访问协议 (LDAP) 进行管理。

可以出于以下任何原因或情况发送动态更新:

  • 在 TCP/IP 属性配置中添加、删除或修改了任何一个已安装网络连接的 IP 地址。

  • IP 地址租约更改,或向 DHCP 服务器续订任何一个已安装的网络连接。例如,启动计算机时或使用 ipconfig /renew 命令时。

  • ipconfig /registerdns 命令用于手动强制刷新 DNS 中的客户端名称注册。

  • 打开计算机进行启动时。

  • 成员服务器已被提升为域控制器。

以上事件之一触发动态更新时,DHCP 客户端服务(而不是 DNS 客户端服务)将发送更新。这样设计的目的在于,如果因 DHCP 对 IP 地址信息进行了更改,则可以在 DNS 中执行对应的更新,以便对计算机的名称到地址映射进行同步。DHCP 客户端服务将为系统中的所有网络连接(包括未配置为使用 DHCP 的连接)执行此功能。

示例:动态更新的工作原理

通常,当计算机上的 DNS 名称或 IP 地址改变时,就会请求动态更新。例如,假定名为 oldhost 的客户端最初在“系统属性”中是使用以下名称进行配置的。

计算机名称

oldhost

计算机的 DNS 域名

tailspintoys.com

计算机全名

oldhost.tailspintoys.com 

在此示例中,没有为计算机配置任何连接特定的 DNS 域名。随后,将计算机从 oldhost 重命名为 newhost,从而使系统上发生下列名称变化。

计算机名称

newhost

计算机的 DNS 域名

tailspintoys.com

计算机全名

newhost.tailspintoys.com 

“系统属性”中应用名称更改后,系统会提示您重新启动计算机。计算机重新启动 Windows 时,DHCP 客户端服务会按照以下顺序来更新 DNS:

  1. DHCP 客户端服务使用计算机的 DNS 域名来发送授权起始点 (SOA) 类型的查询。

    客户端计算机使用当前配置的计算机 FQDN(如 newhost.tailspintoys.com)作为在此查询中指定的名称。

  2. 包含客户端 FQDN 的区域的权威 DNS 服务器将对 SOA 类型的查询做出响应。

    对于标准的主要区域,在 SOA 查询响应中返回的主服务器(所有者)是固定的而且是静态的。当它出现在区域中存储的 SOA 资源记录中时,始终与实际的 DNS 名称匹配。但是,如果正在更新的区域是目录集成区域,则正在加载区域的任何 DNS 服务器都会做出响应,并且会以动态方式在 SOA 查询响应中插入其各自的名称作为区域的主服务器(所有者)。

  3. 然后 DHCP 客户端服务会尝试联系主 DNS 服务器。

    该客户端会处理针对其名称的 SOA 查询响应,以确定授权为接受其名称时所用主服务器的 DNS 服务器的 IP 地址。然后,它将根据需要继续按以下顺序执行步骤,以联系其主服务器并采用动态方式更新该服务器:

    1. 它会将动态更新请求发送到在 SOA 查询响应中确定的主服务器。

      如果更新成功,则不会执行任何进一步操作。

    2. 如果此更新失败,则客户端接着会针对 SOA 记录中指定的区域名称发送名称服务器 (NS) 类型的查询。

    3. 当它收到对此查询的响应时,会将 SOA 查询发送给响应中列出的第一台 DNS 服务器。

    4. 解析 SOA 查询后,客户端会将动态更新发送给在返回的 SOA 记录中指定的服务器。

      如果更新成功,则不会执行任何进一步操作。

    5. 如果此更新失败,则客户端会将 SOA 查询发送给响应中列出的下一台 DNS 服务器,以重复执行 SOA 查询过程。

  4. 联系到可以执行更新的主服务器后,客户端会发送更新请求,由服务器来处理它。

    更新请求的内容包括有关下列操作的说明:添加 newhost.tailspintoys.com 的主机 (A)(可能还有指针 (PTR))资源记录,以及删除 oldhost.tailspintoys.com(以前注册的名称)的相同记录类型。

    服务器还会进行检查,以确保允许对客户端请求进行更新。对于标准的主要区域,动态更新不安全;因此,任何客户端的更新尝试都会成功。对于 AD DS 集成的区域,更新是安全的,而且是使用基于目录的安全设置来执行的。

系统会定期发送或刷新动态更新。默认情况下,计算机会每七天发送一次刷新。如果更新没有导致区域数据发生更改,则区域始终处于当前版本,而不会写入更改。只有在名称或地址实际发生更改时,更新才会导致实际区域更改或区域传送增加。

当 DHCP 客户端服务为计算机注册主机 (A) 和指针 (PTR) 资源记录时,将对主机记录使用默认的缓存生存时间 (TTL) 15 分钟。这将决定其他 DNS 服务器和客户端缓存计算机记录的时间长度(当查询响应中包括记录时)。

安全的动态更新

DNS 更新安全仅适用于集成到 AD DS 中的区域。当您在目录中集成区域时,可以使用 DNS 管理器中的访问控制列表 (ACL) 编辑功能,以便可以在指定区域或资源记录的 ACL 中添加或删除用户或组。

默认情况下,可以按照以下方式处理 DNS 服务器和客户端的动态更新安全:

  • DNS 客户端首先尝试使用非安全动态更新。如果非安全更新被拒绝,客户端将尝试使用安全更新。

    此外,客户端还使用默认的更新策略,该策略允许客户端尝试覆盖先前注册的资源记录(如果更新安全功能未特意阻止这些客户端)。

  • 区域成为 AD DS 集成区域后,运行 Windows Server(R) 2008 的 DNS 服务器默认只允许安全的动态更新。

    使用标准区域存储时,DNS 服务器服务的默认设置是不允许在其区域中执行动态更新。对于集成到目录的区域或使用基于文件的标准存储的区域,您可以更改此区域以便允许所有的动态更新,进而允许接受所有更新。


目录