Como um sistema cliente em uma rede do Active Directory localiza em qual site ele reside?

21

Ao preparar uma apresentação para iniciar a administração do Windows, fiquei impressionado com uma pergunta que me surpreende por não ter perguntado antes.

Eu sei disso:

  • O AD é logicamente configurado em sites para ajudar na replicação e diminuir a latência das comunicações necessárias ao domínio entre computadores clientes e serviços de domínio.
  • Sites são definidos pelas sub-redes aplicadas a eles
  • o subdomínio _msdcs contém uma hierarquia de registros SRV para pesquisa geral (_tcp) e para pesquisa específica do site (_sites)
  • Os computadores de alguma forma sabem em que site eles estão, ou o controlador de domínio decide de forma transparente em alguma mágica do DNS ... ou sabe?

Esta postagem do blog indica que os computadores clientes em uma rede do AD podem "saber" em qual site eles são membros. Minha pergunta é: se for esse o caso, como eles descobrem?

Se o próprio cliente não souber, como o controlador de domínio ajuda a máquina no processo de seleção dos serviços AD mais próximos desse computador cliente?

Peter Grace
fonte

Respostas:

29

A resposta é que, na primeira vez em que um cliente se autentica no Active Directory, ele não sabe em que site está.

Ao ingressar no domínio pela primeira vez, o cliente faz consultas gerais de DNS e LDAP e obtém uma lista de todos os controladores de domínio no domínio, e ele desce a lista, tentando ligações de LDAP e o primeiro controlador de domínio bem-sucedido ao qual se liga - ou seja o primeiro CD com o qual se autentica.

Depois que o cliente ingressou no domínio, o Active Directory dirá ao cliente a qual site ele pertence. O Active Directory sabe disso porque o administrador colocou a sub-rede IP do cliente nos Sites e Serviços do AD e a associou a um Site.

O Active Directory informa ao cliente qual é o site do AD e o cliente o armazena em seu próprio registro no HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DynamicSiteNamevalor do registro. Dessa forma, na próxima vez em que o cliente for inicializado, ele saberá qual consulta DNS específica do site será feita, para que obtenha apenas os DCs que estão nesse site.

É claro que o comportamento completo está documentado no KB247811 , mas se você quiser ver por si mesmo, poderá executar o Wireshark ou o NetMon e fazer um rastreamento de pacotes e ingressar em um domínio enquanto o rastreamento estiver em execução. Você verá a sequência exata de consultas DNS e ligações LDAP. As consultas DNS subseqüentes e as ligações LDAP são feitas nas subzonas específicas do site porque o cliente foi informado pelo AD a qual site pertence.

O serviço Netlogon atualiza periodicamente as informações do site do AD; portanto, se você mudar para uma rede diferente, o cliente obterá o novo site automaticamente. Isso pode ser ajustado no HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SiteNameTimeoutvalor do registro. ( Link )

Ryan Ries
fonte
GAH! Você chegou antes de mim!
MDMarra
4
@MDMarra É uma ocorrência rara, senhor.
Ryan Ries
Por curiosidade, a verificação do logon de rede já foi refeita? Por exemplo, e se eu tivesse um sistema que estivesse no Site1 e depois transferisse a pessoa e o equipamento para o Site2, a máquina ainda identificaria e continuaria a conversar com o Site1?
Peter Grace
Na verdade eu retiro isso. Netlogon pode atualizar o nome do site dinâmico sem reiniciar: technet.microsoft.com/en-us/library/cc958488.aspx
Ryan Ries
@RyanRies, se você quiser colocar isso no seu texto de resposta, isso seria incrível, caso contrário, editarei a resposta para incorporá-la.
Peter Grace
8

Na verdade, existem várias funções / APIs inter-relacionadas. Embora sejam longas, na verdade são algumas das leituras mais interessantes do Active Directory.

Independentemente da explicação abaixo, há duas coisas que você precisa estar ciente:

  • Se um controlador de domínio no site local não responder por qualquer motivo, é esperado que o cliente entre em contato com qualquer controlador de domínio no domínio. Isso é normal e sempre foi o comportamento padrão. Às vezes, não é evidente por que está ocorrendo.

  • Isso pode ser abaixo do ideal. Considere o seguinte cenário: Três sites: Nova York (hub / datacener - rápido), Los Angeles (falou com NYC - rápido) e Cazaquistão (falou com NYC - definitivamente não é rápido). Se o seu cliente no site de Los Angeles não puder entrar em contato com o controlador de domínio local por qualquer motivo, não é inconcebível que ele se autentique no Cazaquistão.

Existem algumas soluções. Você pode fazer um ou ambos.

  • A Microsoft criou a diretiva de grupo / configuração de registro apropriadamente chamada TryNextClosestSite. Isso significa que o cliente de Los Angeles deve tentar Nova York antes de percorrer o planeta à procura de CDs. Brilhante! Demorou oito anos, mas finalmente conseguimos isso com o Vista / 2008. Lembre-se, não ativado por padrão, você precisa criar um GPO para habilitar isso.

  • Para sites spoke, nos quais você realmente não deseja que o DC atenda clientes em outros sites, é possível criar uma configuração de Diretiva de Grupo / Registro que especifique quais registros DNS não devem ser registrados. Isso é conhecido como DNS mnemônico.


Localizando um controlador de domínio no site mais próximo (API DsGetSiteName)
http://technet.microsoft.com/en-us/library/cc978016.aspx

Mapeando endereços IP para nomes de sites

"Durante a inicialização do Net Logon, o serviço Net Logon em cada controlador de domínio enumera os objetos do site no contêiner de Configuração. O Net Logon em cada controlador de domínio também é notificado sobre quaisquer alterações feitas nos objetos do site. O Net Logon usa as informações do site para criar um estrutura na memória usada para mapear endereços IP para nomes de sites.

"Quando um cliente que está procurando um controlador de domínio recebe a lista de endereços IP do controlador de domínio do DNS, o cliente começa a consultar os controladores de domínio para descobrir qual controlador de domínio está disponível e apropriado. O Active Directory intercepta a consulta, que contém o endereço IP do cliente e o passa para o Net Logon no controlador de domínio.O Net Logon consulta o endereço IP do cliente em sua tabela de mapeamento de sub-rede para site, localizando o objeto de sub-rede que mais se aproxima do endereço IP do cliente e, em seguida, retorna as seguintes informações:

  • O nome do site em que o cliente está localizado ou o site que mais se aproxima do endereço IP do cliente.

  • O nome do site em que o controlador de domínio atual está localizado.

  • Um bit que indica se o controlador de domínio encontrado está localizado (o bit está definido) ou não (o bit não está definido) no site mais próximo do cliente.

"O controlador de domínio retorna as informações para o cliente. A resposta também contém várias outras informações que descrevem o controlador de domínio. O cliente inspeciona as informações para determinar se deve tentar encontrar um melhor controlador de domínio. A decisão é tomada da seguinte maneira:

"Se o controlador de domínio retornado estiver no site mais próximo (o bit retornado estiver definido), o cliente usará esse controlador de domínio.

"Se o cliente já tentou encontrar um controlador de domínio no site em que o controlador de domínio afirma que o cliente está localizado, o cliente usa esse controlador de domínio.

"Se o controlador de domínio não estiver no site mais próximo, o cliente atualiza as informações do site e envia uma nova consulta DNS para encontrar um novo controlador de domínio no site. Se a segunda consulta for bem-sucedida, o novo controlador de domínio será usado. Se o segunda consulta falhar, o controlador de domínio original é usado.

"Se o domínio que está sendo consultado por um computador for o mesmo que o computador ao qual o computador está associado, o site em que o computador reside (conforme relatado por um controlador de domínio) será armazenado no registro do computador. O cliente armazena isso nome do site na entrada de registro DynamicSiteName em HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Netlogon \ Parameters. Portanto, a API DsGetSiteName retorna o site em que o computador está localizado. "

Função 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

Funções de serviço de diretório
http://technet.microsoft.com/en-us/subscriptions/ms675900%28v=vs.85%29.aspx

Como o suporte ao DNS para o Active Directory funciona
http://technet.microsoft.com/en-us/library/cc759550%28v=ws.10%29.aspx

Como otimizar o local de um controlador de domínio que reside fora do site de um cliente
http://support.microsoft.com/kb/306602

Greg Askew
fonte