DNS Scavenging
Cos’è lo Scavenging?
Tramite la funzionalità Dynamic Update i records DNS vengono automaticamente aggiunti alla zona quando computers e domain controllers vengono aggiunti in Active Directory ma, in alcuni casi, non vengono automaticamente cancellati.
La presenza di records DNS obsoleti (stale) può causare vari problemi, quali l’occupazione inutile di spazio sul DB e la possibilità che un server utilizzi questi records per rispondere alle query DNS. Il risultato è che le performance del DNS possano risentirne ed inoltre lo startup del database DNS potrebbe essere lento.
Per risolvere questo tipo di problematica, il DNS Microsoft può effettuare scavenging (pulizia) dei records obsoleti (records registrati dinamicamente che non vengono aggiornati da un certo intervallo di tempo) cercandoli nel database ed eliminandoli automaticamente. Questa operazione semplifica anche il troubleshooting e la risoluzione di eventuali problemi. Senza lo scavenging, i records di clients non più in rete possono rimanere sul database DNS per un tempo indefinito.
Il processo di aging (invecchiamento dei records) e scavenging (pulizia dei records) può essere controllato specificando:
- Quali records devono essere eliminati se diventano obsoleti
- Quali zone devono essere soggette al processo di scavenging
- Quali servers possono effettuare scavenging della zona DNS
N.B.: Lo scavenging deve essere attivato su tutti questi elementi per poter funzionare!
Il processo DNS Client
I clients Microsoft Windows di default aggiornano dinamicamente I records DNS ogni 24 ore.
Quando un nuovo record viene registrato da un client sul database DNS, ad esso viene aggiunto un ‘timestamp’ (data ed ora di creazione/ultima modifica). Se il record DNS di questo client è già presente ma l’indirizzo IP del client è cambiato, anche in questo caso viene aggiunto un timestamp. Se invece il client ha già registrato il suo record sul DNS ed il suo indirizzo IP è rimasto lo stesso, il timestamp può essere modificato o meno a seconda delle impostazioni applicate sulla zona.
Come appena descritto, lo scavenging va abilitato esplicitamente su records, zone e server DNS per poter funzionare. Andiamo adesso ad illustrare nel dettaglio la procedura.
Impostare lo Scavenging sui records
Dalla console DNS selezionare View--> Advanced
Sulle proprietà del record DNS abilitare il flag “delete this record when it becomes stale” (vedi figura 1)
Figura 1: Abilitazione dello Scavenging sui records DNS
Se sulle zone DNS sono impostati i Dynamic Updates, questo flag è sempre abilitato di default. Se invece il record è stato creato manualmente (static), il flag non è automaticamente abilitato ed al record non viene assegnato un timestamp (vedi figura 2).
Figura 2: DNS Timestamps
Lo Scavenging sui records può anche essere impostato tramite il commando DNScmd.exe /ageallrecords
L’esecuzione di questo comando su una zona comporta l’assegnazione di un timestamp a tutti i records della zona, compresi i records statici di cui magari non si desidera la cancellazione, per cui fare molta attenzione!!
Impostare lo Scavenging sulla zona
Nelle proprietà della zona cliccare sul pulsante Aging ed abilitare il flag “Scavenge stale resource records” (vedi figura 3).
Figura 3: Impostazione dello Scavenging sulla zona DNS
E’ possibile inoltre configurare due intervalli: NO-REFRESH e REFRESH, che determinano l‘aging (invecchiamento) dei records DNS.
L’intervallo di NO-REFRESH (default 7gg) è il periodo di tempo durante il quale il timestamp di un record non può essere aggiornato. La funzione principale di questo intervallo è quella di ridurre il traffico di replica (ogni modifica di un record deve essere replicata). Durante l’intervallo di NO-REFRESH un’eventuale modifica all’indirizzo IP di un record verrà considerata come un ‘aggiornamento’ e sarà comunque applicata.
L’intervallo di REFRESH (default 7gg) è invece il periodo di tempo durante il quale il timestamp del records può essere aggiornato (ai clients verrà permesso di aggiornare il timestamp dei loro records). Se durante questo intervallo il record non verrà aggiornato dal client, esso sarà “eleggibile” per il processo di Scavenging.
In sostanza il processo di scavenging non inizia se prima non sono trascorsi gli intervalli di NO-REFRESH e REFRESH (default 7gg+7gg=14gg).
IMPORTANTE: Attivare lo scavenging prima sulla zona DNS ed attendere che siano trascorsi gli intervalli di NO-REFRESH e REFRESH prima di abilitarlo anche sul server. Questo per dar modo ai timestamps di aggiornarsi ed evitare la loro prematura e non voluta cancellazione!
Impostare lo Scavenging sul Server DNS
Nelle proprietà del server DNS cliccare sul tab Advanced e mettere il flag su “Enable automatic scavenging of stale records” (vedi Figura 4)
E’ altresì possibile impostare lo Scavenging period, che rappresenta l’intervallo di tempo (default 7gg) durante il quale il server DNS effettuerà scavenging dei records eletti alla cancellazione (ovvero il loro timestamp non è stato aggiornato) durante l’intervallo di refresh.
Figura 4: Impostazione dello Scavenging sul Server DNS
Se si lasciando i valori impostati di default, dopo 14gg inizierà il processo di scavenging che avrà una durata di altri 7gg. Quindi, trascorsi 21 giorni, il processo inizierà da capo.
Una volta iniziato il processo di scavenging, il server registra sull’event viewer l’evento 2501 indicando quanti records sono stati eliminati. Se nessun record viene eliminato dal processo di scavenging verrà invece registrato l’evento 2502.
E’ sufficiente abilitare lo scavenging anche su un solo server DNS che ospita la zona, in quanto i dati della zona vengono replicati su tutti gli altri servers che ospitano la zona stessa. E’ consigliabile tuttavia abilitarlo almeno su 2 servers che ospitano la zona, in modo tale da assicurare un meccanismo di failover qualora uno dei due non fosse più disponibile.
N.B.: Gli intervalli di NO-REFRESH, REFRESH e Scavenging vanno impostati in relazione alla durata del lease DHCP, che di default è impostato ad 8gg.
Best Practices
Fase di setup
- Disabilitare lo scavenging su tutti i servers. Per assicurarsi che il processo non parta inavvertitamente eseguire il comando DNSCmd /ZoneResetScavengeServers per confinare lo scavenging su un solo server ed assicurarsi che questo server abbia lo scavenging disabilitato.
- Abilitare lo scavenging sulla zona da ripulire. Impostare gli intervalli di No-refresh e Refresh secondo le esigenze ed in base alle impostazioni del lease DHCP
- Aspettare che siano trascorsi l’intervallo di No-Refresh + l’intervallo di Refresh. Continuare la procedura solo al termine (default 7gg+7gg=14gg )
Fase di controllo dei records
- Assicurarsi che il client registri correttamente il record tramite il comando IPConfig /registerdns
- Controllare nel Security tab delle proprietà del record chi è l’owner (proprietario) del record
- Il record è stato creato manualmente (static) da un amministratore ed abilitato successivamente allo scavenging? Se sì, potreste avere la necessità di cancellare il record per pulire l’ownership ed eseguire il comando IPConfig /registerdns per aggiornarlo
- Il server DNS replica correttamente in Active Directory?
- Non andare avanti nella procedura se non si è in grado di giustificare ogni record che non sia stato aggiornato, in quanto nella prossima fase questi saranno rimossi!!
Fase di attivazione
- Partire dal timestamp del record
- Aggiungere gli intervalli di No-Refresh e Refresh
- Il risultato sarà il tempo in cui in cui il record DNS viene “candidato allo scavenging”. I records non verranno cancellati in questo intervallo ma soltanto selezionati quelli da cancellare.
- Controllare sul DNS gli eventi 2501 e 2502 per vedere a che ora il server inizierà il prossimo processo di scavenging
- Al tempo in cui il record DNS viene “candidato allo scavenging” aggiungere il periodo di Scavenging del server (da proprietà del serveràAdvanced tab)
- Il risultato sarà l’orario di cancellazione del record.
Esempio (Figura 5)
- Sulla zona l’intervallo di No-Refresh è impostato a 3gg e l’intervallo di Refresh è impostato a 3gg
- Sul Server il periodo di Scavenging è impostato a 3gg
- L’ultimo evento DNS 2501 o 2502 si è verificato alle 6:00 il 1/1/2008
- Il record DNS ha un timestamp del 1/1/2008 alle 12:00
Figura 5: Esempio di Scavenging di un record DNS
Dall’esempio si può notare che il record che è stato creato il 1 gennaio diventerà candidato allo scavenging a partire dalle 12:00 del 7 gennaio ma non verrà cancellato fino al prossimo ciclo di scavenging che inizierà alle 6:00 del 10 gennaio.
Link Utili
Understanding Aging and Scavenging
http://technet.microsoft.com/en-us/library/cc771677.aspx
Enable Automatic Scavenging of Stale Resource Records
http://technet.microsoft.com/en-us/library/cc732975.aspx
Set Aging and Scavenging Properties for the DNS Server
http://technet.microsoft.com/en-us/library/cc753217.aspx
Set Aging and Scavenging Properties for a Zone
http://technet.microsoft.com/en-us/library/cc754639.aspx