La gestion du TTL du cache DNS des stations Windows

Cela fait des années que je cherche une information officielle provenant de Microsoft concernant le TTL (Time To Live) des enregistrements du cache DNS local aux stations Windows. J’ai trouvé une information sur une valeur de clé de registre permettant de régler ce paramètre établi par défaut à 24 heures.

Nativement, depuis la version 2000 de son système d’exploitation, Windows possède une cache des enregistrements DNS sous forme d’un service au nom de Dnscache démarré automatiquement, local à chaque station de travail. Pour des raisons de performances afin de minimiser les requêtes DNS effectuées par vos machines, il est d’ailleurs fortement recommandé de ne jamais le désactiver. J’inciterais même les responsables des services informatique à augmenter la valeur du TTL au delà des 24 heures, afin de pouvoir retracer l’activité sur la station dans le cadre d’une analyse post-mortem dans le cadre d’une démarche de type Forensics. Pourquoi pas 7 jours, par exemple ?

dnscache

Interroger le cache DNS

Il y a deux manières simples d’interroger le cache DNS local à votre système Windows. Vous pouvez tout d’abord utiliser la commande ipconfig de la manière suivante :

ipconfig /displaydns|find "Nom"

Ou alors, utilisez le PowerShell comme suit :

Clear-Host
$Dnscache=Get-DnsClientCache|Select Entry,TimeToLive|Sort -Property Entry -Unique
$Dnscache|Out-GridView -Title 'Cache DNS local'

PowerShell -> Get-DnsClientCache

Le Time To Live qui s’affiche dans le tableau de résultats précédent est celui déterminé à l’occasion de l’enregistrement du domaine sur le serveur du registrar, c’est-à-dire de la société par laquelle le domaine a été enregistré.

Modifier le TTL du cache DNS local aux stations Windows

Au niveau de la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters, vous devez ajouter la valeur MaxCacheTtl de type DWORD. Elle est exprimée en secondes. Dans l’exemple ci-dessous, je l’ai passée à 4 heures (4x60x60), soit 14400 secondes.

MaxCacheTtl

La valeur MaxNegativeCacheTtl passée à 0 permet de ne pas mettre en cache les résultats des requêtes DNS qui ne renvoient rien.

Dns /