Wie findet ein Clientsystem in einem Active Directory-Netzwerk, an welchem ​​Standort es sich befindet?

21

Als ich eine Präsentation für den Beginn der Windows-Administration zusammenstellte, stellte sich mir eine Frage, die ich erstaunt nicht früher gestellt habe.

Ich weiß das:

  • AD wird logisch an Standorten eingerichtet, um die Replikation zu unterstützen und die Latenz der für die Domäne erforderlichen Kommunikation zwischen Clientcomputern und Domänendiensten zu verringern.
  • Standorte werden durch die auf sie angewendeten Subnetze definiert
  • Die _msdcs-Unterdomäne enthält eine Hierarchie von SRV-Datensätzen für die allgemeine Suche (_tcp) und für die standortspezifische Suche (_sites).
  • Computer wissen irgendwie, auf welcher Site sie sich befinden, oder der Domänencontroller entscheidet transparent über DNS-Magie ... oder doch?

In diesem Blogeintrag wird darauf hingewiesen, dass Clientcomputer in einem AD-Netzwerk "wissen" können, zu welcher Site sie gehören. Meine Frage ist, wenn dies der Fall ist, wie sie es herausfinden?

Wenn der Client selbst nicht weiß, wie unterstützt der Domänencontroller den Computer bei der Auswahl der dem Clientcomputer am nächsten gelegenen AD-Dienste?

Peter Grace
quelle

Antworten:

29

Die Antwort lautet: Wenn sich ein Client zum ersten Mal bei Active Directory authentifiziert, weiß er nicht, an welchem ​​Standort er sich befindet.

Beim ersten Beitritt zur Domäne führt der Client allgemeine DNS- und LDAP-Abfragen durch und ruft eine Liste aller Domänencontroller in der Domäne ab. Anschließend werden LDAP-Bindungen und der erste erfolgreiche Domänencontroller, an den er bindet, überprüft das erste DC, mit dem es sich authentifiziert.

Nachdem der Client der Domäne beigetreten ist, teilt Active Directory dem Client mit, zu welchem ​​Standort er gehört. Active Directory weiß dies, weil der Administrator das IP-Subnetz des Clients in AD Sites & Services abgelegt und einem Standort zugeordnet hat.

Active Directory teilt dem Client mit, was sein AD-Standort ist, und der Client speichert diesen in seiner eigenen Registrierung im HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DynamicSiteNameRegistrierungswert. Auf diese Weise weiß der Client beim nächsten Start, welche standortspezifische DNS-Abfrage durchgeführt werden muss, damit nur die Domänencontroller abgerufen werden, die sich an diesem Standort befinden.

Natürlich ist das vollständige Verhalten in KB247811 dokumentiert , aber wenn Sie es selbst sehen möchten, können Sie Wireshark oder NetMon ausführen und eine Paketverfolgung durchführen und dann einer Domäne beitreten, während die Verfolgung ausgeführt wird. Sie sehen die genaue Reihenfolge der DNS-Abfragen und LDAP-Bindungen. Nachfolgende DNS-Abfragen und LDAP-Bindungen werden an die standortspezifischen Unterzonen gesendet, da dem Client von AD mitgeteilt wurde, zu welchem ​​Standort er gehört.

Der Netlogon-Dienst aktualisiert regelmäßig seine AD-Site-Informationen. Wenn Sie also in ein anderes Netzwerk wechseln, erhält Ihr Client automatisch seine neue Site. Dies kann im HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SiteNameTimeoutRegistrierungswert angepasst werden. ( Link )

Ryan Ries
quelle
GAH! Du warst schneller als ich!
MDMarra
4
@MDMarra Es ist ein seltener Vorfall Herr.
Ryan Ries
Wird die Netlogon-Prüfung aus Neugier jemals wiederholt? Was wäre zum Beispiel, wenn ich ein System in Site1 hätte und dann die Person und die Ausrüstung nach Site2 verlegte, würde der Computer Site1 weiterhin identifizieren und mit ihm sprechen?
Peter Grace
Eigentlich nehme ich das zurück. Netlogon kann den dynamischen Site-Namen ohne Neustart aktualisieren: technet.microsoft.com/en-us/library/cc958488.aspx
Ryan Ries
@RyanRies Wenn Sie das in Ihren Antworttext einfügen möchten, wäre das großartig. Andernfalls bearbeite ich die Antwort, um sie zu integrieren.
Peter Grace
8

Es gibt tatsächlich mehrere miteinander verbundene Funktionen / APIs. Obwohl sie lang sind, ist es tatsächlich eine der interessantesten Active Directory-Lesevorgänge.

Unabhängig von der folgenden Erklärung müssen Sie sich zweier Dinge bewusst sein:

  • Wenn ein Domänencontroller am lokalen Standort aus irgendeinem Grund nicht antwortet, wird erwartet, dass der Client einen Domänencontroller in der Domäne kontaktiert. Das ist normal und es war immer das Standardverhalten. Manchmal ist es nicht ersichtlich, warum es auftritt.

  • Das kann suboptimal sein. Stellen Sie sich das folgende Szenario vor: Drei Standorte: New York City (Hub / Datacener - schnell), Los Angeles (sprach mit NYC - schnell) und Kasachstan (sprach mit NYC - definitiv nicht schnell). Wenn Ihr Kunde in LA aus irgendeinem Grund nicht mit dem lokalen DC Kontakt aufnehmen kann, ist es nicht unvorstellbar, dass er sich bei Kasachstan authentifiziert.

Es gibt einige Lösungen. Sie können eines oder beides tun.

  • Microsoft hat die Gruppenrichtlinien- / Registrierungseinstellung "TryNextClosestSite" erstellt. Das bedeutet, dass der LA-Kunde NYC ausprobieren sollte, bevor er den Planeten nach DCs absucht. Brillant! Es hat acht Jahre gedauert, aber das haben wir mit Vista / 2008 endlich geschafft. Denken Sie daran, dass Sie, nicht standardmäßig aktiviert, ein Gruppenrichtlinienobjekt erstellen müssen, um dies zu aktivieren.

  • Für Spoke-Sites, bei denen Sie wirklich nicht möchten, dass dieser Domänencontroller Clients an anderen Sites bedient, können Sie eine Gruppenrichtlinien- / Registrierungseinstellung erstellen, die angibt, welche DNS-Einträge nicht registriert werden sollen. Dies wird als DNS-Mnemonik bezeichnet.


Suchen eines Domänencontrollers an der nächstgelegenen Site (DsGetSiteName-API)
http://technet.microsoft.com/en-us/library/cc978016.aspx

Zuordnen von IP-Adressen zu Site-Namen

"Beim Start von Net Logon listet der Net Logon-Dienst auf jedem Domänencontroller die Standortobjekte im Konfigurationscontainer auf. Net Logon auf jedem Domänencontroller wird auch über Änderungen an den Standortobjekten benachrichtigt. Net Logon verwendet die Standortinformationen zum Erstellen eines In-Memory-Struktur, mit der IP-Adressen Site-Namen zugeordnet werden.

"Wenn ein Client, der nach einem Domänencontroller sucht, die Liste der Domänencontroller-IP-Adressen von DNS empfängt, beginnt der Client, die Domänencontroller nacheinander abzufragen, um herauszufinden, welcher Domänencontroller verfügbar und geeignet ist. Active Directory fängt die Abfrage ab, die enthält Die IP-Adresse des Clients wird ermittelt und an Net Logon auf dem Domänencontroller übergeben. Net Logon sucht die Client-IP-Adresse in der Zuordnungstabelle von Subnetz zu Standort, indem das Subnetzobjekt gesucht wird, das der Client-IP-Adresse am ehesten entspricht gibt die folgenden Informationen zurück:

  • Der Name des Standorts, an dem sich der Client befindet, oder der Standort, der der Client-IP-Adresse am ehesten entspricht.

  • Der Name des Standorts, an dem sich der aktuelle Domänencontroller befindet.

  • Ein Bit, das angibt, ob sich der gefundene Domänencontroller an der dem Client am nächsten gelegenen Stelle befindet (Bit ist gesetzt) ​​oder nicht (Bit ist nicht gesetzt).

Der Domänencontroller gibt die Informationen an den Client zurück. Die Antwort enthält auch verschiedene andere Informationen, die den Domänencontroller beschreiben. Der Client überprüft die Informationen, um festzustellen, ob versucht wird, einen besseren Domänencontroller zu finden. Die Entscheidung wird wie folgt getroffen:

"Wenn sich der zurückgegebene Domänencontroller am nächsten Standort befindet (das zurückgegebene Bit ist gesetzt), verwendet der Client diesen Domänencontroller.

"Wenn der Client bereits versucht hat, einen Domänencontroller an dem Standort zu finden, an dem sich der Domänencontroller nach eigenen Angaben befindet, verwendet der Client diesen Domänencontroller.

"Wenn sich der Domänencontroller nicht am nächsten Standort befindet, aktualisiert der Client seine Standortinformationen und sendet eine neue DNS-Abfrage, um einen neuen Domänencontroller am Standort zu finden. Wenn die zweite Abfrage erfolgreich ist, wird der neue Domänencontroller verwendet Wenn die zweite Abfrage fehlschlägt, wird der ursprüngliche Domänencontroller verwendet.

"Wenn die Domäne, die von einem Computer abgefragt wird, mit der Domäne identisch ist, der der Computer angehört, wird der Standort, an dem sich der Computer befindet (wie von einem Domänencontroller gemeldet), in der Computerregistrierung gespeichert. Der Client speichert dies Site-Name im Registrierungseintrag DynamicSiteName in HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Netlogon \ Parameters. Daher gibt die DsGetSiteName-API den Standort zurück, an dem sich der Computer befindet. "

DsGetDcName-Funktion
http://msdn.microsoft.com/en-us/library/ms675983%28VS.85%29.aspx

Arten von Locators
http://technet.microsoft.com/en-us/library/cc978019.aspx

Verzeichnisdienstfunktionen
http://technet.microsoft.com/en-us/subscriptions/ms675900%28v=vs.85%29.aspx

Funktionsweise der DNS-Unterstützung für Active Directory
http://technet.microsoft.com/en-us/library/cc759550%28v=ws.10%29.aspx

Optimieren des Standorts eines Domänencontrollers außerhalb der Website eines Clients
http://support.microsoft.com/kb/306602

Greg Askew
quelle