Deep Dive: DNS Scavenging æ·±å ¥çè§£
Deep Dive: DNS Scavenging (DNS æž çæºå¶)
Topic: Windows DNS Scavenging & Aging
Category: Networking / DNS
Level: äžçº§ / Intermediate
Last Updated: 2026-03-13
äžæç
1. æŠè¿° (Overview)
DNS ScavengingïŒDNS æž ç/èåæž é€ïŒæ¯ Windows DNS Server å 眮çäžå¥èªåšæž çè¿æ DNS è®°åœçæºå¶ãåšåšæ DNS (DDNS) ç¯å¢äžïŒå®¢æ·ç«¯äŒèªåšæ³šåèªå·±ç A è®°åœå PTR è®°åœãäœåœå®¢æ·ç«¯è¢«ç§»é€ãå ³æºãæŽæ¢ IP åïŒè¿äºæ§è®°åœäžäŒèªåšæ¶å€±ïŒä¹ èä¹ ä¹ DNS åºåäžå°±äŒå 积倧éâåµå°žè®°åœâïŒStale RecordsïŒã
Scavenging å°±æ¯è§£å³è¿äžªé®é¢çïŒå®åäžäžªå®æ¶æž æŽå·¥ïŒå®ææ£æ¥ææè®°åœçâæ¶éŽæ³âïŒæè¿æå€ªä¹ ãæ²¡æè¢«å®¢æ·ç«¯å·æ°çè®°åœå æã
äœæ¯ïŒç±äºå é€ DNS è®°åœæ¯äžä»¶é«é£é©æäœïŒå éäºå¯èœå¯ŒèŽæå¡äžæïŒïŒWindows åš Scavenging äžè®Ÿè®¡äºå€å±å®å šééšïŒéèŠåšäžäžªå°æ¹éœæ£ç¡®é 眮æèœçæïŒ
- èµæºè®°åœ (Resource Record) â è®°åœæ¬èº«èŠææ¶éŽæ³
- åºå (Zone) â åºåèŠå¯çš Aging/Scavenging
- æå¡åš (Server) â è³å°äžå° DNS æå¡åšèŠå¯çšèªåšæž ç
ð äžå¥è¯æ»ç»ïŒäžäžªå°æ¹éœåŒäºïŒScavenging æèœå·¥äœãå°äºä»»äœäžäžªïŒè¿æè®°åœéœäžäŒè¢«å ã
2. æ žå¿æŠå¿µ (Core Concepts)
2.1 æ¶éŽæ³ (Timestamp)
æ¯æ¡ DNS è®°åœéœæäžäžªæ¶éŽæ³å段ïŒè®°åœå®æåäžæ¬¡è¢«âå·æ°âæâæŽæ°âçæ¶éŽã
- åšææ³šåçè®°åœïŒèªåšææ¶éŽæ³ïŒWindows 客æ·ç«¯é»è®€æ¯ 24 å°æ¶å DNS 泚åäžæ¬¡ïŒ
- éæè®°åœïŒç®¡çåæåšå建çïŒïŒæ¶éŽæ³äžº 0ïŒè¡šç€ºæ°žäžæž ç
- æ¶éŽæ³ç²ŸåºŠäžºå°æ¶ïŒåäžåæŽå°æè¿çæŽç¹ïŒ
ð ç±»æ¯ïŒæ¶éŽæ³å°±åé åºæ¿éŽçâéæ¿æ¶éŽâãæ¯æ¬¡å®¢äººïŒå®¢æ·ç«¯ïŒç»äœïŒå·æ°è®°åœïŒïŒéæ¿æ¶éŽå°±æŽæ°ãåŠæå®¢äººèµ°äºåä¹äžæ¥ç»äœïŒè¿äºéæ¿æ¶éŽå°±äŒè¢«æž çã
2.2 No-Refresh éŽéïŒäžå·æ°éŽéïŒ
No-Refresh IntervalïŒé»è®€ 7 å€©ïŒæ¯äžäžªçŠæ¢å·æ°ççªå£æãåšè¿æ®µæ¶éŽå ïŒå³äœ¿å®¢æ·ç«¯å°è¯å·æ°è®°åœïŒæ¶éŽæ³ä¹äžäŒæŽæ°ã
䞺ä»ä¹éèŠè¿äžªïŒ å 䞺æ¶éŽæ³åå = AD å€å¶æµéãåŠææ¯äžªå®¢æ·ç«¯æ¯ 24 å°æ¶å·æ°äžæ¬¡è®°åœïŒæ¯æ¬¡å·æ°éœæ¹åæ¶éŽæ³ïŒå°±äŒäº§ç倧éäžå¿ èŠç AD å€å¶ãNo-Refresh éŽéå°±æ¯çšæ¥åå°å€å¶æµéçã
ð ç±»æ¯ïŒNo-Refresh å°±åé åºè¯Žâå ¥äœå 7 倩å äžçšæçµè¯ç¡®è®€ïŒæä»¬ç¥éäœ äœçå¢âã
2.3 Refresh éŽéïŒå·æ°éŽéïŒ
Refresh IntervalïŒé»è®€ 7 倩ïŒçާæ¥åš No-Refresh ä¹åãè¿äžªçªå£æå ïŒå®¢æ·ç«¯å¯ä»¥äžåºè¯¥æ¥å·æ°æ¶éŽæ³ã
åŠæåš Refresh çªå£æç»ææ¶å®¢æ·ç«¯ä»ç¶æ²¡æå·æ°è®°åœïŒè¯¥è®°åœå°±åæâ坿ž çâïŒEligible for ScavengingïŒã
ð ç±»æ¯ïŒRefresh éŽéå°±æ¯é åºç»äœ çâç»äœç¡®è®€æâã7 倩å äœ éèŠæçµè¯è¯Žâæè¿äœçâïŒåŠåé åºå°±è®€äžºäœ èµ°äºã
2.4 Scavenging åšæïŒæž çåšæïŒ
è¿æ¯ DNS æå¡åšå€ä¹ æ§è¡äžæ¬¡æž çæäœïŒé»è®€ 7 倩ïŒãå³äœ¿è®°åœå·²ç»â坿ž çâäºïŒä¹èŠçå°æå¡åšäžäžæ¬¡è¿è¡ Scavenging æ¶æäŒè¢«çæ£å é€ã
2.5 Update vs Refresh
è¿æ¯äžäžªéåžžå®¹ææ··æ·çæ žå¿æŠå¿µïŒ
| æäœ | å«ä¹ | æ¯åŠå No-Refresh éå¶ |
|---|---|---|
| UpdateïŒæŽæ°ïŒ | è®°åœçæ°æ®åäºïŒåŠ IP å°åæ¹åïŒ | â äžåéïŒä»»äœæ¶åéœå¯ä»¥ |
| RefreshïŒå·æ°ïŒ | è®°åœæ°æ®æ²¡åïŒåªæ¯âç»åœâæŽæ°æ¶éŽæ³ | â åéïŒNo-Refresh æéŽè¢«æç» |
3. å·¥äœåç (How It Works)
3.1 æŽäœæ¶æ
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â DNS Scavenging äžå±æ¶æ â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â Layer 1: Resource RecordïŒèµæºè®°åœïŒ â
â âââââââââââââââââââââââââââââââââââââââ â
â â Record: app-server01.contoso.com â â
â â IP: 10.1.1.100 â â
â â Timestamp: 2026/03/01 10:00:00 â â æ¶éŽæ³ â
â â [x] Delete when stale â â
â âââââââââââââââââââââââââââââââââââââââ â
â â
â Layer 2: ZoneïŒåºåïŒ â
â âââââââââââââââââââââââââââââââââââââââ â
â â Zone: contoso.com â â
â â [x] Scavenge stale resource records â â å¯çšæž
ç â
â â No-Refresh: 7 days â â
â â Refresh: 7 days â â
â â Zone can be scavenged after: â â
â â 2026/03/08 10:00:00 â â å®å
šé â
â âââââââââââââââââââââââââââââââââââââââ â
â â
â Layer 3: ServerïŒæå¡åšïŒ â
â âââââââââââââââââââââââââââââââââââââââ â
â â Server: dns-srv01.contoso.com â â
â â [x] Enable automatic scavenging â â å¯çšèªåš â
â â Scavenging period: 7 days â â
â âââââââââââââââââââââââââââââââââââââââ â
â â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
3.2 宿Žçåœåšæ â çšäžäžªæ äºè®²æž æ¥
åè®Ÿå ¬åž contoso.com çç¯å¢ïŒ
- No-Refresh éŽéïŒ7 倩
- Refresh éŽéïŒ7 倩
- Scavenging åšæïŒ7 倩
äžå°ç¬è®°æ¬ laptop01.contoso.comïŒIP: 10.1.1.50ïŒç DNS è®°åœäžçïŒ
æ¶éŽçº¿ (Timeline)
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Day 0 (3æ1æ¥): ç¬è®°æ¬åŒæºïŒéè¿ DDNS 泚åè®°åœ
âââ è®°åœå建: laptop01.contoso.com â 10.1.1.50
âââ æ¶éŽæ³è®Ÿçœ®äžº: 3æ1æ¥ 09:00
âââ è¿æ¯äžæ¬¡ "Update"ïŒæ°å»ºè®°åœïŒ
Day 1-7 (No-Refresh çªå£):
âââ ç¬è®°æ¬æ¯å€©å°è¯æ³šåïŒæ¯24häžæ¬¡ïŒ
âââ DNS æå¡åšè¯ŽïŒ"No-Refresh æéŽïŒäžæŽæ°æ¶éŽæ³"
âââ æ¶éŽæ³ä¿æ: 3æ1æ¥ 09:00
âââ 奜å€ïŒåå° AD å€å¶æµé â
Day 8-14 (Refresh çªå£):
âââ è¿å
¥ Refresh æéŽïŒç°åšå·æ°è¢«å
讞äº
âââ Day 8: ç¬è®°æ¬æ³šå â æ¶éŽæ³æŽæ°äžº 3æ8æ¥ 09:00 â
âââ Day 9-14: åè¿å
¥æ°ç No-Refresh åšæ...
âââ æ¶éŽæ³ç°åšæ¯: 3æ8æ¥ 09:00
Day 15: ç¬è®°æ¬è¢«å工垊走äºïŒåä¹äžåŒæº
âââ æ²¡äººæ¥å·æ°è¿æ¡è®°åœäº
âââ No-Refresh çªå£ (Day 8-14) æ£åžžè¿å»
âââ æ¶éŽæ³å»ç»åš: 3æ8æ¥ 09:00
Day 15-21 (Refresh çªå£ïŒäœæ²¡äººæ¥):
âââ è®°åœè¿å
¥ Refresh æïŒçåŸ
客æ·ç«¯æ¥å·æ°
âââ ......没人æ¥......
âââ Day 22: Refresh çªå£ç»æïŒ
Day 22: è®°åœå䞺 "坿ž
ç" (Eligible for Scavenging)
âââ åœåæ¶éŽ > æ¶éŽæ³(3/8) + No-Refresh(7倩) + Refresh(7倩)
âââ å³: 3æ22æ¥ > 3æ8æ¥ + 14倩 â
âââ äœæ¯ïŒè®°åœè¿æ²¡è¢«å ïŒèŠç Scavenging æ§è¡
Day 22-28: çåŸ
Scavenging æ§è¡
âââ å讟äžäžæ¬¡ Scavenging åš Day 21 æ§è¡è¿
âââ åšææ¯ 7 倩ïŒäžæ¬¡åš Day 28
âââ
Day 28: DNS æå¡åšæ§è¡ Scavenging
âââ æ«æææè®°åœ
âââ æ£æ¥ laptop01: æ¶éŽæ³ 3/8 + 14倩 = 3/22ïŒå·²è¿æ â
âââ å é€è®°åœïŒðïž
âââ Event ID 2501: "X records scavenged"
âââ laptop01.contoso.com çè®°åœæ£åŒæ¶å€±
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
æ»èæ¶ïŒè®°åœæåäžæ¬¡å·æ°åïŒè³å° 14倩 + æå€7倩 = 14~21 倩æäŒè¢«å
䜿çšé»è®€è®Ÿçœ®æ¶ïŒå¯èœéèŠ 14~21 倩
3.3 Eligible ä¹åãå é€ä¹å â 客æ·ç«¯è¿èœâç»åœâåïŒ
è¿æ¯äžäžªéåžžå ³é®äœå®¹æè¢«å¿œè§çåºæ¯ïŒåœè®°åœå·²ç»å䞺 EligibleïŒå¯æž çïŒïŒäœ Scavenging è¿æ²¡æ§è¡æ¶ïŒå®¢æ·ç«¯çªç¶åæ¥æ³šåäºïŒäŒææ ·ïŒ
çæ¡æ¯ïŒå¯ä»¥å·æ°ïŒè®°åœäŒè¢«âæåæ¥âïŒæŽäžªåšæéæ°åŒå§ã
æ¶éŽçº¿ (å讟å
šéš 7 倩éŽé)
âââââââââââââââââââââââââââââââââââââââââââââââââââââ
Day 0: æ¶éŽæ³ = 3æ1æ¥
âââ No-Refresh åŒå§ (Day 0-7)
â
Day 7: No-Refresh ç»æ
âââ Refresh çªå£åŒå§ (Day 7-14)
â 客æ·ç«¯å¯ä»¥å·æ°ïŒäœæ²¡æ¥...
â
Day 14: Refresh çªå£ç»æ
âââ è®°åœå䞺 "Eligible"ïŒå¯æž
çïŒ
â äœè¿æ²¡è¢«å ïŒç Scavenging æ§è¡
â
Day 14-21: çåŸ
Scavenging æ§è¡ïŒæå€7倩ïŒ
â
â â
Day 17: 客æ·ç«¯çªç¶åæ¥äºïŒåé DDNS 泚å
â âââ æå¡å𿣿¥ïŒåœåå€äº No-Refresh åïŒ
â âââ No-Refresh æ¯åºäºæ§æ¶éŽæ³(3/1) + 7倩 = 3/8
â âââ ç°å𿝠Day 17 (3/18)ïŒæ©å°±è¿äº No-Refresh
â âââ â å·æ°è¢«æ¥åïŒâ
â âââ æ¶éŽæ³æŽæ°äžºïŒ3æ18æ¥ â å
šæ°çæ¶éŽæ³ïŒ
â
â æ¥äžæ¥äŒææ ·ïŒ
â ââââââââââââââââââââââââââââââââ
â â æ°æ¶éŽæ³ = 3æ18æ¥ â
â â + No-Refresh 7倩 = 3æ25æ¥ â
â â + Refresh 7倩 = 4æ1æ¥ â
â â â
â â è®°åœäžå EligibleïŒ â
â â æŽäžªåšæéæ°åŒå§ ð â
â ââââââââââââââââââââââââââââââââ
â
Day 21: Scavenging æ§è¡æ¶
âââ æ£æ¥è¯¥è®°åœïŒæ¶éŽæ³ = 3/18ïŒå·²è¢«å·æ°ïŒ
âââ 3/18 + 14倩 = 4/1ïŒè¿æ²¡è¿æ
âââ è·³è¿ïŒè®°åœå掻 â
Eligible æéŽäžåæäœçç»æïŒ
| æ åµ | ç»æ |
|---|---|
| Eligible æéŽå®¢æ·ç«¯åæ¥å·æ°ïŒRefreshïŒ | â æ¶éŽæ³æŽæ°ïŒåšæéå¯ïŒè®°åœè¢«æ |
| Eligible æéŽå®¢æ·ç«¯æŽæ¢äº IPïŒUpdateïŒ | â è¿æ¯ UpdateïŒä»»äœæ¶åéœå è®žïŒæ¶éŽæ³ä¹æŽæ° |
| Eligible æéŽæ²¡äººæ¥ â Scavenging æ§è¡ | ðïž è®°åœè¢«å é€ |
ð¡ è®Ÿè®¡ææ³ïŒScavenging äžæ¯âäžæŠ Eligible å°±ç«å»å âïŒèæ¯æäžäžªçŒå²æïŒçåŸ Scavenging åšæå°æ¥ïŒãåšè¿æ®µçŒå²æå ïŒå®¢æ·ç«¯ä»ææºäŒâç»åœâãè¿ä¹æ¯äžºä»ä¹ No-Refresh ç倿æ¯åºäºè®°åœåœåæ¶éŽæ³èéåºåçåºå®æ¶éŽçªå£ â æ§æ¶éŽæ³ç No-Refresh æ©å·²è¿æïŒæä»¥å·æ°è¯·æ±äŒè¢«æ¥åã
3.4 Scavenging æ§è¡æ¶çæ£æ¥æž å
åœ DNS æå¡åšå¯åšäžæ¬¡ Scavenging æ¶ïŒå®æä»¥äžé¡ºåºæ£æ¥ïŒ
Scavenging æ§è¡æµçš
âââââââââââââââââââ
åŒå§ Scavenging
â
âŒ
[1] åºåæ¯åŠå¯çšäº ScavengingïŒ âââ åŠ âââ è·³è¿è¯¥åºå
â æ¯
âŒ
[2] åºåæ¯åŠå¯çšäºåšææŽæ°ïŒ âââ åŠ âââ è·³è¿è¯¥åºå
â æ¯
âŒ
[3] åœåæå¡åšæ¯åŠæææž
ç该åºåïŒ âââ åŠ âââ è·³è¿
â æ¯ (dnscmd /zoneresetscavengeservers)
âŒ
[4] "Zone can be scavenged after"
æ¶éŽæ¯åŠå·²è¿ïŒ âââ åŠ âââ è·³è¿ïŒç»å®¢æ·ç«¯åå€å¶çæ¶éŽïŒ
â æ¯
âŒ
[5] AD å€å¶æ¯åŠæ£åžžïŒ âââ åŠ âââ è·³è¿ïŒé²æ¢è¯¯å ïŒ
â æ¯
âŒ
âââââââââââââââââââââââââââââââââââ
â éæ¡æ£æ¥åºåå
çæ¯æ¡è®°åœïŒ â
â â
â è®°åœæ¶éŽæ³ = 0ïŒ â
â âââ æ¯ â éæè®°åœïŒè·³è¿ â
â âââ åŠ â â
â â
â åœåæ¶éŽ > æ¶éŽæ³ â
â + No-Refresh â
â + Refresh ïŒ â
â âââ åŠ â è®°åœæªè¿æïŒè·³è¿ â
â âââ æ¯ â å é€è¯¥è®°åœïŒðïž â
âââââââââââââââââââââââââââââââââââ
â
âŒ
è®°åœ Event Log:
- Event ID 2501: æè®°åœè¢«æž
ç
- Event ID 2502: 没æè®°åœè¢«æž
ç
3.5 äžäžªå ·äœçæ¶éŽè®¡ç®äŸå
让æä»¬çšäžäžªæŽå ·äœçæ°åæ¥å计ç®ïŒ
ç¯å¢è®Ÿçœ®ïŒ
- No-Refresh éŽéïŒ3 倩
- Refresh éŽéïŒ3 倩
- æå¡åš Scavenging åšæïŒ3 倩
- äžäžæ¬¡ Event ID 2501/2502ïŒ1æ1æ¥ 6:00 AM
- è®°åœæ¶éŽæ³ïŒ1æ1æ¥ 12:00 PMïŒäžåïŒ
计ç®è¿çšïŒ
è®°åœæ¶éŽæ³: 1æ1æ¥ 12:00 PM
+ No-Refresh (3倩): 1æ4æ¥ 12:00 PM â è¿ä¹åäžå
è®žå·æ°
+ Refresh (3倩): 1æ7æ¥ 12:00 PM â è¿ä¹åè®°åœ"坿ž
ç"
è®°åœå䞺 Eligible: 1æ7æ¥ 12:00 PM
äžæ¬¡ Scavenging: 1æ1æ¥ 6:00 AM
+ åšæ (3倩): 1æ4æ¥ 6:00 AM â ç¬¬äºæ¬¡
+ åšæ (3倩): 1æ7æ¥ 6:00 AM â ç¬¬äžæ¬¡ (è¿æ©äº 12:00 PM)
+ åšæ (3倩): 1æ10æ¥ 6:00 AM â ç¬¬åæ¬¡ â æ€æ¶è®°åœå·²ç» eligible
⎠记åœè¢«å 逿¶éŽ: 纊 1æ10æ¥ 6:00 AM
仿¶éŽæ³å°å®é 被å é€ïŒçºŠ 9 倩ã
4. å ³é®é 眮äžåæ° (Key Configurations)
| é 眮项 | é»è®€åŒ | äœçœ® | 诎æ | 建议 |
|---|---|---|---|---|
| è®°åœæ¶éŽæ³ | åšæè®°åœèªåšè®Ÿçœ®ïŒéæäžº 0 | è®°åœå±æ§ | æåå·æ°/æŽæ°æ¶éŽ | äžèŠå¯¹éæè®°åœå¯çš scavenging |
| No-Refresh Interval | 7 倩 | Zone â Aging | çŠæ¢å·æ°çæ¶éŽçªå£ | å¯éåœçŒ©çïŒåŠ 3-4 倩ïŒä»¥å å¿«æž ç |
| Refresh Interval | 7 倩 | Zone â Aging | å è®žå·æ°çæ¶éŽçªå£ | ä¿æé»è®€æçšé¿ïŒç»å®¢æ·ç«¯è¶³å€æºäŒ |
| Scavenge stale records | â æªå¯çš | Zone â Aging | åºå级åŒå ³ | æéå¯çš |
| Enable automatic scavenging | â æªå¯çš | Server â Advanced | æå¡åšçº§åŒå ³ | åªåš 1 å° DNS æå¡åšäžå¯çš |
| Scavenging Period | 7 倩 | Server â Advanced | å€ä¹ æ§è¡äžæ¬¡ | äž Refresh éŽéäžèŽææŽç |
PowerShell é 眮åœä»€
# æ¥çåºåç Aging 讟眮
Get-DnsServerZoneAging -Name "contoso.com"
# å¯çšåºå Aging
Set-DnsServerZoneAging -Name "contoso.com" -Aging $true -NoRefreshInterval 7.00:00:00 -RefreshInterval 7.00:00:00
# å¯çšæå¡åš Scavenging
Set-DnsServerScavenging -ScavengingState $true -ScavengingInterval 7.00:00:00
# æåšè§Šå ScavengingïŒä»åå®å
šééå¶ïŒ
Start-DnsServerScavenging
# æ¥çç¹å®è®°åœçæ¶éŽæ³
Get-DnsServerResourceRecord -ZoneName "contoso.com" -Name "laptop01" | Select-Object HostName, Timestamp, TimeToLive
# éå¶åªå
讞ç¹å®æå¡åš Scavenging
dnscmd dns-srv01.contoso.com /zoneresetscavengeservers contoso.com 10.1.1.10
5. åžžè§é®é¢äžææ¥ (Common Issues & Troubleshooting)
é®é¢ A: Scavenging 没æå·¥äœïŒè¿æè®°åœäžè¢«æž ç
å¯èœåå ïŒ
- äžå±é çœ®äžæäžå±æ²¡åŒïŒæåžžè§ïŒ
- âZone can be scavenged afterâ æ¶éŽè¿æ²¡å°
- è®°åœæ¶éŽæ³äžº 0ïŒéæè®°åœïŒ
- AD å€å¶æé®é¢
ææ¥æè·¯ïŒ
# 1. æ£æ¥åºå Aging æ¯åŠå¯çš
Get-DnsServerZoneAging -Name "contoso.com"
# ç AgingEnabled æ¯åŠäžº True
# 2. æ£æ¥æå¡åš Scavenging æ¯åŠå¯çš
Get-DnsServerScavenging
# ç ScavengingState æ¯åŠäžº True
# 3. æ£æ¥ç®æ è®°åœçæ¶éŽæ³
Get-DnsServerResourceRecord -ZoneName "contoso.com" -Name "target-host"
# æ¶éŽæ³äžº 0 = éæè®°åœïŒäžäŒè¢«æž
ç
# 4. æ£æ¥ Scavenging Event Log
Get-WinEvent -FilterHashtable @{LogName='DNS Server';Id=2501,2502} -MaxEvents 10
é®é¢ B: æ£åžžçè®°åœè¢«è¯¯å äºïŒOver-ScavengingïŒ
å¯èœåå ïŒ
- 管çåè¿è¡äº
dnscmd /ageallrecordsïŒç»ææè®°åœïŒå æ¬éæè®°åœïŒå äºæ¶éŽæ³ - No-Refresh + Refresh éŽé讟眮倪ç
- 客æ·ç«¯ DDNS 泚åæé®é¢ïŒåŠè¢«é²ç«å¢é»æ¢ïŒ
- è®°åœç ACL æéäžå¯¹ïŒå®¢æ·ç«¯æ æ³æŽæ°
ææ¥æè·¯ïŒ
- æ£æ¥è¢«å è®°åœçåå§ææè ïŒSecurity tabïŒ
- æ£æ¥å®¢æ·ç«¯æ¯åŠèœæåæ§è¡
ipconfig /registerdns - æ£æ¥ DNS åšææŽæ°æ¯åŠè¢«å®å šçç¥é»æ¢
- äžŽæ¶æªæœïŒæè®°åœæ¹äžºéæïŒæ¶éŽæ³è®Ÿäžº 0ïŒ
é®é¢ C: æ¶éŽæ³äžæŽæ°ïŒäžå€å¶å°å ¶ä» DNS æå¡åšïŒ
å¯èœåå ïŒ
- åºå Scavenging æªå¯çšæ¶ïŒæ¶éŽæ³æŽæ°äžäŒè¢«å€å¶
- è¿æ¯è®Ÿè®¡è¡äžºïŒåŠæåºåæ²¡åŒ AgingïŒæ¶éŽæ³æ æä¹ïŒäžæµªè޹å€å¶åžŠå®œ
å ³é®ç¹ïŒäžæŠå¯çšåºå AgingïŒæ¶éŽæ³æäŒåŒå§æ£åžžå€å¶ã
é®é¢ D: éŠæ¬¡å¯çš Scavenging å倧éè®°åœè¢«å
åå ïŒåå²éççè¿æè®°åœäžæ¬¡æ§è¢«æž
ç
é¢é²ïŒæç
§âäžé¶æ®µå¯çšæ³âïŒè§äžæå®æç»éªïŒ
6. 宿ç»éª (Practical Tips)
æäœ³å®è·µ
- åªåš 1 å° DNS æå¡åšäžå¯çš Scavenging
- å 䞺åºåæ°æ®æ¯ AD å€å¶çïŒ1 å°æž çå³å¯
- 䟿äºéäžæ¥ç Event Log
- 䜿çš
dnscmd /zoneresetscavengeservers粟确æ§å¶
-
äžé¶æ®µå®å šå¯çšæ³ïŒéå¯¹ç°æç¯å¢ïŒ
é¶æ®µ 1 â åå€ïŒSetupïŒ: âââ å ³éæææå¡åšç Scavenging âââ å¯çšç®æ åºåç AgingïŒè®Ÿå¥œ No-Refresh å RefreshïŒ âââ çåŸ No-Refresh + Refresh æ¶éŽè¿å»ïŒé»è®€ 14 å€©ïŒ é¶æ®µ 2 â å¥å 𿣿¥ïŒSanity CheckïŒ: âââ æ£æ¥æ¯åŠææ¶éŽæ³è¿æ§çè®°åœ âââ åŠææ â ææ¥ DDNS 泚åé®é¢ïŒä¿®å€ååçäžäžªåšæ âââ ç¡®è®€æææŽ»è·å®¢æ·ç«¯çè®°åœæ¶éŽæ³éœåšåçèåŽå é¶æ®µ 3 â å¯çšïŒEnableïŒ: âââ åš 1 å°æå¡åšäžå¯çš Scavenging âââ åå»ºäžæ¡æµè¯è®°åœïŒè®¡ç®é¢æå 逿¶éŽ âââ è§å¯ Event ID 2501/2502 âââ 确讀æµè¯è®°åœåšé¢ææ¶éŽè¢«å é€ â - çæ§ Event Log
- Event ID 2501ïŒæè®°åœè¢«æž çïŒæŸç€ºæ°é
- Event ID 2502ïŒæ§è¡äº Scavenging äœæ²¡æè®°åœè¢«æž ç
- éè¿è¿äž€äžªäºä»¶å¯ä»¥ç²Ÿç¡®è®¡ç®äžæ¬¡ Scavenging æ¶éŽ
åžžè§è¯¯åº
| è¯¯åº | äºå® |
|---|---|
| âå¯çš Zone Aging å°±å€äºâ | â è¿éèŠåšæå¡åšäžå¯çš Scavenging |
| âæåš Scavenge å¯ä»¥ç»è¿å®å 𿣿¥â | â æåšè§Šåä»ç¶åææå®å šééšéå¶ |
âdnscmd /ageallrecords åŸå®å
šâ |
â ïž è¿äŒç»ææéæè®°åœå æ¶éŽæ³ïŒå¯ŒèŽå®ä»¬è¢«æž çïŒ |
| âScavenging åºè¯¥åšæ¯å° DNS æå¡åšäžåŒâ | â 建议åªåŒ 1 å°ïŒæ¹äŸ¿ææ¥åæ§å¶ |
| âNo-Refresh æéŽè®°åœå®å šäžèœæŽæ°â | â åªæ RefreshïŒå IP ç»åœïŒè¢«æç»ïŒUpdateïŒIP åæŽïŒäžåé |
å®å šæ³šæ
- æ°žè¿äžèŠåšäžçè§£çæ
åµäžè¿è¡
dnscmd /ageallrecords - å€ä»œ DNS åºåååå¯çš Scavenging
- 䜿çš
Export-DnsServerZone富åºåºåæ°æ®äœäžºåæ»ææ®µ - SRV è®°åœå _msdcs åºåçè®°åœèŠç¹å«å°å¿
7. äžçžå ³ææ¯çå¯¹æ¯ (Comparison with Related Technologies)
| 绎床 | DNS Scavenging | DNS TTL (Time-to-Live) | DHCP Lease Cleanup |
|---|---|---|---|
| äœçšå¯¹è±¡ | DNS Server äžçèµæºè®°åœ | DNS Client/Resolver ççŒå | DHCP å°ååé |
| æž ççæ¯ä»ä¹ | æå¡åšç«¯çè¿æè®°åœ | 客æ·ç«¯çŒåçè¿ææ¡ç® | è¿æç IP å°åç§çºŠ |
| è°æ¥æ§è¡ | DNS Server | DNS Client/Resolver | DHCP Server |
| è§Šåæ¹åŒ | 宿¶èªåš + å¯æåš | çŒåå°æèªåšæž é€ | ç§çºŠå°æèªåšåæ¶ |
| 圱åèåŽ | æææ¥è¯¢è¯¥æå¡åšç客æ·ç«¯ | ä» æ¬å°å®¢æ·ç«¯ | IP å°åæ± ç®¡ç |
| é»è®€æ¯åŠå¯çš | â é»è®€äžå¯çš | â å§ç»çæ | â å§ç»çæ |
| é£é© | å éè®°åœå¯ŒèŽè§£æå€±èŽ¥ | çŒåè¿æå¯ŒèŽçææ¥è¯¢å»¶è¿ | å°ååæ¶å¯ŒèŽ IP å²çª |
å ³è诎æïŒDNS Scavenging å DHCP Lease éåžžéèŠåè°ãçæ³æ åµäžïŒDNS è®°åœççåœåšæåºè¯¥å DHCP ç§çºŠåšæå¹é ãåŠæ DHCP ç§çºŠ 8 倩ïŒDNS Scavenging ç No-Refresh + Refresh æå¥œ ⥠8 倩ã
8. åèèµæ (References)
- Set up DNS scavenging â åŸ®èœ¯å®æ¹ææ¥ææ¡£ïŒå å«å®æŽç Scavenging 讟眮瀺äŸåè®¡ç®æ¹æ³
English Version
1. Overview
DNS Scavenging is a built-in mechanism in Windows DNS Server that automatically cleans up stale (outdated) DNS resource records. In Dynamic DNS (DDNS) environments, clients automatically register their A and PTR records. However, when clients are decommissioned, shut down, or change IP addresses, these old records donât automatically disappear. Over time, DNS zones accumulate âzombie recordsâ (stale records).
Scavenging solves this problem: it acts like a scheduled janitor, periodically checking timestamps on all records and deleting those that havenât been refreshed by clients for too long.
Because deleting DNS records is a high-risk operation (deleting the wrong record could cause service outages), Windows has designed multiple safety valves into the scavenging mechanism. Configuration must be correct in three places:
- Resource Record â The record must have a timestamp
- Zone â Aging/Scavenging must be enabled on the zone
- Server â At least one DNS server must have automatic scavenging enabled
ð Key takeaway: All three must be enabled for scavenging to work. If any one is missing, stale records wonât be deleted.
2. Core Concepts
2.1 Timestamp
Every DNS resource record has a timestamp field recording when it was last ârefreshedâ or âupdated.â
- Dynamically registered records: Automatically have timestamps (Windows clients register with DNS every 24 hours by default)
- Static records (manually created by admins): Timestamp is 0, meaning never scavenged
- Timestamp precision is hourly (rounded down to the nearest hour)
ð Analogy: The timestamp is like a hotel roomâs âcheckout time.â Each time the guest (client) extends their stay (refreshes the record), the checkout time is updated. If the guest leaves and never comes back, the room gets cleaned up after checkout.
2.2 No-Refresh Interval
The No-Refresh Interval (default: 7 days) is a window during which a recordâs timestamp cannot be refreshed. A âRefreshâ means a dynamic update where the record data doesnât change â just touching the timestamp. If a client changes the IP of a host record, this is an âUpdateâ and is exempt from the No-Refresh restriction.
Why is this needed? Because timestamp changes = AD replication traffic. The No-Refresh interval reduces unnecessary replication.
ð Analogy: No-Refresh is like a hotel saying âNo need to call during the first 7 days â we know youâre still staying.â
2.3 Refresh Interval
The Refresh Interval (default: 7 days) follows immediately after No-Refresh. During this window, clients can and should refresh their timestamps.
If the client fails to refresh during the Refresh window, the record becomes âEligible for Scavenging.â
ð Analogy: The Refresh interval is the hotelâs âstay confirmation period.â You need to call within 7 days to say âIâm still here,â or the hotel will assume youâve left.
2.4 Scavenging Period
This is how often the DNS server runs the scavenging process (default: 7 days). Even if a record is âeligible,â it wonât be deleted until the next scavenging cycle runs.
2.5 Update vs Refresh
A critical distinction that is often confused:
| Operation | Meaning | Subject to No-Refresh? |
|---|---|---|
| Update | Record data changed (e.g., IP changed) | â No â always allowed |
| Refresh | Record data unchanged, just updating timestamp | â Yes â blocked during No-Refresh |
3. How It Works
3.1 Architecture
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â DNS Scavenging Three-Layer Architecture â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â Layer 1: Resource Record â
â âââââââââââââââââââââââââââââââââââââââ â
â â Record: app-server01.contoso.com â â
â â IP: 10.1.1.100 â â
â â Timestamp: 2026/03/01 10:00:00 â â timestamp â
â â [x] Delete when stale â â
â âââââââââââââââââââââââââââââââââââââââ â
â â
â Layer 2: Zone â
â âââââââââââââââââââââââââââââââââââââââ â
â â Zone: contoso.com â â
â â [x] Scavenge stale resource records â â enabled â
â â No-Refresh: 7 days â â
â â Refresh: 7 days â â
â â Zone can be scavenged after: â â
â â 2026/03/08 10:00:00 â â safety â
â âââââââââââââââââââââââââââââââââââââââ â
â â
â Layer 3: Server â
â âââââââââââââââââââââââââââââââââââââââ â
â â Server: dns-srv01.contoso.com â â
â â [x] Enable automatic scavenging â â enabled â
â â Scavenging period: 7 days â â
â âââââââââââââââââââââââââââââââââââââââ â
â â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
3.2 Complete Lifecycle â A Story-Based Example
Assume the contoso.com environment has:
- No-Refresh Interval: 7 days
- Refresh Interval: 7 days
- Scavenging Period: 7 days
The lifecycle of a DNS record for laptop01.contoso.com (IP: 10.1.1.50):
Timeline
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Day 0 (March 1): Laptop boots up, registers via DDNS
âââ Record created: laptop01.contoso.com â 10.1.1.50
âââ Timestamp set to: March 1, 09:00
âââ This is an "Update" (new record creation)
Day 1-7 (No-Refresh Window):
âââ Laptop attempts registration daily (every 24h)
âââ DNS Server: "No-Refresh period â timestamp NOT updated"
âââ Timestamp remains: March 1, 09:00
âââ Benefit: Reduced AD replication traffic â
Day 8-14 (Refresh Window):
âââ Refresh period begins â refreshes now accepted
âââ Day 8: Laptop registers â Timestamp updated to March 8, 09:00 â
âââ Day 9-14: New No-Refresh cycle begins...
âââ Timestamp now: March 8, 09:00
Day 15: Employee takes laptop away permanently
âââ No one refreshes the record anymore
âââ No-Refresh window (Day 8-14) passes normally
âââ Timestamp frozen at: March 8, 09:00
Day 15-21 (Refresh Window, but no one comes):
âââ Record enters Refresh period, waiting for client
âââ ......no one comes......
âââ Day 22: Refresh window expires!
Day 22: Record becomes "Eligible for Scavenging"
âââ Current time > Timestamp(3/8) + No-Refresh(7d) + Refresh(7d)
âââ i.e.: March 22 > March 8 + 14 days â
âââ BUT! Record not deleted yet â must wait for scavenging cycle
Day 22-28: Waiting for Scavenging to Execute
âââ Last scavenging ran on Day 21
âââ Period is 7 days, next run on Day 28
âââ
Day 28: DNS Server executes Scavenging
âââ Scans all records
âââ Checks laptop01: Timestamp 3/8 + 14d = 3/22, expired â
âââ Record deleted! ðïž
âââ Event ID 2501: "X records scavenged"
âââ laptop01.contoso.com record is gone
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Total time: At least 14 days + up to 7 days = 14-21 days after last refresh
3.3 After Eligible, Before Deletion â Can the Client Still âSaveâ the Record?
This is a critical but often overlooked scenario: When a record has become Eligible for scavenging, but the scavenging cycle hasnât run yet, what happens if the client comes back and registers?
The answer is: Yes, the refresh is accepted! The record is âsavedâ and the entire cycle restarts.
Timeline (assuming all 7-day intervals)
âââââââââââââââââââââââââââââââââââââââââââââââââââââ
Day 0: Timestamp = March 1
âââ No-Refresh begins (Day 0-7)
â
Day 7: No-Refresh ends
âââ Refresh window begins (Day 7-14)
â Client can refresh, but doesn't come...
â
Day 14: Refresh window expires
âââ Record becomes "Eligible" for scavenging
â But NOT deleted yet â waiting for scavenging cycle
â
Day 14-21: Waiting for Scavenging to execute (up to 7 days)
â
â â
Day 17: Client suddenly comes back! Sends DDNS registration
â âââ Server checks: Are we in No-Refresh?
â âââ No-Refresh = old timestamp (3/1) + 7 days = 3/8
â âââ Current date is Day 17 (3/18), well past No-Refresh
â âââ â Refresh accepted! â
â âââ Timestamp updated to: March 18 â brand new timestamp!
â
â What happens next?
â ââââââââââââââââââââââââââââââââââââ
â â New timestamp = March 18 â
â â + No-Refresh 7 days = March 25 â
â â + Refresh 7 days = April 1 â
â â â
â â Record is NO LONGER Eligible! â
â â Entire cycle restarts ð â
â ââââââââââââââââââââââââââââââââââââ
â
Day 21: When Scavenging executes
âââ Checks this record: Timestamp = 3/18 (refreshed!)
âââ 3/18 + 14 days = 4/1, not yet expired
âââ Skipped! Record survives â
Results of different actions during the Eligible period:
| Scenario | Result |
|---|---|
| Client comes back and refreshes during Eligible period | â Timestamp updated, cycle restarts, record saved |
| Client changes IP (Update) during Eligible period | â Updates are always allowed, timestamp also updated |
| No one comes â Scavenging executes | ðïž Record deleted |
ð¡ Design philosophy: Scavenging doesnât delete immediately upon Eligible status â thereâs a buffer period (waiting for the scavenging cycle). During this buffer, clients still have a chance to âsaveâ their records. This is why the No-Refresh check is based on the recordâs current timestamp rather than a fixed zone-wide window â the old timestampâs No-Refresh has long expired, so refresh requests are accepted.
3.4 Concrete Calculation Example
Environment:
- No-Refresh Interval: 3 days
- Refresh Interval: 3 days
- Server Scavenging Period: 3 days
- Last Event ID 2501/2502: Jan 1, 6:00 AM
- Record Timestamp: Jan 1, 12:00 PM (noon)
Calculation:
Record Timestamp: Jan 1, 12:00 PM
+ No-Refresh (3 days): Jan 4, 12:00 PM â No refresh allowed before this
+ Refresh (3 days): Jan 7, 12:00 PM â Record eligible after this
Record becomes eligible: Jan 7, 12:00 PM
Last Scavenging: Jan 1, 6:00 AM
+ Period (3 days): Jan 4, 6:00 AM â 2nd cycle
+ Period (3 days): Jan 7, 6:00 AM â 3rd cycle (before 12:00 PM)
+ Period (3 days): Jan 10, 6:00 AM â 4th cycle â record is now eligible
⎠Record deleted at: approximately Jan 10, 6:00 AM
From timestamp to actual deletion: approximately 9 days.
4. Key Configurations
| Setting | Default | Location | Description | Recommendation |
|---|---|---|---|---|
| Record Timestamp | Auto for dynamic; 0 for static | Record Properties | Last refresh/update time | Donât enable scavenging on static records |
| No-Refresh Interval | 7 days | Zone â Aging | Window during which refresh is blocked | Can shorten (e.g., 3-4 days) for faster cleanup |
| Refresh Interval | 7 days | Zone â Aging | Window during which refresh is allowed | Keep default or slightly longer |
| Scavenge stale records | â Disabled | Zone â Aging | Zone-level switch | Enable as needed |
| Enable automatic scavenging | â Disabled | Server â Advanced | Server-level switch | Enable on only 1 DNS server |
| Scavenging Period | 7 days | Server â Advanced | How often scavenging runs | Match or shorter than Refresh interval |
PowerShell Commands
# View zone aging settings
Get-DnsServerZoneAging -Name "contoso.com"
# Enable zone aging
Set-DnsServerZoneAging -Name "contoso.com" -Aging $true -NoRefreshInterval 7.00:00:00 -RefreshInterval 7.00:00:00
# Enable server scavenging
Set-DnsServerScavenging -ScavengingState $true -ScavengingInterval 7.00:00:00
# Manually trigger scavenging (still subject to safety checks)
Start-DnsServerScavenging
# Check specific record timestamp
Get-DnsServerResourceRecord -ZoneName "contoso.com" -Name "laptop01" | Select-Object HostName, Timestamp, TimeToLive
# Restrict scavenging to specific servers
dnscmd dns-srv01.contoso.com /zoneresetscavengeservers contoso.com 10.1.1.10
5. Common Issues & Troubleshooting
Issue A: Scavenging Not Working â Stale Records Not Deleted
Possible causes:
- One of the three layers is not enabled (most common)
- âZone can be scavenged afterâ time hasnât elapsed
- Record timestamp is 0 (static record)
- AD replication issues
Troubleshooting:
# 1. Check zone aging
Get-DnsServerZoneAging -Name "contoso.com"
# 2. Check server scavenging
Get-DnsServerScavenging
# 3. Check target record timestamp
Get-DnsServerResourceRecord -ZoneName "contoso.com" -Name "target-host"
# 4. Check Scavenging Event Log
Get-WinEvent -FilterHashtable @{LogName='DNS Server';Id=2501,2502} -MaxEvents 10
Issue B: Valid Records Deleted (Over-Scavenging)
Possible causes:
- Admin ran
dnscmd /ageallrecordsâ sets timestamps on ALL records including static ones - No-Refresh + Refresh intervals set too short
- Client DDNS registration failing (firewall, permissions)
- Record ACL prevents client from updating
Issue C: Timestamps Not Replicating
Key insight: When zone scavenging is not enabled, timestamp updates are not replicated. This is by design â if aging isnât enabled, timestamps are irrelevant, so replication bandwidth is saved.
6. Practical Tips
Best Practices
- Enable scavenging on only 1 DNS server â zone data is AD-replicated, so one server cleaning is sufficient
- Use the three-phase safe enablement for existing environments (Setup â Sanity Check â Enable)
- Monitor Event IDs 2501/2502 â these tell you exactly when scavenging runs and how many records are cleaned
Common Misconceptions
| Misconception | Reality |
|---|---|
| âEnabling Zone Aging is enoughâ | â Server scavenging must also be enabled |
| âManual Scavenge bypasses safety checksâ | â Still subject to all safety valves |
âdnscmd /ageallrecords is safeâ |
â ïž Timestamps ALL records including static â they will be scavenged! |
| âEnable scavenging on every DNS serverâ | â Recommend only 1 server for easier management |
| âNo-Refresh blocks all record changesâ | â Only Refresh (same-IP timestamp update) is blocked; Updates (IP change) always allowed |
7. Comparison with Related Technologies
| Dimension | DNS Scavenging | DNS TTL (Time-to-Live) | DHCP Lease Cleanup |
|---|---|---|---|
| Target | Resource records on DNS Server | Cache entries on DNS Client/Resolver | DHCP address assignments |
| Whatâs cleaned | Stale server-side records | Expired client-side cache | Expired IP leases |
| Executed by | DNS Server | DNS Client/Resolver | DHCP Server |
| Trigger | Scheduled + manual | Automatic on expiry | Automatic on expiry |
| Default enabled | â No | â Always | â Always |
| Risk | Wrong deletion â resolution failure | Cache expiry â brief query delay | Address reclaim â IP conflict |
8. References
- Set up DNS scavenging â Official Microsoft troubleshooting doc with complete setup example and calculation method