DNS BIND para integração em domínios AD (com Windows Active Directory ou Samba)

Este artigo busca auxiliar os administradores de sistema Linux novatos ou veteranos que tem dificuldades para acertar as configurações do DNS Bind (como também tive muitas dificuldades neste sentido). O objetivo central é a integração do DNS com o ambiente AD, mas uma leitura mais centrada mostra que o artigo auxiliará mesmo em outras implementações, com poucas modificações.

[ Hits: 102.055 ]

Por: Leonardo Langhi em 26/08/2008


Arquivos de zona



O DNS, ao consultar sobre um domínio, inicia a busca em ordem invertida, desta forma ao tentar localizar o computador "www.langhi.com.br" ele iniciará a busca pela raiz (denomina-se ".") e perguntará quem é o DNS responsável por "br". Ao localizar este, perguntará quem é responsável por "com.br". Ao localizar este, perguntará quem é responsável por "langhi.com.br" (nosso DNS). Ao localizar o nosso DNS, ele será questionado sobre quem é nossa máquina "www", presente em nosso domínio.

Note que configuramos o "named.conf" para saber que responderá pelo domínio "langhi.com.br", porém não ensinamos para ele quais são as máquinas presentes em nosso domínio. Faremos esta associação nos arquivos de zona. A localização destes arquivos está escrita no "named.conf". Vamos revisar esta passagem:

zone "langhi.com.br" IN {
   type master;
   file "langhi.com.br.zone";
   allow-update { pdc; };
};

Note que dissemos ao Bind para procurar pelo arquivo "langhi.com.br.zone". Poderíamos ter fornecido o endereço completo caso esteja localizado fora da raiz de instalação do Bind, como por exemplo "/chroot/var/bind/langhi.com.br.zone", porém não esqueça de dar as permissões e propriedades necessárias para o usuário "named", senão o Bind não funcionará.

No Fedora Core 8, a localização padrão destes arquivos é "/var/named/chroot/var/named".

Vamos escrever o arquivo de zona para "langhi.com.br" usando:

# vi langhi.com.br.zone

$TTL 1D
;Especificando o nome do servidor e o e-mail do administrador
@       IN SOA  @ admin.langhi.com.br. (
            2008081900      ; serial
            1D      ; refresh
            1H      ; retry
            1W      ; expire
            3H )    ; minimum

Onde:
  • $TTL = parâmetro que indica o tempo de vida da informação desta zona, ou seja, neste caso, ela será relida por outro servidor somente após 1 dia (lembre-se que os servidores guardam informações em cache);
  • @ = a melhor leitura para o caractere "@" é "este servidor" e/ou "esta zona";
  • IN = em;
  • SOA = Start Of Authority - Indica qual o servidor responsável pelo domínio desta zona;
  • admin.langhi.com.br - e-mail do responsável pelo servidor (note a ausência de @);
  • ( ) = parâmetros adicionais;
  • Serial = número de série das informações do servidor;
  • Refresh = tempo o qual o servidor DNS aguardará para replicar suas informações;
  • Retry = tempo para espera de uma nova tentativa de replicação (se a anterior falhar);
  • Expire = tempo de vida da autoridade do servidor;
  • Minimun = tempo mínimo para armazenar a zona em cache.

Para melhor entendimento, vamos ler a primeira parte do arquivo como o Bind faria a leitura: "Esta zona está em autoridade neste servidor, email do responsável admin@langhi.com.br, serial 2008081900, replicarei em 1 dia, caso não consiga tento de novo em 1 hora. Falo ao DNS que me consultar, que serei autoridade em até uma semana, então deverá confirmar se ainda serei autoridade e ele deve guardar as informações de meu domínio por pelo menos 3 horas".

Ajustados os parâmetros de funcionamento da zona, vamos agora informar ao Bind quem é o servidor de nome deste domínio, usando:

@    NS //Leia: Este servidor é Name Server

Caso seja outro servidor, o nomeie aqui com:

dns2    NS

Se o nosso servidor de e-mail for interno, vamos indicá-lo aqui. No caso, mostrarei no exemplo com dois servidores, qual o primeiro tem maior prioridade do que o segundo (ou seja, o segundo será consultado se o primeiro falhar). Usamos aqui os valores 10 e 50 para estabelecer prioridades. Quanto menor o valor, maior será a prioridade.

.   IN   MX   15   mail1.langhi.com.br
.   IN   MX   20   mail2.langhi.com.br

E finalmente vamos indicar ao Bind quem são os computadores deste domínio, usando:

//Servidores
directory   A   192.168.1.21  
fps      A   192.168.1.23  
router   A   192.168.1.1

//Estações
lab_a      A      192.168.1.100
lab_b      A      192.168.1.101  
lab_c              A      192.168.1.102
lab_d      CNAME    lab_a

Lembra-se da listinha sugerida no começo do arquivo? Aqui está a verdadeira utilidade dele. Não iremos neste momento inserir os endereços atribuídos por DHCP. Descreverei em novo artigo esta integração. Note que escrevemos o hostname, que tipo de registro se trata e o IP. Os registros possíveis são:
  • A - Relação endereço/IP direta;
  • AAAA - Relação endereço IPv6 direta;
  • NS - Servidor DNS do domínio;
  • CNAME - "Apelido" de uma máquina, ou seja, um endereço que aponta para outro endereço, ao invés de apontar para um IP;
  • MX - Servidores de e-mail;
  • PTR - Apontador, que indica o caminho inverso de um IP. Veremos adiante;
  • SOA - Início da Autoridade;
  • TXT - Indicar uma string de texto para um hostname;
  • SRV - Mostra serviços presentes na rede (utilizado para AD).

Nosso arquivo deve ter ficado assim:

$TTL 1D
;Especificando o nome do servidor e o e-mail do administrador
@       IN SOA  @ admin.langhi.com.br. (
           2008081900      ; serial
           1D      ; refresh
           1H      ; retry
           1W      ; expire
           3H )    ; minimum

@    NS

//Servidores
directory   A   192.168.1.21  
fps      A   192.168.1.23  
router   A   192.168.1.1

//Estações
lab_a      A      192.168.1.100
lab_b      A      192.168.1.101  
lab_c      A      192.168.1.102
lab_d      CNAME    lab_a

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Preparação do ambiente
   3. Preparação do servidor
   4. Escrevendo o arquivo de configuração named.conf
   5. Definições de zonas no DNS
   6. Arquivos de zona
   7. Arquivos de zona reversa
   8. Zonas necessárias para Active Directory
   9. Considerações finais
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalando um ambiente leve e funcional em computadores antigos

Editando trilhas de GPS no formato de arquivo GPX no Linux

Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh

Instalação da IDE Anjuta em ambientes não-Gnome (HOW-TO)

Hbasic, um forte candidato open source para brigar com o Microsoft Visual Basic

  
Comentários
[1] Comentário enviado por raphaelldf em 26/08/2008 - 11:36h

excelente de verdade! dificil enxergar esse funcionamento quando a gente poe a mão na massa. eu não tinha ideia que existia as zonas "_tcp", "_udp", "_sites" e "_msdcs".
uma sugestão aqui fica integrar o dhcp ao ddns, mas, parabens e grande abraço.

[2] Comentário enviado por andrecostall em 26/08/2008 - 14:30h

Cara esse foi o melhor artigo sobre BIND que ja li..
Parabéns mesmo.
Abraços

[3] Comentário enviado por davidsonpaulo em 26/08/2008 - 19:45h

Só uma correção: desde a versão 7 o Fedora não se chama mais Fedora Core, portanto não é Fedora Core 8, mas sim Fedora 8. :-)

Parabéns pelo artigo. Muito completo, claro, bem escrito e, principalmente, útil.

[4] Comentário enviado por vagnersobrinho em 26/08/2008 - 22:13h

Valeu meu caro!!!!
tava procurando um artigo desse
:D
abraços

[5] Comentário enviado por othelo em 27/08/2008 - 09:38h

Muito legal o artigo, tenho lido bastante sobre DNS e achei muito bem escrito e com facil entendimento!

Continue gerando material deste nivel... parabens

[6] Comentário enviado por removido em 27/08/2008 - 13:55h

leolanghi,
Excelente artigo, porém vale lembrar que a acl "localhost" já vem "embutida" nas versões mais recentes do bind e o daemon não sobe caso vc tente sobrescrever a mesma. O erro que é exibido é:

attempt to redefine builtin acl 'localhost'

Basta comentar ou remover a linha acl "localhost" para o serviço subir normalmente...

No mais, parabéns pelo artigo!!!

[7] Comentário enviado por andrecostall em 28/08/2008 - 15:17h

Cara precisava de uma ajuda sua..

Estou querendo criar um DNS para minha maquina tenho um IP fixo empresa valido do virtua.

172.16.1.40 é o ip da minha maquina
forwarders -> é o DNS1 e DNS2 do virtua

Olha só minha conf.

named.conf
==================================================
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
auth-nxdomain yes;
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
//query-source address * port 53;
//forward first;
forwarders { 201.x.x.x; 201.x.x.x; };
forward first;
allow-query { 127.0.0.1; 172.16.1.0/16; };
};

//
// a caching only nameserver config
//

// Arquivo de log das operacoes
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};


controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

zone "." IN {
type hint;
file "named.ca";
};

zone "localdomain" IN {
type master;
file "localdomain.zone";
allow-update { none; };
};

zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.ip6.local";
allow-update { none; };
};

zone "255.in-addr.arpa" IN {
type master;
file "named.broadcast";
allow-update { none; };
};

zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};


zone "angacetur.com.br" IN {
type master;
file "db.angacetur.com.br";
allow-transfer { 172.16.1.40; };
};
include "/etc/rndc.key";

===================================================

db.angacetur.com.br
===================================================

$TTL 300; 5min

angacetur.com.br. IN SOA ns1.angacetur.com.br. root.ns1.angacetur.com.br. (
2008082802 ; Serial
3600 ; Refresh 1h
3600 ; Retry 1h
3600 ; Expire 1h
3600 ) ; Minimum 1h
; definicao do servidor DNS
angacetur.com.br. IN NS ns1.angacetur.com.br.

; definicao do server email
angacetur.com.br. IN MX 10 mail.angacetur.com.br.

; definicao dos hosts
ns1.angacetur.com.br. IN A 172.16.1.40
ns1 IN A 172.16.1.40
www IN A 172.16.1.40
mail IN A 172.16.1.40

=================================================

Quando vou no site registro.br para cadastrar o meu dns da o seguinte erro no log named.run:

client 200.160.2.3#57168: query 'ns1.angacetur.com.br/SOA/IN' denied

e no site da a seguinte mensagem.
msg: PESQUISA RECUSADA

O que deve estar acontecendo ?


abraços..

[8] Comentário enviado por leolanghi em 26/09/2008 - 22:29h

Respondido por email!!!

eram algumas configurações!!!


[9] Comentário enviado por elderbezerra em 27/09/2008 - 17:21h

Seguinte erro:

root@localhost ~]# service named start
Starting named:
Error in named configuration:
zone aacdft.fja.edu.br/IN: loaded serial 2008081900
zone 1.168.192.in-addr.arpa/IN: NS '1.168.192.in-addr.arpa' has no
address records (A or AAAA)
zone 1.168.192.in-addr.arpa/IN: loaded serial 2008092600
zone _msdcs.aacdft.fja.edu.br/IN: loaded serial 2008081900
_sites.aacdft.fja.edu.br.zone:10: _sites.aacdft.fja.edu.br: bad owner
name (check-names)
_sites.aacdft.fja.edu.br.zone:11: _sites.aacdft.fja.edu.br: bad owner
name (check-names)
zone _sites.aacdft.fja.edu.br/IN: loading from master file
_sites.aacdft.fja.edu.br.zone failed: bad owner name (check-names)
_default/_sites.aacdft.fja.edu.br/IN: bad owner name (check-names)
zone _tcp.aacdft.fja.edu.br/IN: loaded serial 2008081900
zone _udp.aacdft.fja.edu.br/IN: loaded serial 2008081900
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN:
NS '1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa'
has no address records (A or AAAA)
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN:
loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: NS '1.0.0.127.in-addr.arpa' has no
address records (A or AAAA)
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: NS '0.in-addr.arpa' has no address records (A or AAAA)
zone 0.in-addr.arpa/IN: loaded serial 0
[FAILED]

[10] Comentário enviado por elderbezerra em 27/09/2008 - 17:24h

Por favor, alguem poderia me ajudar nestes erros acima?
Obigado

[11] Comentário enviado por jsfernando em 20/05/2009 - 10:09h

Leonardo, qual a possibilidade de maquinas clientes windows, escrever automaticamente no bind do dns, colocando a relação dessas no allow-update? É necessário configurar um DHCP pra isso ou pode ser feito sózinho pelas clientes e o bind (DNS) ?

[12] Comentário enviado por renanmvc em 02/08/2012 - 16:21h

Poxa cara... está tudo legal, parabéns um ótimo trabalho!!
MAS eu queria toda essa configuração PARA O DEBIAN... tem como VC MI AJUDAR?
se puder agradeço desde já!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts