DNS动态更新及老化浅析
2022-03-17林建华
林建华
柯达(中国)图文影像有限公司信息系统部 福建 厦门 361022
引言
DNS提供将主机名解析成其对应IP地址的服务。对有固定IP地址的主机,其DNS资源记录一般设置为静态,而对IP地址由DHCP动态分配的主机,其DNS资源记录则设置为动态。在Windows Server环境下,DNS 资源记录默认设置为动态,如果主机的IP地址发生了变化,而DNS资源记录未及时得到更新或清除,则会产生主机名解析错误,引起不可预见的错误。
1 关键概念
正常理解与区分更新与刷新,非刷新间隔期与刷新间隔期这些概念,是理解DNS的前提。
1.1 更新(update)与刷新(refresh)
默认情况下,主机电脑每隔24小时都会联系DNS服务器并更新其相应的资源记录,假如自上次联系后,主机电脑IP地址已改变,则我们称之为发生了一次“更新”,否则,则我们称之为发生了一次“刷新”,不论哪种情况,资源记录的时戳都会被更新到当前时刻。
1.2 非刷新间隔期与刷新间隔期
假如域里有多台DNS服务器,当主DNS服务器的资源记录发生变化时,这些变化需要复制到其他DNS服务器,默认情况下,主机电脑每天都要更新DNS里的资源记录,至少是更新资源记录的时戳。假如资源记录仅仅是时戳发生了改变,由此产生的复制流量看起来就没有必要。为了减少这种复制的流量,规定了一个“非刷新间隔期”,即自资源记录的时戳点开始,维持一段时间不“刷新”该资源记录[1]。但是,在此期间,“更新”照常进行,即如果主机IP发生变化,则照常更新其资源记录与时戳。换言之,在非刷新间隔期内,资源记录只“更新”,不“刷新”。
在非刷新间隔期结束之后,进入“刷新间隔期”,在此期间,资源记录既允许被“更新”,也允许被“刷新”。在刷新间隔期过后,假如资源记录还没有被“更新”或“刷新”,时戳没有变化,则该记录已经过时,即为老化的记录,可以自动或被手动从系统中清除。
2 配置与应用
以Windows Server2012 为例,假设DNS老化设置如图1,有一台主机在DNS上注册了其主机记录,它每天联系DNS服务器试图刷新或更新该记录。自该记录时戳点起,3天内,即非刷新间隔期内,如果DNS收到该主机的‘刷新’请求则拒绝之,如果收到的是‘更新’请求,则接收并更新相应资源记录的IP及时戳,并且以新时戳重新开始非刷新间隔期[2]。当3天非刷新间隔期满,进入4天的刷新间隔期,在此期间,DNS接收主机的‘刷新’或‘更新’请求,更新相应资源记录的IP和时戳并且重新开始非刷新间隔期。假如在刷新间隔期内资源记录未改变,则意味着该主机已关机或者退出域,其注册的资源记录已老化并可以清除。在此例中,时戳超出7天的资源记录将被列入待清除行列。
图1 老化属性设置
用户可以手动清除,或者设置定期自动清除老化资源记录。
手动清除时,通过命令DNSMGMT.msc调出DNS管理控制台,右键点击DNS服务器,在快捷菜单中选择‘Scavenge Stale Resource Records’,如图2所示。
图2 手动清除老化资源记录
在随后弹出的窗口中点击OK按钮即可。
设置自动清除老化记录时,在上述快捷菜单中选择“Properties”项,然后选择Advanced页,勾选“Enable automatic scavenging of stale records”,在Scavenging period 右边框里填写上老化周期,即自动清理老化资源记录的周期,单位可以是天或者小时(见图3)。系统将按设置的周期定期启动老化清除。
图3 自动清除老化资源记录设置
手动或自动清除老化资源记录都将在系统中产生2501、2502日志,可以通过应用及服务日志DNS Server节点查看。
对固定IP的主机,DNS资源记录不需要老化清除,其记录时戳显示是“静态”,如图4所示。
图4 DNS静态资源记录
而时戳显示为某时刻的资源记录,系统将对比当前时刻和时戳,一旦老化,该记录将进入待清除行列。如果需要将某主机改成静态DNS,请双击该主机记录弹出属性窗口(见图5),在属性窗口中去掉勾选‘Delete this record when it becomes stale’,然后点OK按钮,该主机记录时戳就变成静态,它也不再在老化和清除之列。
图5 DNS主机记录属性
资源记录老化可以设置在服务器或者站点层次。在服务器设置的老化,对该服务器下所有的站点有效。首先以DNSMGMT.msc调出DNS管理窗口,右键点击DNS服务器,在随后弹出的菜单中选择‘Set Aging/Scavenging for All Zones’项(见图6)。
图6 服务器层次资源记录老化设置
接下来在‘Server Aging/Scavenging Properties’窗口中(见图7),勾选‘Scavenge stale resource records’选项,填写非刷新间隔期和刷新间隔期,然后点击OK按钮[3]。这样,默认的老化就设置好了,这些设置对该服务器下所有的站点生效,新建立的站点也将以此为默认参数。要注意的是,非刷新间隔期加刷新间隔期之和要大于DHCP中设置的IP租用期。
图7 服务器层次资源记录老化属性
假如要对某个站点设置老化,右键点击该站点,在快捷菜单中选择属性一项,在属性窗口中选择General页,然后点击Aging按钮(见图8)。
图8 站点层次资源记录老化设置
在随后的Zone Aging/Scavenging Properties弹窗中(见图9),勾选‘Scavene stale resource records’,填写非刷新间隔期和刷新间隔期,点击OK按钮。当再次打开该弹窗时,就可以看到下次老化清理的时间‘The zone can be scavenged after:’,如果看不到此项,只要勾选DNS Manager窗口的菜单View/Advanced,然后再次打开此窗口就可以看到了。
图9 站点层次资源记录老化属性