Active Directory : LdapSrvWeight et LdapSrvPriority
Sommaire
I. Présentation
Un domaine Active Directory est généralement composé de plusieurs contrôleurs de domaine qui peuvent être répartis sur plusieurs sites physiques, selon l'implantation de votre entreprise. Ces contrôleurs de domaine sont alors rattachés à un site, lui-même rattaché à différents réseaux, ce qui permet à un poste de travail de localiser le contrôleur de domaine le plus proche de lui lorsqu'une requête est envoyée, notamment pour l'ouverture de session.
En regardant les enregistrements DNS liés à votre domaine Active Directory au sein de la console DNS, vous remarquerez que le serveur disposant du rôle FSMO d'émulateur PDC est systématiquement référencé, même s'il n'est pas directement sur le site en question. De plus, le poids et la priorité sont identiques sur tous les contrôleurs de domaine par défaut, ce qui implique que votre poste de travail n'ira pas obligatoirement vers le DC du site où il se situe.
Chaque poste de travail membre d'un domaine Active Directory s'appuiera sur le composant "DCLocator" intégré au service "Netlogon" pour localiser un contrôleur de domaine. Plusieurs paramètres vont rentrer en compte pour sélectionner le contrôleur de domaine, dont les enregistrements SRV du DNS, ce qui donne de l'importance au poids et à la priorité.
Ce mode de fonctionnement peut causer des problèmes de performances au sein d'infrastructures multi-sites puisque certains postes de travail peuvent se connecter sur le contrôleur de domaine étant émulateur PDC même s'il se situe sur un distant.
Pour agir directement sur le service Netlogon, on va pouvoir s'appuyer sur deux paramètres : LdapSrvWeight et LdapSrvPriority pour gérer respectivement le poids et la priorité. Par défaut, chaque contrôleur de domaine à une priorité de 0 et un poids de 100.
II. LdapSrvWeight
Le paramétrage qui va suivre, aussi bien pour cette valeur que pour celle de l'étape d'après, doit être effectué uniquement sur le serveurs contrôleurs de domaine.
Conseil : Au préalable je vous recommande de faire un tableau avec le nom de vos DC et les valeurs que vous souhaitez attribuer au poids et à la priorité, pour bien positionner les valeurs avant de les passer en production.
Nous allons maintenant créer la valeur à l'aide de l'éditeur de registre.
Chemin vers la clé : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters
Vous devez créer une valeur REG_DWORD nommée "LdapSrvWeight" à cet endroit et lui attribuer une valeur décimale comprise entre 0 et 65335. Rappelez-vous, plus la valeur est haute, plus le poids sera élevé/prioritaire.
La commande PowerShell suivante permet de créer la valeur (en adaptant la valeur pour LdapSrvWeight) :
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\services\Netlogon\Parameters" -Name "LdapSrvWeight" -Value "100" -PropertyType DWORD
III. LdapSrvPriority
Comme précédemment, créons cette valeur via l'éditeur de registre.
Chemin vers la clé (identique à LdapSrvWeight) : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters
Vous devez créer une valeur REG_DWORD nommée "LdapSrvPriority" à cet endroit et lui attribuer une valeur décimale comprise entre 0 et 65335. Rappelez-vous, plus la valeur est basse, plus la priorité sera élevé (l'inverse que pour le poids, en fait).
Note : S'il y a plusieurs serveurs avec la même priorité, le poids est alors utilisé pour les départager.
Ce qui nous donne la commande suivante :
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\services\Netlogon\Parameters" -Name "LdapSrvPriority" -Value "0" -PropertyType DWORD
IV. Comment modifier la priorité d'un DC ?
Etant donné que ces données sont visibles dans les enregistrements DNS, on pourrait être tenté de modifier directement depuis la console de gestion du DNS. Ce qui serait une erreur et risquerait de créer des enregistrements en doublon, la bonne méthode consiste à passer par l'éditeur de registre (regedit).
Après avoir modifié l'une de ces deux valeurs, ou les deux, vous devrez redémarrer le service Netlogon.
En PowerShell, vous pouvez effectuer cette action très facilement :
Restart-Service netlogon
Vous devez désormais patienter le temps que les modifications prennent effet et que la réplication se déclenche entre les différents contrôleurs de domaine. Je vous conseille également de purger le cache DNS sur vos postes de travail :
ipconfig /flushdns
Astuce : sur un poste client, la variable d'environnement LOGONSERVER permet de savoir auprès de quel DC un client s'est authentifié. Vous pouvez lister les variables d'environnement en CMD (set) ou PowerShell (Get-Childitem env:).
En résumé, les contrôleurs de domaine ayant le poids le plus élevé et la priorité la plus basse sont le plus souvent sélectionnés lors du processus Netlogon.
Ajoutez à ça l'affinité de base liée au site et vous pouvez contrôler vers quel(s) contrôleur(s) de domaine se tourneront en priorité les clients de chaque site.
Ceci vous permettra d'avoir un meilleur client sur l'authentification des clients et sur les requêtes de connexion.
Merci bien pour cette article 🙂
Merci Florian, c’est très bien expliqué. Dans le cas ou l’opération doit être effectué sur plusieurs DC, il me semble que l’on peut le faire via stratégie de groupe?