Comment un système client dans un réseau Active Directory trouve-t-il dans quel site il se trouve ?

Alors que je préparais une présentation pour l’administration Windows débutante, une question m’est venue à l’esprit, et je suis surpris de ne pas l’avoir posée plus tôt.

Je sais que :

  • AD est logiquement organisé en sites pour aider à la réplication et diminuer la latence des communications nécessaires au domaine entre les ordinateurs clients et les services de domaine.

  • Les sites sont définis par les sous-réseaux qui leur sont appliqués

  • Le sous-domaine _msdcs contient une hiérarchie d’enregistrements SRV pour la recherche générale (_tcp) et pour la recherche spécifique au site (_sites)

  • Les ordinateurs savent d’une manière ou d’une autre dans quel site ils se trouvent, ou le contrôleur de domaine décide de manière transparente par une magie DNS… ou pas ?

Ce billet de blog suggère que les ordinateurs clients dans un réseau AD peuvent « savoir » de quel site ils sont membres. Ma question est, si c’est le cas, comment le découvrent-ils ?

Si le client lui-même ne le sait pas, comment le DC aide-t-il la machine dans le processus de sélection des services AD les plus proches de cet ordinateur client ?

La réponse est que la première fois qu’un client s’authentifie auprès d’Active Directory, il ne sait pas dans quel site il se trouve.

Lors de la première jonction au domaine, le client effectue des requêtes DNS et LDAP générales et obtient une liste de tous les contrôleurs de domaine du domaine, et il parcourt la liste en essayant des liaisons LDAP, et le premier DC auquel il se lie avec succès est le premier DC auprès duquel il s’authentifie.

Après que le client a rejoint le domaine, Active Directory informe le client du site auquel il appartient. Active Directory le sait parce que l’administrateur a placé le sous-réseau IP du client dans Sites et services AD et l’a associé à un site.

Active Directory indique au client quel est son site AD, et le client stocke cette information dans son propre registre dans la valeur HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DynamicSiteName. Ainsi, la prochaine fois que le client démarre, il sait quelle requête DNS spécifique au site effectuer pour n’obtenir que les DC qui sont dans ce site.

Bien entendu, le comportement complet est documenté dans la KB247811, mais si vous voulez le voir par vous-même, vous pourriez lancer Wireshark ou NetMon et faire une capture de paquets, puis joindre un domaine pendant que la capture est en cours. Vous verrez la séquence exacte des requêtes DNS et des liaisons LDAP. Les requêtes DNS et liaisons LDAP suivantes sont effectuées vers les sous-zones spécifiques au site car le client a été informé par AD du site auquel il appartient.

Le service Netlogon actualisera périodiquement ses informations de site AD, donc si vous vous déplacez vers un autre réseau, votre client obtiendra automatiquement son nouveau site. Cela peut être ajusté dans la valeur de registre HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SiteNameTimeout. (Lien)