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?
fonte
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
fonte