Você está na página 1de 9

Centro de Difuso de Tecnologia e Conhecimento

BIND
Berkeley Internet Name System

Eliphas L. G. Siqueira

Contedo
Introduo ao DNS ....................................................................................................... 3 Instalao............................................................................................................................ 3 DNS para cache .............................................................................................................. 3 DNS autoritativo ............................................................................................................ 3 Definio de zonas para o domnio ......................................................................... 4 Criao dos mapas de zonas ............................................................................................ 4 Criao de mapas de resoluo reversa ................................................................ 6 Como testar a configurao....................................................................................... 7 Teste de mapas de zonas............................................................................................ 8 Teste final......................................................................................................................... 8

Introduo ao DNS
O DNS (Domain Name System - Sistema de Nomes de Domnios) um sistema de gerenciamento de nomes hierrquico e distribudo operando segundo duas definies: examinar e atualizar seu banco de dados; resolver nomes de servidores em endereos de rede (IPs). O sistema de distribuio de nomes de domnio foi introduzido em 1984 e com ele os nomes de hosts residentes em um banco de dados puderam ser distribudos entre servidores mltiplos, baixando assim a carga em qualquer servidor que prov administrao no sistema de nomeao de domnios. Ele baseia-se em nomes hierrquicos e permite a inscrio de vrios dados digitados alm do nome do host e seu IP. Em virtude do banco de dados de DNS ser distribudo, seu tamanho ilimitado e o desempenho no degrada tanto quando se adiciona mais servidores nele. A implementao do DNS-Berkeley, foi desenvolvido originalmente para o sistema operacional BSD UNIX 4.3. O servidor DNS traduz nomes para os endereos IP e endereos IP para nomes respectivos, e permitindo a localizao de hosts em um domnio determinado. Num sistema livre o servio implementado pelo software BIND. Esse servio geralmente se encontra localizado no servidor DNS primrio. O servidor DNS secundrio uma espcie de cpia de segurana do servidor DNS primrio. Quando no possvel encontrar um domnio atravs do servidor primrio o sistema tenta resolver o nome atravs do servidor secundrio. Existem 13 servidores DNS raiz no mundo todo e sem eles a Internet no funcionaria. Destes, dez esto localizados nos Estados Unidos da Amrica, um na sia e dois na Europa. Para Aumentar a base instalada destes servidores, foram criadas rplicas localizadas por todo o mundo, inclusive no Brasil desde 2003. Ou seja, os servidores de diretrios responsveis por prover informaes como nomes e endereos das mquinas so normalmente chamados servidores de nomes. Na Internet, o servidor de nome usado o DNS, que apresenta uma arquitetura cliente/servidor, podendo envolver vrios servidores DNS na resposta a uma consulta.

Instalao
A instalao do BIND feita atravs do seguinte comando, como superusurio do sistema: #apt-get install bind9 Aps a instalao do pacote bind9, o daemon "named" ser iniciado e o BIND j entrar em funcionamento. Os arquivos de configurao do servidor de nomes ficam armazenados no diretrio /etc/bind e os arquivos de zonas a serem criados devero ser colocados no diretrio /var/cache/bind, de acordo com o valor do parmetro directory da seo options no arquivo de configurao principal do servidor de nomes BIND, o arquivo /etc/bind/named.conf.

DNS para cache


A idia de um servidor de nomes somente para cache, como o prprio nome sugere, somente aproveitar o cache da resoluo de nomes do servidor. Em um servidor de nomes desse tipo, no necessrio criar mapas de zonas e lidar com nenhum tipo adicional de configurao, uma vez que o pacote bind9 j iniciado com um funcionamento adequado para atuar como um servidor de nomes somente para cache logo aps a sua instalao.

DNS autoritativo
Um servidor de nomes autoritativo um servidor de nomes que possui autoridade para um ou mais domnios e, sendo assim, responde s pesquisas de resoluo de nomes para hosts que fazem parte dos domnios em questo. Ao contrrio do caso do servidor de nomes somente para cache, a criao de um servidor de nomes autoritativo para um domnio requer

configurao do BIND e, adicionalmente, a criao dos mapas de zonas para resoluo comum e reversa para o domnio.

Definio de zonas para o domnio


O domnio para o qual desejamos que o BIND responda pesquisas de resoluo de nomes dever ser cadastrado no arquivo de configurao principal do BIND, o arquivo /etc/bind/named.conf, como uma zona, utilizando a seguinte sintaxe: 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 domnio de mesmo nome, ou seja, o dominio.com.br. 1 - O parmetro type especifica o tipo de servidor de nomes que nossa instalao do BIND ser para essa zona especfica: master ou slave. Master indica que nosso servidor de nomes ser o servidor principal do domnio em questo e slave indica que o servidor de nomes ser um servidor escravo, que somente receber atualizaes de mudanas feitas na zona diretamente na configurao do servidor master. 2 - O parmetro file indica o nome do arquivo onde a zona ser definida, relativo ao diretrio padro de mapas e zonas definido pelo parmetro directory no incio do arquivo /etc/bind/named.conf, ou seja, o diretrio /var/cache/bind. 3 - O parmetro allow-transfer especifica os endereos de IP do servidor de nomes que esto autorizados a transferir a zona em questo. interessante listar, separados por dois pontos, os endereos de IP dos servidores de nomes escravos aqui. 4 - O parmetro notify especifica se o BIND dever enviar notificaes de mudanas nos dados da zona para seus servidores de nomes escravos. Habilitar esta opo uma boa idia, uma vez que, dessa forma, os servidores de nomes escravos sero avisados automaticamente caso mudanas sejam feitas nos mapas de zonas do servidor de nomes principal e iniciaro uma transferncia de zona para ficarem com seus mapas de zonas atualizados em relao ao servidor de nomes principal.

Criao dos mapas de zonas


Aps a definio da zona no arquivo /etc/bind/named.conf, necessrio criar o mapa da zona, ou seja, o arquivo contendo toda a configurao da zona, com o mapeamento entre os endereos IP e nomes de hosts. O arquivo dever ser criado no diretrio /var/cache/bind, com o nome definido no parmetro file da zona cadastrada no arquivo /etc/bind/named.conf. Tecnicamente, qualquer nome pode ser definido para os arquivos dos mapas de zonas. Vamos adotar um padro bem conhecido, ficando: db.dominio.com.br, onde dominio.com.br o domnio gerenciado pela zona em questo. Um exemplo de arquivo de mapa de zona seria: $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 O mapa de zona de exemplo acima, que gerencia o domnio de exemplo dominio.com.br, define diversos registros: 1 - o registro do tipo MX, mx01, define o servidor de e-mails responsvel pelas mensagens do domnio dominio.com.br. Porm, o nome desse host definido mais abaixo, onde ao host com o endereo 200.1.2.5 atribudo o nome mx01.dominio.com.br. aconselhvel, por motivos de segurana, definir o registro MX da zona apontando para o nome de um registro do tipo A e no para um registro do tipo CNAME; 2 - os registros de exemplo do tipo NS, ns1 e ns2, definem que nossa zona ter dois servidores de nomes que podero responder com autoridade. Um exemplo criar um segundo servidor de nomes no host de endereo IP 200.1.2.4 apontando pelo registro NS ns2 e configur-lo como um servidor de nomes escravo para que o mesmo transfira automaticamente os mapas de zona do domnio de exemplo, dominio.com.br, eliminando a necessidade de criar o mapa de zonas no servidor escravo uma segunda vez; 3 - os registros do tipo A: servidor, ns1, ns2, mx01, www e ftp apenas indicam os nomes de exemplo dos hosts com os endereos IP 200.1.2.3, 200.1.2.4, 200.1.2.5, 200.1.2.6 e 200.1.2.7. ; 4 - os registros de exemplo do tipo CNAME indicam nomes alternativos (apelidos) atravs dos quais alguns hosts tambm so conhecidos, como por exemplo, webmail.dominio.com.br, pop.dominio.com.br e smtp.dominio.com.br serem apelidos para o host de nome servidor.dominio.com.br. Em adio, o cabealho da zona formado pelos seguintes elementos: 1 - $TTL Cada registro em uma zona conhecido tambm como um RR, ou Registro de Recurso (do ingls Resource Record). Cada RR pode possuir um tempo de vida, definido como um registro inteiro de 32 bits representado em unidades de segundos. Um TTL define um limite de tempo que o registro deve ser mantido em cache. usado principalmente por resolvers (programas que buscam informaes em servidores de nomes em resposta requisies de clientes) quando os mesmos fazem caches de RRs. Esse tempo de vida obtido do \$TTL geral da zona na primeira linha do arquivo de zona caso os RRs listados no arquivo de zona no especifiquem cada um seu prprio TTL. 2 - Registro SOA O registro SOA indica o incio de uma zona com autoridade. Esse registro composto de vrios campos, como pode ser visto no exemplo de zona anterior. Segue abaixo o registro SOA do exemplo anterior para melhor vizualizao e uma explicao posterior: @ IN SOA servidor.dominio.com.br. hostmaster.servidor.dominio.com.br. ( 20070106; serial 3600; refresh 900; retry

1209600; expire 43200; default_ttl ) Na primeira linha indicamos, aps o nome totalmente qualificado do servidor de nomes, hostmaster.servidor.dominio.com.br que, na verdade, seria o endereo de e-mail (com o smbolo de @ substitudo por um ponto) do contato responsvel pela zona. Por causa disso importante existir uma conta de e-mail hostmaster (ou um alias hostmaster apontando para a caixa postal do administrador responsvel) que possa ser contactada em caso de problemas relacionados resoluo de nomes em sua zona. Aps a abertura dos parnteses, temos cinco campos diferentes. A seguir, uma explicao da utilidade de cada um deles: 1 - Serial O primeiro campo conhecido como serial. O campo serial deve conter um nmero inteiro que deve ser incrementado a cada modificao feita na zona. Quando os servidores de nomes escravos checam a zona em busca de modificaes, o campo serial o campo checado. Se o mesmo possui um valor maior que o valor da cpia que possuem localmente, os servidores de nomes escravos entendem que a zona foi modificada e que uma nova transferncia de zona necessria. Um bom padro para o serial costuma ser: ANOMESDIAXX, em que XX representa a quantidade de vezes que a zona foi modificada no dia. 2 - Refresh, Retry e Expire O segundo, terceiro e quarto campos so conhecidos como refresh, retry e expire, respectivamente. Esses campos controlam o perodo de tempo em que os servidores de nomes secundrios iro buscar por informaes atualizadas sobre a zona no servidor de nomes principal. Sempre que uma zona carregada em um servidor secundrio, o servidor de nomes secundrio espera a quantidade de segundos especificada no campo refresh antes de checar a existncia de um novo serial no servidor de nomes principal. Caso a checagem, por qualquer motivo, no possa ser completada, novas checagens sero iniciadas a cada retry segundos. Por exemplo: se o campo retry contm um valor de 3600, novas tentativas de checagem ocorrero de 1 em 1 hora, pois 3600 segundos equivalem 1 hora. A checagem , na verdade, uma simples pesquisa pelo campo SOA da zona no servidor de nomes primrio. Caso o campo serial na cpia da zona existente no servidor de nomes secundrio esteja igual ao serial da zona existente no servidor de nomes principal, porque nenhuma mudana ocorreu e a espera pelo intervalo de refresh segundos ser reiniciada. Caso o servidor de nomes secundrio no consiga executar uma checagem pelo serial do servidor de nomes principal por todo o tempo especificado no campo expire, o mesmo assumir que sua cpia da zona obsoleta e a descartar.

Criao de mapas de resoluo reversa


Em alguns casos, alm da criao dos mapas de zonas, necessria a criao de mapas de resoluo reversa, ou seja, mapas que possibilitem que o nome de um host seja encontrado dado o endereo de IP do mesmo. Isso conseguido atravs do uso de um domnio especial, o domnio in-addr.arpa, e de registros do tipo PTR no mapa de resoluo reversa. Porm, ao contrrio dos mapas de zonas, mapas de resoluo reversa so criados para uma rede especfica e no para um domnio. Sendo assim, apesar de um servidor de nomes poder possuir mapas de zonas de diversos domnios, o mesmo poder possuir um mapa de resoluo reversa somente para a rede (interna ou externa) para a qual o mesmo possui autoridade. As entradas do tipo PTR no domnio in-addr.arpa so feitas especificando somente o ltimo octeto de um endereo IP, relacionando o mesmo ao nome do host correspondente. Um exemplo de mapa de resoluo reversa para a rede interna (invlida na internet) de exemplo 192.168.1.0 seria: $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. O mapa de resoluo reversa acima um mapa de exemplo para a rede de exemplo utilizada no exemplo da seo anterior. Assim como no caso do mapa de zonas, o mapa de resoluo reversa de nomes de uma rede deve ser definido no arquivo de configurao principal do BIND, em /etc/bind/named.conf. Um exemplo de como o mapa de rede de exemplo que utilizamos pode ser definido : 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, aps os trs primeiros octetos de nossa rede de exemplo invertidos (ou seja, como nossa rede de exemplo 192.168.1.0, os trs primeiros octetos invertidos so 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 trs primeiros octetos) agora precisamos informar somente o ltimo octeto de cada endereo IP para definir um registro do tipo PTR, como pode ser visto acima no arquivo de mapas de resoluo reversa para nossa rede de exemplo.

Como testar a configurao


imprescindvel que sejam efetuados testes nos arquivos de configurao alterados antes de reiniciar os servios relacionados.

Teste do named.conf
Uma maneira de testar facilmente se a configurao do servidor de nomes est correta utilizar as ferramentas fornecidas pelo prprio pacote bind9 para esta finalidade. Para testar a validade das configuraes feitas no arquivo de configurao principal do servidor de nomes no arquivo /etc/bind/named.conf, utilize a ferramenta de nome namedcheckconf. Essa ferramenta pode ser utilizada da seguinte forma: #named-checkconf /etc/bind/named.conf Caso nenhum erro seja apresentado, o arquivo de configurao /etc/bind/named.conf estar configurado sintaticamente correto. Caso exista algum erro de sintaxe no arquivo, o mesmo ser exibido. Por exemplo, considere o erro a seguir: #named-checkconf /etc/bind/named.conf /etc/bind/named.conf:84:missing ';' before 'zone'

O erro acima indica que o caractere de ponto e vrgula (;) est faltando antes da declarao de uma nova zona, alm de indicar em qual linha do arquivo o erro pode ser encontrado.

Teste de mapas de zonas


Similarmente ao utilitrio named-checkconf, visto na seo anterior, outra ferramenta de grande ajuda na deteco e resoluo de problemas relacionados mapas de zonas o utilitrio de nome named-checkzone, tambm fornecido junto com o pacote bind9. A maneira correta de utiliz-lo executando-o da seguinte forma: #named-checkzone <nome_da_zona> <arquivo_da_zona> Veja a seguir um exemplo de sada do utilitrio named-checkzone verificando a sintaxe do mapa da zona de exemplo domnio.com.br: #named-checkzone dominio.com.br /var/cache/bind/db.dominio.com.br zone dominio.com.br/IN: loaded serial 2007010601 OK Repare que a sada do comando simula o carregamento da zona dominio.com.br, indica o serial atual da mesma e exibe um sinal de OK caso nenhum erro de sintaxe seja detectado no mapa de zona. Assim como no caso do utilitrio named-checkconf, o utilitrio named-checkzone auxilia a encontrar problemas em um arquivo de mapa de zonas caso erros de sintaxe sejam encontrados.

Teste final
Existem diversas ferramentas dedicadas ao teste de funcionamento de resposta a requisies de resoluo de nomes de servidores de nomes. Porm, a ferramenta mais utilizada o utilitrio dig. No Debian, esse utilitrio fornecido pelo pacote dnsutils. Para instal-lo, utilize o comando a seguir: #apt-get install dnsutils Aps instalado, o utilitrio dig pode ser utilizado da seguinte forma: #dig <tipo_registro> <domnio> Onde <tipo_registro> deve ser substitudo pelo tipo de registro do domnio que se deseja pesquisar (por exemplo, o(s) registro(s) NS do domnio) e <domnio> deve ser substitudo pelo prprio nome do domnio. Um exemplo de consulta aos registros NS do domnio cdtc.org.br seria: #dig NS cdtc.org.br ; <<>> DiG 9.3.2 <<>> NS cdtc.org.br ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25907 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; 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. ;; Query time: 92 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Sun Jan 7 21:55:35 2007 ;; MSG SIZE rcvd: 86 Como pode ser visto no exemplo da pesquisa acima, a seo QUESTION SECTION indica que a pesquisa pelo registro NS do domnio cdtc.org.br foi feita. Na seo 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 tambm que algumas informaes sobre a pesquisa so exibidas a seguir, como o tempo de pesquisa (92 milisegundos), data e horrio da pesquisa e o tamanho da mensagem recebida do servidor de nomes contendo a resposta da pesquisa. Devemos lembrar que, por padro, 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 requisio de pesquisa deve ser enviada, acrescente um parmetro adicional linha de comando que executa o utilitrio dig, contendo o caractere @ seguido do endereo IP do servidor de nomes desejado. Um exemplo de pesquisa especificando o servidor de nomes para o qual enviar a requisio de pesquisa seria: #dig NS cdtc.org.br @1.2.3.4 Ou seja, pesquise pelo registro NS do domnio cdtc.org.br no servidor de nomes que possui o endereo IP 1.2.3.4. Alm dos testes de registros especficos, outra recomendao utilizar o ping para testar o funcionamento da resoluo de nomes tentando pingar hosts cadastrados na zona.

Você também pode gostar