林建華
柯達(dá)(中國)圖文影像有限公司信息系統(tǒng)部 福建 廈門 361022
DNS提供將主機名解析成其對應(yīng)IP地址的服務(wù)。對有固定IP地址的主機,其DNS資源記錄一般設(shè)置為靜態(tài),而對IP地址由DHCP動態(tài)分配的主機,其DNS資源記錄則設(shè)置為動態(tài)。在Windows Server環(huán)境下,DNS 資源記錄默認(rèn)設(shè)置為動態(tài),如果主機的IP地址發(fā)生了變化,而DNS資源記錄未及時得到更新或清除,則會產(chǎn)生主機名解析錯誤,引起不可預(yù)見的錯誤。
正常理解與區(qū)分更新與刷新,非刷新間隔期與刷新間隔期這些概念,是理解DNS的前提。
默認(rèn)情況下,主機電腦每隔24小時都會聯(lián)系DNS服務(wù)器并更新其相應(yīng)的資源記錄,假如自上次聯(lián)系后,主機電腦IP地址已改變,則我們稱之為發(fā)生了一次“更新”,否則,則我們稱之為發(fā)生了一次“刷新”,不論哪種情況,資源記錄的時戳都會被更新到當(dāng)前時刻。
假如域里有多臺DNS服務(wù)器,當(dāng)主DNS服務(wù)器的資源記錄發(fā)生變化時,這些變化需要復(fù)制到其他DNS服務(wù)器,默認(rèn)情況下,主機電腦每天都要更新DNS里的資源記錄,至少是更新資源記錄的時戳。假如資源記錄僅僅是時戳發(fā)生了改變,由此產(chǎn)生的復(fù)制流量看起來就沒有必要。為了減少這種復(fù)制的流量,規(guī)定了一個“非刷新間隔期”,即自資源記錄的時戳點開始,維持一段時間不“刷新”該資源記錄[1]。但是,在此期間,“更新”照常進(jìn)行,即如果主機IP發(fā)生變化,則照常更新其資源記錄與時戳。換言之,在非刷新間隔期內(nèi),資源記錄只“更新”,不“刷新”。
在非刷新間隔期結(jié)束之后,進(jìn)入“刷新間隔期”,在此期間,資源記錄既允許被“更新”,也允許被“刷新”。在刷新間隔期過后,假如資源記錄還沒有被“更新”或“刷新”,時戳沒有變化,則該記錄已經(jīng)過時,即為老化的記錄,可以自動或被手動從系統(tǒng)中清除。
以Windows Server2012 為例,假設(shè)DNS老化設(shè)置如圖1,有一臺主機在DNS上注冊了其主機記錄,它每天聯(lián)系DNS服務(wù)器試圖刷新或更新該記錄。自該記錄時戳點起,3天內(nèi),即非刷新間隔期內(nèi),如果DNS收到該主機的‘刷新’請求則拒絕之,如果收到的是‘更新’請求,則接收并更新相應(yīng)資源記錄的IP及時戳,并且以新時戳重新開始非刷新間隔期[2]。當(dāng)3天非刷新間隔期滿,進(jìn)入4天的刷新間隔期,在此期間,DNS接收主機的‘刷新’或‘更新’請求,更新相應(yīng)資源記錄的IP和時戳并且重新開始非刷新間隔期。假如在刷新間隔期內(nèi)資源記錄未改變,則意味著該主機已關(guān)機或者退出域,其注冊的資源記錄已老化并可以清除。在此例中,時戳超出7天的資源記錄將被列入待清除行列。
圖1 老化屬性設(shè)置
用戶可以手動清除,或者設(shè)置定期自動清除老化資源記錄。
手動清除時,通過命令DNSMGMT.msc調(diào)出DNS管理控制臺,右鍵點擊DNS服務(wù)器,在快捷菜單中選擇‘Scavenge Stale Resource Records’,如圖2所示。
圖2 手動清除老化資源記錄
在隨后彈出的窗口中點擊OK按鈕即可。
設(shè)置自動清除老化記錄時,在上述快捷菜單中選擇“Properties”項,然后選擇Advanced頁,勾選“Enable automatic scavenging of stale records”,在Scavenging period 右邊框里填寫上老化周期,即自動清理老化資源記錄的周期,單位可以是天或者小時(見圖3)。系統(tǒng)將按設(shè)置的周期定期啟動老化清除。
圖3 自動清除老化資源記錄設(shè)置
手動或自動清除老化資源記錄都將在系統(tǒng)中產(chǎn)生2501、2502日志,可以通過應(yīng)用及服務(wù)日志DNS Server節(jié)點查看。
對固定IP的主機,DNS資源記錄不需要老化清除,其記錄時戳顯示是“靜態(tài)”,如圖4所示。
圖4 DNS靜態(tài)資源記錄
而時戳顯示為某時刻的資源記錄,系統(tǒng)將對比當(dāng)前時刻和時戳,一旦老化,該記錄將進(jìn)入待清除行列。如果需要將某主機改成靜態(tài)DNS,請雙擊該主機記錄彈出屬性窗口(見圖5),在屬性窗口中去掉勾選‘Delete this record when it becomes stale’,然后點OK按鈕,該主機記錄時戳就變成靜態(tài),它也不再在老化和清除之列。
圖5 DNS主機記錄屬性
資源記錄老化可以設(shè)置在服務(wù)器或者站點層次。在服務(wù)器設(shè)置的老化,對該服務(wù)器下所有的站點有效。首先以DNSMGMT.msc調(diào)出DNS管理窗口,右鍵點擊DNS服務(wù)器,在隨后彈出的菜單中選擇‘Set Aging/Scavenging for All Zones’項(見圖6)。
圖6 服務(wù)器層次資源記錄老化設(shè)置
接下來在‘Server Aging/Scavenging Properties’窗口中(見圖7),勾選‘Scavenge stale resource records’選項,填寫非刷新間隔期和刷新間隔期,然后點擊OK按鈕[3]。這樣,默認(rèn)的老化就設(shè)置好了,這些設(shè)置對該服務(wù)器下所有的站點生效,新建立的站點也將以此為默認(rèn)參數(shù)。要注意的是,非刷新間隔期加刷新間隔期之和要大于DHCP中設(shè)置的IP租用期。
圖7 服務(wù)器層次資源記錄老化屬性
假如要對某個站點設(shè)置老化,右鍵點擊該站點,在快捷菜單中選擇屬性一項,在屬性窗口中選擇General頁,然后點擊Aging按鈕(見圖8)。
圖8 站點層次資源記錄老化設(shè)置
在隨后的Zone Aging/Scavenging Properties彈窗中(見圖9),勾選‘Scavene stale resource records’,填寫非刷新間隔期和刷新間隔期,點擊OK按鈕。當(dāng)再次打開該彈窗時,就可以看到下次老化清理的時間‘The zone can be scavenged after:’,如果看不到此項,只要勾選DNS Manager窗口的菜單View/Advanced,然后再次打開此窗口就可以看到了。
圖9 站點層次資源記錄老化屬性