Apostila Sobre BIND DNS
Apostila Sobre BIND DNS
Apostila Sobre BIND DNS
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 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.
@ 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.
@ 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.
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 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.