Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Sobre BIND DNS
Apostila Sobre BIND DNS
BIND
Berkeley Internet Name System
Eliphas L. G. Siqueira
Conteúdo
Introdução ao DNS ....................................................................................................... 3
Instalação............................................................................................................................ 3
DNS para cache .............................................................................................................. 3
DNS autoritativo ............................................................................................................ 3
Definição de zonas para o domínio ......................................................................... 4
Criação dos mapas de zonas ............................................................................................ 4
Criação de mapas de resolução reversa ................................................................ 6
Como testar a configuração....................................................................................... 7
Teste de mapas de zonas............................................................................................ 8
Teste final......................................................................................................................... 8
Introdução ao DNS
O DNS (Domain Name System - Sistema de Nomes de Domínios) é um sistema de
gerenciamento de nomes hierárquico e distribuído operando segundo duas definições:
examinar e atualizar seu banco de dados;
resolver nomes de servidores em endereços de rede (IPs).
O sistema de distribuição de nomes de domínio foi introduzido em 1984 e com ele os nomes
de hosts residentes em um banco de dados puderam ser distribuídos entre servidores múltiplos,
baixando assim a carga em qualquer servidor que provê administração no sistema de nomeação
de domínios. Ele baseia-se em nomes hierárquicos e permite a inscrição de vários dados
digitados além do nome do host e seu IP. Em virtude do banco de dados de DNS ser
distribuído, seu tamanho é ilimitado e o desempenho não degrada tanto quando se adiciona
mais servidores nele.
A implementação do DNS-Berkeley, foi desenvolvido originalmente para o sistema
operacional BSD UNIX 4.3.
O servidor DNS traduz nomes para os endereços IP e endereços IP para nomes respectivos,
e permitindo a localização de hosts em um domínio determinado. Num sistema livre o serviço é
implementado pelo software BIND. Esse serviço geralmente se encontra localizado no servidor
DNS primário.
O servidor DNS secundário é uma espécie de cópia de segurança do servidor DNS primário.
Quando não é possível encontrar um domínio através do servidor primário o sistema tenta
resolver o nome através do servidor secundário.
Existem 13 servidores DNS raiz no mundo todo e sem eles a Internet não funcionaria.
Destes, dez estão localizados nos Estados Unidos da América, um na Ásia e dois na Europa.
Para Aumentar a base instalada destes servidores, foram criadas réplicas localizadas por todo o
mundo, inclusive no Brasil desde 2003.
Ou seja, os servidores de diretórios responsáveis por prover informações como nomes e
endereços das máquinas são normalmente chamados servidores de nomes. Na Internet, o
servidor de nome usado é o DNS, que apresenta uma arquitetura cliente/servidor, podendo
envolver vários servidores DNS na resposta a uma consulta.
Instalação
A instalação do BIND é feita através do seguinte comando, como superusuário do sistema:
Após a instalação do pacote bind9, o daemon "named" será iniciado e o BIND já entrará em
funcionamento. Os arquivos de configuração do servidor de nomes ficam armazenados no
diretório /etc/bind e os arquivos de zonas a serem criados deverão ser colocados no diretório
/var/cache/bind, de acordo com o valor do parâmetro directory da seção options no arquivo
de configuração principal do servidor de nomes BIND, o arquivo /etc/bind/named.conf.
DNS autoritativo
Um servidor de nomes autoritativo é um servidor de nomes que possui autoridade para um
ou mais domínios e, sendo assim, responde às pesquisas de resolução de nomes para hosts que
fazem parte dos domínios em questão. Ao contrário do caso do servidor de nomes somente
para cache, a criação de um servidor de nomes autoritativo para um domínio requer
configuração do BIND e, adicionalmente, a criação dos mapas de zonas para resolução comum
e reversa para o domínio.
zone "dominio.com.br" {
type master;
file "db.dominio.com.br";
allow-transfer { 200.1.2.4; };
notify yes;
};
O trecho acima declara uma nova zona, de nome dominio.com.br, a qual será utilizada
para definir a estrutura do domínio de mesmo nome, ou seja, o dominio.com.br.
1 - O parâmetro type especifica o tipo de servidor de nomes que nossa instalação do BIND
será para essa zona específica: master ou slave. Master indica que nosso servidor de nomes
será o servidor principal do domínio em questão e slave indica que o servidor de nomes será
um servidor escravo, que somente receberá atualizações de mudanças feitas na zona
diretamente na configuração do servidor master.
2 - O parâmetro file indica o nome do arquivo onde a zona será definida, relativo ao
diretório padrão de mapas e zonas definido pelo parâmetro directory no início do arquivo
/etc/bind/named.conf, ou seja, o diretório /var/cache/bind.
3 - O parâmetro allow-transfer especifica os endereços de IP do servidor de nomes que
estão autorizados a transferir a zona em questão. É interessante listar, separados por dois
pontos, os endereços de IP dos servidores de nomes escravos aqui.
4 - O parâmetro notify especifica se o BIND deverá enviar notificações de mudanças nos
dados da zona para seus servidores de nomes escravos. Habilitar esta opção é uma boa idéia,
uma vez que, dessa forma, os servidores de nomes escravos serão avisados automaticamente
caso mudanças sejam feitas nos mapas de zonas do servidor de nomes principal e iniciarão
uma transferência de zona para ficarem com seus mapas de zonas atualizados em relação ao
servidor de nomes principal.
$TTL 43200
$ORIGIN dominio.com.br.
@ IN SOA servidor.dominio.com.br. hostmaster.servidor.dominio.com.br.
(
2007010601; serial
3600; refresh
900; retry
1209600; expire
43200; default_ttl
)
@ IN MX 5 mx01
@ IN NS ns1
@ IN NS ns2
@ IN A 200.1.2.3
servidor IN A 200.1.2.3
ns1 IN A 200.1.2.3
ns2 IN A 200.1.2.4
mx01 IN A 200.1.2.5
www IN A 200.1.2.6
ftp IN A 200.1.2.7
webmail IN CNAME ns1
pop IN CNAME ns1
smtp IN CNAME ns1
2 - Registro SOA
O registro SOA indica o início de uma zona com autoridade. Esse registro é composto de
vários campos, como pode ser visto no exemplo de zona anterior. Segue abaixo o registro SOA
do exemplo anterior para melhor vizualização e uma explicação posterior:
@ IN SOA servidor.dominio.com.br. hostmaster.servidor.dominio.com.br.
(
20070106; serial
3600; refresh
900; retry
1209600; expire
43200; default_ttl
)
1 - Serial
O primeiro campo é conhecido como serial. O campo serial deve conter um número inteiro
que deve ser incrementado a cada modificação feita na zona. Quando os servidores de nomes
escravos checam a zona em busca de modificações, o campo serial é o campo checado. Se o
mesmo possui um valor maior que o valor da cópia que possuem localmente, os servidores de
nomes escravos entendem que a zona foi modificada e que uma nova transferência de zona é
necessária. Um bom padrão para o serial costuma ser: ANOMESDIAXX, em que XX representa a
quantidade de vezes que a zona foi modificada no dia.
$TTL 43200
@ IN SOA servidor.dominio.com.br. hostname.servidor.dominio.com.br.
2007010601; serial
3600; refresh
900; retry
1209600; expire
43200; default_ttl
)
@ IN NS servidor.dominio.com.br.
3 IN PTR ns1.dominio.com.br.
4 IN PTR ns2.dominio.com.br.
5 IN PTR mx01.dominio.com.br.
6 IN PTR www.dominio.com.br.
7 IN PTR ftp.dominio.com.br.
zone "1.168.192.in-addr.arpa" {
type master;
file "db.192.168.1";
};
No exemplo acima, podemos ver que a zona especial in-addr.arpa é utilizada. Para definir o
mapa reverso de nossa rede de exemplo, informamos essa zona especial, in-addr.arpa, após os
três primeiros octetos de nossa rede de exemplo invertidos (ou seja, como nossa rede de
exemplo é 192.168.1.0, os três primeiros octetos invertidos são 1.168.192).
Como especificamos os octetos que definem a rede junto ao nome da zona para defini-la no
arquivo /etc/bind/named.conf, (em nosso caso, os três primeiros octetos) agora precisamos
informar somente o último octeto de cada endereço IP para definir um registro do tipo PTR,
como pode ser visto acima no arquivo de mapas de resolução reversa para nossa rede de
exemplo.
Teste do named.conf
Uma maneira de testar facilmente se a configuração do servidor de nomes está correta é
utilizar as ferramentas fornecidas pelo próprio pacote bind9 para esta finalidade.
Para testar a validade das configurações feitas no arquivo de configuração principal do
servidor de nomes no arquivo /etc/bind/named.conf, utilize a ferramenta de nome named-
checkconf. Essa ferramenta pode ser utilizada da seguinte forma:
#named-checkconf /etc/bind/named.conf
#named-checkconf /etc/bind/named.conf
/etc/bind/named.conf:84:missing ';' before 'zone'
O erro acima indica que o caractere de ponto e vírgula (;) está faltando antes da declaração
de uma nova zona, além de indicar em qual linha do arquivo o erro pode ser encontrado.
Teste final
Existem diversas ferramentas dedicadas ao teste de funcionamento de resposta a
requisições de resolução de nomes de servidores de nomes. Porém, a ferramenta mais utilizada
é o utilitário dig. No Debian, esse utilitário é fornecido pelo pacote dnsutils. Para instalá-lo,
utilize o comando a seguir:
Onde <tipo_registro> deve ser substituído pelo tipo de registro do domínio que se deseja
pesquisar (por exemplo, o(s) registro(s) NS do domínio) e <domínio> deve ser substituído
pelo próprio nome do domínio. Um exemplo de consulta aos registros NS do domínio
cdtc.org.br seria:
#dig NS cdtc.org.br
;; QUESTION SECTION:
;cdtc.org.br. IN NS
;; ANSWER SECTION:
cdtc.org.br. 1798 IN NS dns1.cdtc.org.br.
cdtc.org.br. 1798 IN NS dns2.cdtc.org.br.
cdtc.org.br. 1798 IN NS dns0.cdtc.org.br.
Como pode ser visto no exemplo da pesquisa acima, a seção QUESTION SECTION indica
que a pesquisa pelo registro NS do domínio cdtc.org.br foi feita. Na seção ANSWER SECTION,
podemos ver que as respostas foram 3 registros NS apontando para os hosts dns0.cdtc.org.br,
dns1.cdtc.org.br e dns2.cdtc.org.br.
Perceba também que algumas informações sobre a pesquisa são exibidas a seguir, como o
tempo de pesquisa (92 milisegundos), data e horário da pesquisa e o tamanho da mensagem
recebida do servidor de nomes contendo a resposta da pesquisa.
Devemos lembrar que, por padrão, o servidor de nomes para o qual a pesquisa será enviada
é o servidor de nomes para o qual o sistema operacional onde a pesquisa está sendo feita
aponta. Isso pode ser conferido no arquivo /etc/resolv.conf.
Para especificar a qual servidor de nomes a requisição de pesquisa deve ser enviada,
acrescente um parâmetro adicional à linha de comando que executa o utilitário dig, contendo o
caractere @ seguido do endereço IP do servidor de nomes desejado. Um exemplo de pesquisa
especificando o servidor de nomes para o qual enviar a requisição de pesquisa seria:
Ou seja, pesquise pelo registro NS do domínio cdtc.org.br no servidor de nomes que possui
o endereço IP 1.2.3.4. Além dos testes de registros específicos, outra recomendação é utilizar o
ping para testar o funcionamento da resolução de nomes tentando pingar hosts cadastrados na
zona.