Skip to content

DNS Scavenging Windows Server : automatiser le nettoyage DNS

Brandon Visca
Published date:

Table des matières

Open Table des matières

Introduction : pourquoi ton DNS mérite un bon ménage

Spoiler : si tu administres un réseau Windows avec DHCP, ton serveur DNS accumule probablement des enregistrements obsolètes. Résultat ? Des conflits de noms, des résolutions foireuses et des utilisateurs qui viennent te voir avec des mines d’enterrement.

Le DNS Scavenging est cette fonctionnalité magique qui fait le ménage automatiquement. Et contrairement à ton bureau, ça marche vraiment.


🧩 Comment fonctionne le DNS Scavenging ?

Le processus repose sur deux concepts principaux :

Une fois ces deux périodes écoulées, l’enregistrement devient éligible au Scavenging et peut être supprimé automatiquement par le serveur DNS.

En gros : si un enregistrement n’a pas donné signe de vie pendant No-Refresh + Refresh, il dégage.


🛡️ Les avantages du DNS Scavenging


⚙️ Configuration du DNS Scavenging

Prérequis avant de commencer

⚠️ IMPORTANT : Assure-toi que tes serveurs DHCP et DNS sont correctement synchronisés. Sinon, tu risques de supprimer des enregistrements encore actifs.

Configuration via PowerShell (la méthode de pro)

# Activer le scavenging sur le serveur
Set-DnsServerScavenging -ScavengingState $true

# Définir les intervalles (en jours)
Set-DnsServerZoneAging -Name "cafe.local" -NoRefreshInterval 7.00:00:00 -RefreshInterval 7.00:00:00

# Démarrer immédiatement le processus de scavenging
Start-DnsServerScavenging

Pour activer le scavenging sur une zone spécifique

Set-DnsServerZoneAging -Name “tondomaine.local” -Aging $true

Vérifier la configuration

Get-DnsServerZoneAging -Name “tondomaine.local”


🔧 Configuration avancée : les réglages fins

Pour les environnements complexes avec plusieurs contrôleurs de domaine, assure-toi de bien maîtriser la gestion des rôles FSMO avant de déployer le scavenging.

Synchronisation avec DHCP

Si tu utilises DHCP (et tu devrais), synchronise les durées :

# Durée de bail DHCP : 8 jours
# No-Refresh Interval : 7 jours  
# Refresh Interval : 7 jours
# Total avant suppression : 14 jours

Set-DnsServerZoneAging -Name "tondomaine.local" -NoRefreshInterval 7.00:00:00 -RefreshInterval 7.00:00:00

Activer les logs détaillés

Set-DnsServerDiagnostics -SaveLogsToPersistentStorage $true -EnableLogFileRollover $true

Vérifier les enregistrements éligibles au scavenging

Get-DnsServerResourceRecord -ZoneName “tondomaine.local” | Where-Object {$_.TimeStamp -lt (Get-Date).AddDays(-14)}


🚨 Pièges à éviter (ou comment ne pas tout casser)

❌ Erreur n°1 : Activer sans tester

Le piège : Activer le scavenging sur toutes les zones d’un coup. La solution : Teste d’abord sur une zone de dev ou non-critique.

❌ Erreur n°2 : Mauvaise synchronisation DHCP

Le piège : Intervalles DNS plus courts que les baux DHCP. La solution : Durée DHCP = No-Refresh + Refresh + marge de sécurité.

❌ Erreur n°3 : Pas de sauvegarde

Le piège : « Ça va bien se passer… » La solution : Sauvegarde ta zone DNS avant d’activer le scavenging.

# Export de sauvegarde
dnscmd /zoneexport tondomaine.local tondomaine_backup.txt

Vérifier l’état du scavenging

Get-DnsServerScavenging

Voir les dernières suppressions

Get-WinEvent -FilterHashtable @{LogName=‘DNS Server’; ID=1541}

Statistiques de la zone

Get-DnsServerStatistics

Script de monitoring

# Script à lancer en tâche planifiée
$ZoneName = "tondomaine.local"
$Records = Get-DnsServerResourceRecord -ZoneName $ZoneName
$StaleRecords = $Records | Where-Object {$_.TimeStamp -lt (Get-Date).AddDays(-30)}

if ($StaleRecords.Count -gt 100) {
    # Envoyer une alerte
    Write-EventLog -LogName "Application" -Source "DNS Monitoring" -EventId 1001 -Message "Trop d'enregistrements obsolètes détectés : $($StaleRecords.Count)"
}
Previous
Masquer des utilisateurs de la GAL Office 365 + Active Directory : Guide complet
Next
Swap Linux : comment ne pas transformer ton serveur en escargot asthmatique