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