DNS 清除設定
本文討論如何設定功能變數名稱系統 (DNS) 清理,並提供在既有區域上設定清除的範例。
清除 DNS 中的清除 (deletes) 過時記錄。 隨著刪除的牽涉,許多安全閥都內建於清除中,這需要很長的時間才能進行清除。
注意
本文著重於最常見的 Windows DNS 案例:裝載 Active Directory(AD)整合區域的 Windows Server DNS 伺服器。
在 Windows Server 中,應該在下列三個位置中設定清除:
- 要清除的個別資源記錄上。
- 在要清除的區域上。
- 在一或多個執行清除的伺服器上。
清除資源記錄上的設定
在 DNS Microsoft 管理主控台 (MMC) 中,選取 [檢視>進階] 並檢查資源記錄的屬性,以查看清除設定。 例如:
在資源記錄上清除可以設定為三種方法:
- 第一個是檢查 [刪除此記錄] 當它變成過時 複選框,然後選取 [ 套用]。 當您選取 [ 套用] 時,目前的時間會四捨五入為最接近的小時,並套用為記錄上的時間戳。 靜態記錄的時間戳為 0,表示不會清除它們。
- 第二種方式是客戶端電腦使用動態 DNS (DDNS) 註冊記錄時。 Windows 用戶端每隔 24 小時會動態更新 DNS。 所有 DDNS 記錄都會設定為「疏鬆」。 當記錄第一次由沒有現有記錄的用戶端建立時,會將其視為「更新」,並設定時間戳。 如果客戶端有現有的主機記錄並變更主機記錄的IP,這也會被視為「更新」,並設定時間戳。 如果用戶端有具有相同IP位址的現有主機記錄,這視為「重新整理」,以及時間戳變更是否取決於區域設定。
- 在記錄上設定清除的第三種方式是使用 dnscmd /ageallrecords 命令。 如果您對區域執行此命令,它會設定清除區域中的所有記錄的時間戳,包括您不想清除的靜態記錄。
在記錄上設定時間戳之後,它會復寫到裝載區域的所有伺服器。
注意
如果裝載記錄的區域未啟用清除,則不會清除記錄,因此時間戳無關緊要。 時間戳可能會在客戶端動態註冊的伺服器上更新,但不會復寫到區域中的其他伺服器。
清除區域中的設定
在伺服器檢查記錄是否要清除之前,區域應該已啟用清除。 若要存取區域的清除設定,請以滑鼠右鍵按兩下區域,選取 [屬性],然後在 [一般] 索引標籤上選取 [過時]。
注意
此螢幕快照與在此區域複寫所在的任何 DNS 伺服器上相同。
當您第一次設定區域清除時,時間戳(在底部看到)會設定為目前一天的時間(四捨五入為最接近的小時),加上重新整理間隔。 每當區域載入或區域上啟用動態更新時,也會重設此設定。
注意
如果您沒有看到 區域可以在時間戳之後 清除,請重載區域。
時間戳後 可以清除區域是第一個安全閥。 它可讓用戶端有時間更新其記錄時間戳。 由於當區域清除已停用時,不會復寫新的記錄時間戳,這也會提供複寫時間讓專案保持有序。
重新整理和無重新整理間隔
下一個安全閥是重新整理和無重新整理間隔。 經過這兩個間隔之後,就可以刪除記錄。
「無重新整理」間隔是一段無法重新整理資源記錄的期間。 「重新整理」是您不會變更主機資源記錄的動態更新;只要觸控時間戳即可。 如果客戶端變更主機記錄的IP,這會被視為「更新」,且不受「無重新整理間隔」的豁免。 無重新整理間隔的目的是減少復寫流量。 記錄的變更表示應該復寫變更。
記錄時間戳加上 [無重新整理間隔] 之後,您可以輸入 [重新整理間隔]。 重新整理間隔是允許重新整理時間戳的時間。 用戶端可以傳入並更新其時間戳。 此時間戳將會復寫,且 [無重新整理] 間隔會再次啟動。 如果用戶端在重新整理間隔期間無法更新其記錄,就會變成符合清除資格。
注意
當您設定 [重新整理] 和 [無重新整理間隔] 時,允許用戶端在重新整理間隔期間進行數次註冊嘗試。 如果您未這麼做,記錄可能會因為重新整理嘗試失敗而變得適合進行清除。
如果您以滑鼠右鍵按下您的伺服器,然後選取 [設定所有區域的過時/清除...],您會看到類似上述的螢幕快照。 這個選項會設定此伺服器建立新區域時將使用的預設設定。 除非您選取 [ 將這些設定套用至現有的Active Directory 整合區域 ] 複選框,否則此設定不會影響現有的區域。
在伺服器上清除設定
若要在伺服器上設定清除,請以滑鼠右鍵按下 MMC 中的伺服器,然後選取 [ 屬性]。 然後,選取 [進階] 索引卷標上的 [啟用過時記錄自動清除] 複選框,如下所示:
Scavenging period 值是此伺服器清除的頻率。 當伺服器清除時,它會記錄 DNS 事件識別碼 2501,以指出已清除的記錄數量。 如果未清除任何記錄,則會記錄事件標識碼 2502。 因為區域數據會復寫到裝載區域的所有伺服器,因此只需要一部伺服器。
提示
藉由取得最近事件標識碼 2501 或 2502 的時間戳,並將清除期間新增至其中,您可以確切地判斷伺服器何時會嘗試清除。
雖然您可以將裝載區域的每部伺服器設定為「復讎」,但建議您只設定一個集合。 如果伺服器無法尋罪,則不會造成嚴重影響。 您將有一個位置來尋找可疑專案,以及一組要檢查的記錄。 如果您有許多伺服器設定為「清查」,則有許多記錄可檢查清除是否失敗。
若要控制哪個伺服器正在清除區域,您可以使用 dnscmd 命令來確切指定哪些伺服器可能會造成問題。 例如, dnscmd /zoneresetscavengeservers contoso.com 192.168.1.1 192.168.1.2
此命令只允許IP位址為192.168.1.1和192.168.1.2的 DNS 伺服器,以在區域上進行 contoso.com
報復。
清除程式與最終檢查
您也可以以滑鼠右鍵按下伺服器,然後選取 [Scavenge 過時資源記錄],以手動起始清除嘗試。 請注意,手動嘗試不會略過安全閥。
請先檢查下列專案,再刪除過時的記錄:
- 區域是否已啟用清除功能?
- 是否在區域上啟用動態更新?
- 清除伺服器是否列為區域的其中一部清除伺服器?
- 超出區域的「區域之後可以清除」時間戳嗎?
這可讓用戶端和AD複寫在開始之前做好準備。 - 自從此區域上次在 Active Directory 中復寫之後,已超過重新整理間隔的時間嗎?
如果在有復寫問題的伺服器上啟用清除功能,這有助於防止對可能在其他伺服器上仍然有效的記錄進行不必要的擷取。
如果通過上述所有檢查,區域便已準備好進行清除。 此時,清除伺服器會檢查每個資源記錄上的時間戳。 如果目前的日期和時間大於時間戳加上無重新整理和重新整理間隔,則會刪除記錄。
範例:在預先存在的區域上設定清除
以下是在預先存在的區域上設定清除的範例。 此程式是針對最大安全性所設計。 如果使用預設設定,此程式可能需要四到五周的時間(三周的時間是理智檢查階段的兩周,啟用階段可能需要兩到三周)。
安裝階段
- 關閉所有伺服器上的清除。 您可以使用
dnscmd /zoneresetscavengeservers
命令將清除限制為單一伺服器,然後確定此伺服器已停用清除。 - 開啟您要清除的區域。 視需要設定 [重新整理] 和 [無重新整理間隔]。 若要更有效率地進行復寫,建議您降低 [無重新整理] 間隔,並將 [重新整理] 間隔保留為預設值。
- 新增今天的日期加上 [重新整理] 和 [無重新整理] 間隔。 在這段時間已經過去了幾個星期後回來。
理智檢查階段
在 DNS 記錄中尋找比 [重新整理] 舊的記錄加上 [無重新整理] 間隔。 如果您看到任何專案,動態註冊程序發生問題,在繼續之前,應該先加以修正。 此時,徹底檢查是安裝中最重要的步驟。
檢查您是否找到舊記錄的事項:
ipconfig /registerdns
命令是否正常運作?- 誰是記錄的擁有者(請參閱 記錄屬性中的 [安全性 ] 索引標籤?
- 記錄是否以靜態方式由系統管理員建立,然後啟用清除? 如果是,您必須刪除記錄以清除擁有權,並執行
ipconfig /registerdns
命令來更新它。 - 伺服器的 Active Directory 複寫是否正常運作?
除非您可以解釋任何過時的記錄,否則請勿繼續。 在下一個階段中,將會刪除它們。
啟用階段
您可以使用 dnscmd /zoneresetscavengeservers
命令在單一伺服器上啟用清除功能。
啟用清除之後,請建立新的測試記錄,並啟用它以進行清除。 然後,對應此記錄消失的時間點。 以下為其步驟:
- 從記錄上的時間戳開始。
- 新增 [重新整理間隔]。
- 新增 [無重新整理間隔]。
- 結果將會是您「有資格進行復讎」的時間。 不過,記錄目前不會消失。
- 檢查 DNS 事件記錄中是否有事件標識碼 2501 和 2502,以找出 DNS 伺服器何時會執行清除。
- 根據您的「符合清查資格」時間,尋找最新的事件標識碼 2501 或事件標識碼 2502 事件,並將伺服器的清除期間(從 伺服器屬性的 [進階 ] 索引卷標新增至該事件。
- 這是測試記錄消失的時間點。
例如:
- 區域會設定為 3 天的重新整理間隔和 3 天的無重新整理間隔。
- 伺服器清除期間設定為三天。
- 最後一個 DNS 事件標識碼 2501 或 2502 發生在 2008 年 1 月 1 日上午 6 點。
- 您有一筆記錄,時間戳為 2008/1/2008 12:00(中午)。
假設有這些假設,您可以預測記錄將在 2008 年 1 月 10 日上午 6 點左右刪除。 以下是範例的圖表。
啟用清除后,您可以定期檢查以尋找事件標識碼 2501 和 2502 事件,以查看情況。 您也可以在預測的日期和時間返回,並查看測試記錄是否已消失。