Bind consultando zonas em base LDAP

A ideia principal do artigo é a centralização do ambiente em uma base única, no caso uma das melhores, o LDAP. Imaginemos o cenário, uma empresa denominada Acme Lun fará seu atual servidor de DNS(Bind), em vez de consultar as zonas em arquivos locais (.db), consultar em uma base LDAP.

[ Hits: 19.319 ]

Por: Evandro Nabor em 17/02/2011


Montando as zonas



Novo schema dnszone.

É necessária a inclusão de um novo schema no servidor openldap.
Baixe o arquivo, salve no diretório schemas do servidor ldap, adicione mais uma entrada no arquivo slapd.conf e reinicie o serviço.

Exemplo de zona em ldap:

dn: ou=DNS,dc=acme,dc=lun
objectClass: top
objectClass: organizationalUnit
ou: DNS

dn: zoneName=acme.lun,ou=DNS,dc=acme,dc=lun
zoneName: acme.lun
relativeDomainName: acme.lun
objectClass: dNSZone
objectClass: top

dn: [email protected],zoneName=acme.lun,ou=DNS,dc=acme,dc=lun
objectClass: top
objectClass: dNSZone
zoneName: acme.lun
relativeDomainName: @
dNSTTL: 86400
dNSClass: IN
sOARecord: ns1.acme.lun. root.acme.lun. 2010083102 604800 86400 2419200 604800
nSRecord: ns1.

dn: relativeDomainName=ns1,zoneName=acme.lun,ou=DNS,dc=acme,dc=lun
zoneName: acme.lun
relativeDomainName: ns1
dNSTTL: 86400
dNSClass: IN
objectClass: dNSZone
objectClass: top
aRecord: 10.1.1.2

dn: relativeDomainName=www,zoneName=acme.lun,ou=DNS,dc=acme,dc=lun
zoneName: acme.lun
relativeDomainName: www
dNSTTL: 604800
dNSClass: IN
objectClass: dNSZone
objectClass: top
cNAMERecord: www.acme.lun
aRecord: 10.1.1.3

dn: relativeDomainName=cacti,zoneName=acme.lun,ou=DNS,dc=acme,dc=lun
objectClass: top
objectClass: dNSZone
zoneName: acme.lun
relativeDomainName: cacti
dNSTTL: 604800
dNSClass: IN
cNAMERecord: cacti.acme.lun.
ARecord: 10.1.1.5

Exemplo de zona reversa em ldap:

dn: zoneName=1.1.10.in-addr.arpa,ou=DNS,dc=acme,dc=lun
zoneName: 1.1.10.in-addr.arpa
relativeDomainName: 1.1.10.in-addr.arpa
objectClass: dNSZone
objectClass: top

dn: [email protected],zoneName=1.1.10.in-addr.arpa,ou=DNS,dc=acme,dc=lun
zoneName: 1.1.10.in-addr.arpa
relativeDomainName: @
dNSTTL: 3600
dNSClass: IN
objectClass: dNSZone
objectClass: top

dn: relativeDomainName=2,zoneName=1.1.10.in-addr.arpa,ou=DNS,dc=acme,dc=lun
zoneName: 1.1.10.in-addr.arpa
relativeDomainName: 2
dNSTTL: 3600
dNSClass: IN
objectClass: dNSZone
objectClass: top
pTRRecord: ns1.acme.lun.

dn: relativeDomainName=3,zoneName=1.1.10.in-addr.arpa,ou=DNS,dc=acme,dc=lun
zoneName: 1.1.10.in-addr.arpa
relativeDomainName: 3
dNSTTL: 3600
dNSClass: IN
objectClass: dNSZone
objectClass: top
pTRRecord: www.acme.lun.

dn: relativeDomainName=5,zoneName=1.1.10.in-addr.arpa,ou=DNS,dc=acme,dc=lun
zoneName: 1.1.10.in-addr.arpa
relativeDomainName: 5
dNSTTL: 3600
dNSClass: IN
objectClass: dNSZone
objectClass: top
pTRRecord: cacti.acme.lun.

Configure seus arquivos seguindo estes como modelo, para incluí-los para dentro da base ldap salve-os como .ldif e use o slapadd, por exemplo:

# slapadd -l acme.ldif

Agora que temos as zonas prontas no servidor ldap, vamos fazer os apontamentos, edite o arquivo /chroot/named.conf e adicione as seguintes linhas com as devidas alterações de acordo com suas zonas:

# zona acme.lun

zone "acme.lun" {
   type master;
   database "ldap ldap://10.1.1.28/ou=DNS,dc=acme,dc=lun 10800";
   notify yes;
};

# reverso acme.lun
zone "1.1.10.in-addr.arpa" {
   type master;
   database "ldap ldap://10.1.1.28/ou=DNS,dc=acme,dc=lun 10800";
   notify yes;
};

Agora é só iniciarmos o serviço e acompanhar nos logs para identificar possíveis erros.

Os logs ficam em /var/log/messages.

Testando

Para testarmos o funcionamento do nosso servidor de DNS gosto da maneira clássica com a dupla dinâmica nslookup e dig.

Conclusão

Sempre gosto de lembrar a ideia de centralização, o que nos possibilita grandes vantagens, principalmente quando temos um cenário misto em serviços.

Vale ressaltar também em nossa integração ldap+dns que podemos considerar alguns itens como performance, que será um pouco prejudicada pois a consulta DNS não está sendo mais local, o que envolve vários outros fatores.

Mas asseguro-lhes que este tipo de desvantagem poderá ser levando em consideração quando temos um serviço extremamente estressado com uma taxa de acesso realmente grande.

Espero que aproveitem o artigo!

Obrigado.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Criando a chroot
   3. Montando as zonas
Outros artigos deste autor

Sincronizando Bases OpenLDAP e Active Directory

Leitura recomendada

Como utilizar o repositório SlackBuilds

Afinal, o que há de tão especial no KDE 4?

Utilizando o VNC Server no Linux

ZSH - Personalizando seu Terminal

Compatibilizando as extensões do Firefox

  
Comentários
[1] Comentário enviado por rrossilva em 17/02/2011 - 16:02h

Seu artigo apareceu na hora certa meu caro. Estava procurando uma solução assim para um servidor de DNS novo que estou montando. Vou instalar tudo amanhã de manhã junto com meu server de hospedagem novo e posto um feedback aqui.
Parabéns pelo artigo...

[2] Comentário enviado por removido em 17/02/2011 - 16:31h

Muito bom artigo. Legal mesmo !


Abraço.

[3] Comentário enviado por rogeriojlle em 17/02/2011 - 20:46h

"O bind dos repositórios não vem com suporte ao LDAP"
No Opensuse o Bind conversa com o LDAP, voce inclusive configura tudo vai YasT.

[4] Comentário enviado por grandmaster em 23/02/2011 - 08:05h

Muito bom o artigo.
---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
ITILv3 Foundation Certified
http://www.renato.henriques.nom.br


[5] Comentário enviado por dexter25 em 11/01/2012 - 17:17h

Olá, Evandro

Primeiramente, parabéns pelo artigo, realmente muito bom.

E se você puder, gostaria de tirar uma dúvida, estou configurando pela primeira vez um servidor DNS, fiz toda configuração padrão, mais quando vou tentar dar um restart ou stop no bind, ele me devolve esse erro :

* Stopping domain name service... bind9 rndc: connect failed: 127.0.0.1#953: connection refused


Segui o seu tutorial, gerei as chaves, coloquei no arquivo rndc, mais se eu coloco as opções options e server, ele reclama, só aceitando o key "rndckey" , mais somente com ele, continua dando erro.

Se puder me ajudar, agradeço demais.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts