¿Cómo encuentra un sistema cliente en una red de Active Directory en qué sitio reside?

21

Cuando estaba preparando una presentación para comenzar la administración de Windows, me sorprendió una pregunta que me sorprende no haber hecho antes.

Yo sé eso:

  • AD está configurado lógicamente en sitios para ayudar en la replicación y disminuir la latencia de las comunicaciones necesarias de dominio entre las computadoras cliente y los servicios de dominio.
  • Los sitios se definen por las subredes que se les aplican
  • El subdominio _msdcs contiene una jerarquía de registros SRV para la búsqueda general (_tcp) y para la búsqueda específica del sitio (_sites)
  • Las computadoras de alguna manera saben en qué sitio están, o el controlador de dominio decide de manera transparente en alguna magia de DNS ... ¿o no?

Esta publicación de blog sugiere que las computadoras cliente en una red AD pueden "saber" de qué sitio son miembros. Mi pregunta es, si este es el caso, ¿cómo lo descubren?

Si el cliente mismo no lo sabe, ¿cómo ayuda el DC a la máquina en el proceso de seleccionar los servicios de AD más cercanos a esa computadora cliente?

Peter Grace
fuente

Respuestas:

29

La respuesta es que la primera vez que un cliente se autentica en Active Directory, no sabe en qué sitio se encuentra.

Cuando se une por primera vez al dominio, el cliente realiza consultas generales de DNS y LDAP y obtiene una lista de todos los controladores de dominio en el dominio, y baja por la lista, prueba los enlaces LDAP y el primer DC exitoso al que se une, es decir El primer DC con el que se autentica.

Después de que el cliente se haya unido al dominio, Active Directory le dirá al cliente a qué sitio pertenece. Active Directory lo sabe porque el administrador ha colocado la subred IP del cliente en Sitios y servicios de AD y la ha asociado a un Sitio.

Active Directory le dice al cliente cuál es su sitio de AD, y el cliente lo almacena en su propio registro en el HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DynamicSiteNamevalor del registro. De esa manera, la próxima vez que el cliente se inicie, sabrá qué consulta DNS específica del sitio debe hacer para que solo obtenga los DC que están en ese sitio.

Por supuesto, el comportamiento completo está documentado en KB247811 , pero si desea verlo usted mismo, puede ejecutar Wireshark o NetMon y hacer un seguimiento de paquetes, y luego unirse a un dominio mientras se ejecuta el seguimiento. Verá la secuencia exacta de consultas DNS y enlaces LDAP. Se realizan consultas DNS posteriores y enlaces LDAP a las subzonas específicas del sitio porque AD le ha dicho al cliente a qué sitio pertenece.

El servicio Netlogon actualizará periódicamente la información de su sitio AD, por lo que si se muda a una red diferente, su cliente obtendrá su nuevo sitio automáticamente. Esto se puede ajustar en el HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SiteNameTimeoutvalor del registro. ( Enlace )

Ryan Ries
fuente
GAH! ¡Me ganaste!
MDMarra
44
@MDMarra Es una rara ocurrencia señor.
Ryan Ries
Por curiosidad, ¿se vuelve a hacer el chequeo de netlogon? Por ejemplo, ¿qué pasaría si tuviera un sistema que estuviera en el Sitio1 y luego trasladara a la persona y el equipo al Sitio2, la máquina aún se identificaría y continuaría hablando con el Sitio1?
Peter Grace
En realidad lo retiro. Netlogon puede actualizar el nombre dinámico del sitio sin reiniciar: technet.microsoft.com/en-us/library/cc958488.aspx
Ryan Ries
@RyanRies si desea incluir eso en su texto de respuesta, sería genial, de lo contrario, editaré la respuesta para incorporarla.
Peter Grace
8

En realidad, hay varias funciones / API interrelacionadas. Aunque son largos, en realidad es una de las lecturas más interesantes de Active Directory.

Independientemente de la explicación a continuación, hay dos cosas que debe tener en cuenta:

  • Si un DC en el sitio local no responde por algún motivo, se espera que el cliente se ponga en contacto con cualquier controlador de dominio en el dominio. Esto es normal y siempre ha sido el comportamiento predeterminado. A veces no es evidente por qué está ocurriendo.

  • Eso puede ser subóptimo. Considere el siguiente escenario: Tres sitios: la ciudad de Nueva York (centro / centro de datos - rápido), Los Ángeles (habló con Nueva York - rápido) y Kazajstán (habló con Nueva York - definitivamente no es rápido). Si su cliente en el sitio de Los Ángeles no puede comunicarse con su DC local por alguna razón, no es inconcebible que se autentique con Kazajstán.

Hay un par de soluciones. Puedes hacer uno o ambos.

  • Microsoft creó la configuración de registro / directiva de grupo acertadamente denominada TryNextClosestSite. Eso significa que el cliente de Los Ángeles debería probar NYC antes de recorrer el planeta en busca de DC. ¡Brillante! Tomó ocho años, pero finalmente lo conseguimos con Vista / 2008. Recuerde, no habilitado de manera predeterminada, debe crear un GPO para habilitarlo.

  • Para los sitios radiales donde realmente no desea que DC atienda a clientes en otros sitios, puede crear una configuración de Registro / Política de grupo que especifique qué registros DNS no deben registrarse. Esto se conoce como DNS Mnemonics.


Encontrar un controlador de dominio en el sitio más cercano (API DsGetSiteName)
http://technet.microsoft.com/en-us/library/cc978016.aspx

Asignación de direcciones IP a nombres de sitios

"Durante el inicio de Net Logon, el servicio Net Logon en cada controlador de dominio enumera los objetos del sitio en el contenedor de Configuración. Net Logon en cada controlador de dominio también recibe notificaciones de cualquier cambio realizado en los objetos del sitio. Net Logon usa la información del sitio para construir un estructura en memoria que se utiliza para asignar direcciones IP a nombres de sitios.

"Cuando un cliente que está buscando un controlador de dominio recibe la lista de direcciones IP del controlador de dominio de DNS, el cliente comienza a consultar a los controladores de dominio para averiguar qué controlador de dominio está disponible y es apropiado. Active Directory intercepta la consulta, que contiene la dirección IP del cliente y la pasa a Net Logon en el controlador de dominio. Net Logon busca la dirección IP del cliente en su tabla de mapeo de subred a sitio al encontrar el objeto de subred que más se acerca a la dirección IP del cliente y luego devuelve la siguiente información:

  • El nombre del sitio en el que se encuentra el cliente, o el sitio que más se acerca a la dirección IP del cliente.

  • El nombre del sitio en el que se encuentra el controlador de dominio actual.

  • Un bit que indica si el controlador de dominio encontrado está ubicado (el bit está configurado) o no está ubicado (el bit no está configurado) en el sitio más cercano al cliente.

"El controlador de dominio devuelve la información al cliente. La respuesta también contiene otras piezas de información que describen el controlador de dominio. El cliente inspecciona la información para determinar si intenta encontrar un mejor controlador de dominio. La decisión se toma de la siguiente manera:

"Si el controlador de dominio devuelto está en el sitio más cercano (se establece el bit devuelto), el cliente usa este controlador de dominio.

"Si el cliente ya ha intentado encontrar un controlador de dominio en el sitio en el que el controlador de dominio afirma que se encuentra el cliente, el cliente usa este controlador de dominio.

"Si el controlador de dominio no está en el sitio más cercano, el cliente actualiza la información de su sitio y envía una nueva consulta DNS para encontrar un nuevo controlador de dominio en el sitio. Si la segunda consulta es exitosa, se utiliza el nuevo controlador de dominio. Si el la segunda consulta falla, se utiliza el controlador de dominio original.

"Si el dominio que está siendo consultado por una computadora es el mismo que el dominio al que se une la computadora, el sitio en el que reside la computadora (según lo informado por un controlador de dominio) se almacena en el registro de la computadora. El cliente almacena esto nombre del sitio en la entrada de registro DynamicSiteName en HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Netlogon \ Parameters. Por lo tanto, la API DsGetSiteName devuelve el sitio en el que se encuentra la computadora ".

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

Tipos de localizadores
http://technet.microsoft.com/en-us/library/cc978019.aspx

Funciones del servicio de directorio
http://technet.microsoft.com/en-us/subscriptions/ms675900%28v=vs.85%29.aspx

Cómo funciona el soporte de DNS para Active Directory
http://technet.microsoft.com/en-us/library/cc759550%28v=ws.10%29.aspx

Cómo optimizar la ubicación de un controlador de dominio que reside fuera del sitio de un cliente
http://support.microsoft.com/kb/306602

Greg Askew
fuente