Encontrando o controlador de domínio mais próximo através do LDAP

4

Estou em um host Unix e estou procurando uma maneira programática de determinar o DC mais próximo. A Microsoft tem um excelente artigo explicando como realizar a pesquisa de DNS e posso encontrar facilmente a lista de DCs disponíveis. isso:

dig -t SRV _ldap._tcp.dc._msdcs.example.com

Mas quanto a encontrar o mais próximo, isso explica:

After the client locates a domain controller, it establishes communication by using LDAP to gain access to Active Directory. As part of that negotiation, the domain controller identifies which site the client is in based on the IP subnet of that client. If the client is communicating with a domain controller that is not in the closest (most optimal) site, the domain controller returns the name of the client's site.

Até agora não consegui descobrir onde isso "retorna o nome do site do cliente" ocorre durante as consultas LDAP. Existe uma consulta específica que eu deveria realizar para obter isso, ou alguma outra técnica que pode ser executada em um host Unix não associado ao domínio?

EDIT: Graças ao ponteiro do Sim, eu aprendi a encontrar o DC correto quando eu conhecer o meu site (neste exemplo, "mysite" como parte do example.com):

dig -t SRV _ldap._tcp.mysite._sites.dc._msdcs.example.com

Mas isso deixa em aberto a questão de como determinar o meu site. Repetidamente, os documentos indicam que qualquer DC que eu me conectar funcionará para mim, mas não consigo encontrar o documento que diz como ele me retorna as informações. Eu até tentei enviar consultas DNS diretamente para os DCs para ver se eles ordenariam os resultados do SRV com o meu site no topo, mas eles não fazem isso.

    
por Rob Napier 24.10.2009 / 19:25

4 respostas

3

Este artigo do TechNet mostra a você a lógica de Como encontrar um controlador de domínio no site mais próximo se isso ajuda.

Já que você está no Unix, você viu como o Samba faz isso? Parece que isso é feito com o CLDAP. Esta entrada do blog - Entrando em um domínio do Samba pode fornecer mais algumas respostas.

    
por 25.10.2009 / 01:18
1

Você pode encontrar uma implementação do cldap no código-fonte do Samba neste arquivo   * / examples / misc / cldap.pl. Basta ligar com ./cldap.pl -d domain -s domaincontroller e você obterá o SITENAME que você pode usar em outras consultas DNS. Um documento da MSDN: Resposta do controlador de domínio a um ping LDAP

    
por 28.01.2010 / 21:24
1

Primeiro, obtenha uma lista de controladores de domínio na rede (pode ou não estar mais próxima).

nslookup -query=srv _ldap._tcp.example.net.local

Você pode então consultar um deles para encontrar o nome do seu site com base na sua sub-rede.

ldapsearch -H ldap://dc123.example.net.local -b 'CN=Subnets,CN=Sites,CN=Configuration,dc=net,dc=local' '(cn=10.10.10.0/24)' siteObject

Certifique-se de substituir o IP e a máscara de sub-rede com o da máquina para a qual você deseja identificar o CD mais próximo.

Você pode então encontrar os controladores de domínio que pertencem a esse site.

nslookup -query=srv _ldap._tcp.sitename._sites.example.net.local
    
por 05.05.2017 / 05:57
1

O algoritmo inteiro parece

  1. Resolver _ldap._tcp.dc._msdcs.example.com
  2. Selecione um de acordo com rfc-2782
  3. Envie o Ping LDAP para ele e leia o site do cliente, se ele retornar
  4. Resolver _ldap._tcp.Client-Site._sites.dc._msdcs.example.com
  5. Selecione um de acordo com rfc-2782

Feito!

Ping LDAP é

ldapsearch -H CLDAP://server -b '' -s base '(&(NtVer=
ldapsearch -H CLDAP://server -b '' -s base '(&(NtVer=%pre%%pre%%pre%)(AAC=%pre%%pre%%pre%%pre%))' netlogon
%pre%%pre%)(AAC=%pre%%pre%%pre%%pre%))' netlogon

leia-o como NETLOGON_SAM_LOGON_RESPONSE_EX. Veja aqui link

    
por 06.06.2017 / 14:36