林建華
柯達(中國)圖文影像有限公司信息系統(tǒng)部 福建 廈門 361022
DNS提供將主機名解析成其對應IP地址的服務。對有固定IP地址的主機,其DNS資源記錄一般設置為靜態(tài),而對IP地址由DHCP動態(tài)分配的主機,其DNS資源記錄則設置為動態(tài)。在Windows Server環(huán)境下,DNS 資源記錄默認設置為動態(tài),如果主機的IP地址發(fā)生了變化,而DNS資源記錄未及時得到更新或清除,則會產(chǎn)生主機名解析錯誤,引起不可預見的錯誤。
正常理解與區(qū)分更新與刷新,非刷新間隔期與刷新間隔期這些概念,是理解DNS的前提。
默認情況下,主機電腦每隔24小時都會聯(lián)系DNS服務器并更新其相應的資源記錄,假如自上次聯(lián)系后,主機電腦IP地址已改變,則我們稱之為發(fā)生了一次“更新”,否則,則我們稱之為發(fā)生了一次“刷新”,不論哪種情況,資源記錄的時戳都會被更新到當前時刻。
假如域里有多臺DNS服務器,當主DNS服務器的資源記錄發(fā)生變化時,這些變化需要復制到其他DNS服務器,默認情況下,主機電腦每天都要更新DNS里的資源記錄,至少是更新資源記錄的時戳。假如資源記錄僅僅是時戳發(fā)生了改變,由此產(chǎn)生的復制流量看起來就沒有必要。為了減少這種復制的流量,規(guī)定了一個“非刷新間隔期”,即自資源記錄的時戳點開始,維持一段時間不“刷新”該資源記錄[1]。但是,在此期間,“更新”照常進行,即如果主機IP發(fā)生變化,則照常更新其資源記錄與時戳。換言之,在非刷新間隔期內,資源記錄只“更新”,不“刷新”。
在非刷新間隔期結束之后,進入“刷新間隔期”,在此期間,資源記錄既允許被“更新”,也允許被“刷新”。在刷新間隔期過后,假如資源記錄還沒有被“更新”或“刷新”,時戳沒有變化,則該記錄已經(jīng)過時,即為老化的記錄,可以自動或被手動從系統(tǒng)中清除。
以Windows Server2012 為例,假設DNS老化設置如圖1,有一臺主機在DNS上注冊了其主機記錄,它每天聯(lián)系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)。系統(tǒng)將按設置的周期定期啟動老化清除。
圖3 自動清除老化資源記錄設置
手動或自動清除老化資源記錄都將在系統(tǒng)中產(chǎn)生2501、2502日志,可以通過應用及服務日志DNS Server節(jié)點查看。
對固定IP的主機,DNS資源記錄不需要老化清除,其記錄時戳顯示是“靜態(tài)”,如圖4所示。
圖4 DNS靜態(tài)資源記錄
而時戳顯示為某時刻的資源記錄,系統(tǒng)將對比當前時刻和時戳,一旦老化,該記錄將進入待清除行列。如果需要將某主機改成靜態(tài)DNS,請雙擊該主機記錄彈出屬性窗口(見圖5),在屬性窗口中去掉勾選‘Delete this record when it becomes stale’,然后點OK按鈕,該主機記錄時戳就變成靜態(tài),它也不再在老化和清除之列。
圖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]。這樣,默認的老化就設置好了,這些設置對該服務器下所有的站點生效,新建立的站點也將以此為默認參數(shù)。要注意的是,非刷新間隔期加刷新間隔期之和要大于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 站點層次資源記錄老化屬性