cada consulta do 5º AD é muito lenta, por quê?

4

Eu estou vinculando uma caixa do FreeNAS ao AD para logins de alunos em montagens de SMB. Tudo funciona bem.

Eu tenho um script bash que roda no FreeNAS para criar uma página index.html apontando para um subdiretório do diretório pessoal de cada aluno, onde eles podem colocar projetos de codificação prontos na web para exibição pública. Isso funciona também.

O script faz uma pesquisa do AD para cada usuário no FreeNAS, e só os adiciona ao arquivo index.html se eles são estudantes (isto é, membros do grupo CN=students ):

ldapsearch -Q -LLL cn=[someuser] ObjectCategory:CN=Person memberOf 

Aqui está a parte estranha. Cerca de 80% do tempo, a consulta do AD acontece instantaneamente. A cada cinco pesquisas, leva 75 segundos para ser concluído. Eu escrevi um script para testar isso e o padrão é bastante reproduzível. Quase invariavelmente, cada quinta pesquisa leva exatamente 75 segundos, e não importa se você procura o mesmo nome 5 vezes ou diferentes.

Se eu fizer um ldapsearch imediatamente na linha de comando:

ldapsearch -LLL cn=someuser

e eu faço isso repetidamente, toda quinta repetição é lenta. Se eu abortar a consulta lenta pressionando Ctrl - C , a próxima vez que eu fizer isso é rápido novamente.

Eu não executo o servidor do AD, e o administrador do AD não sabe por que isso estaria acontecendo. Alguma pista?

O DNS está configurado corretamente nos dois sentidos AFAIK - ou pelo menos, tudo o mais sobre a configuração parece funcionar (os usuários podem entrar no FreeNAS usando credenciais do AD, e isso acontece razoavelmente rápido). Todos os relógios estão em sincronia também.

    
por FloobyNooby 19.04.2016 / 18:19

2 respostas

3

A quinta consulta provavelmente é contra um controlador de domínio em outro site (consulte link , isto é para o ano 2003 AD, mas ainda válido).

Com uma consulta como esta:

ldapsearch -h domaincontroller -LLL -s sub -x -W -b cn=configuration,dc=your,dc=domain -Z -D "cn=youruser,ou=container,dc=your,dc=domain" "objectclass=subnet" cn siteobject
Enter LDAP Password: 
dn: CN=172.20.4.0/24,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.20.4.0/24
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain

dn: CN=172.20.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.20.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain

dn: CN=172.30.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.30.0.0/16
siteObject: CN=London,CN=Sites,CN=Configuration,dc=your,dc=domain

dn: CN=172.19.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.19.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain

dn: CN=172.18.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.18.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain

dn: CN=172.21.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.21.0.0/16
siteObject: CN=New York,CN=Sites,CN=Configuration,dc=your,dc=domain

dn: CN=172.23.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.23.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain

dn: CN=172.17.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.17.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain

dn: CN=172.31.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.31.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain

você pode ver nesta rede que temos o objeto padrão 'Default-First-Site-Name', além dos sites de Nova York e Londres.

Uma vez que você sabe onde o seu host freenas está dentro dos intervalos de ip dos sites do AD, então você pode consultar os servidores dns para os hosts ldap nesse site. A consulta é assim para o site de Londres:

dig -t srv _ldap._tcp.london._sites.your.domain +short
0 100 389 dc05.your.domain.
0 100 389 dc03.your.domain.
0 100 389 dc04.your.domain.

E na seção de respostas você verá os diferentes hosts ldap para esse site. Então você pode usar apenas aqueles.

    
por 19.04.2016 / 20:30
0

com certeza, um dos cinco servidores não estava respondendo (não sei se está offline, ou não existe, ou o que ... o administrador do AD terá que lidar com isso.)

Eu reescrevi o script para que ele consultasse apenas os quatro bons servidores (selecionando aleatoriamente cada um deles) e agora ele é executado instantaneamente!

    
por 19.04.2016 / 21:58