Configurando um servidor DNS

Você que é um internauta experiente deve sem dúvida conhecer sobre Domain Name System. Vocẽ sabe que é por causa dele que podemos memorizar nomes de domínio agradáveis e não apenas números. Você provavelmente até sabe que quando digita um endereço em seu navegador, seu computador contata um servidor de DNS para encontrar um endereço IP numérico que corresponda a nome do domínio. Vamos dar uma olhada nesse tutorial, porém, em como exatamente tudo isso funciona, e como configurar um servidor DNS próprio.

Você deve estar de perguntando: se o meu provedor já me fornece um serviço de DNS, por que eu iria queres configurar um servidor próprio? Bem, isso é o que iremos discutir na seção seguinte..

Por quê fazer seu próprio servidor de DNS?

Existem umas poucas razões que justifiquem a criação de um servidor de DNS próprio. Em primeiro lugar, para fins educacionais e diversão apenas. Em segundo lugar, se você for paranoico por controle, e quer ter o máximo de seu site sob controle. Se você frequentemente mudar máquinas, nomes de hosts, endereços IP, provedores, ou outros fatores, ou se possui vários endereços web para manter, é mais fácil atualizar os seus próprios dados a cada vez do que informar esses dados a vários provedores e esperar que eles ajustem tudo corretamente. Além do mais, se você controla seu próprio DNS, pode fazer todo tipo de truques.

Nesse artigo, será explicado os diferentes tipos de registros de DNS, o que cada um contém, e iremos mostrar o básico para pôr para funcionar um servidor em uma rede Unix.

Sobre o DNS

Computadores na Internet são identificados primariamente por endereços IP: essas cadeias de quatro números separados por pontos, cada um contido no intervalo 0 a 255, como 209.202.223.102. Você pode digitar esses octetos em seu navegador, mas humanos preferem por nomes as coisas, assim o DNS, que mapeia nomes em números e vice-versa, foi inventado para tornar as coisas fáceis.

No inicio da Internet, ela era pequena o suficiente para que esse mapeamento pudesse ser guardado em um único arquivo. A medida que a rede crescia, isso rapidamente tornou-se inviável, e dessa forma o DNS foi criado. Esse sistema manipula uma grande quantidade de informações de mapeamento que mudam rapidamente pelo espalhamento dessa informação através de vários servidores. Esses servidores são capazes de consultar outros servidores hierarquicamente – pergunto entre si até achar uma resposta – de modo que eles podem rapidamente traduzir endereços da rede sem ter que armazenar todos os endereços em um único lugar.

Estrutura

Dados de nomes de domínios são estruturados hierarquicamente. No nível mais alto estão o chamados nós raiz. Cada domínio da Internet é um membro de um nó raiz. Sob o nó raiz estão os domínio de alto nível: com, edu, org, uk, ru, biz e assim em diante. Os níveis seguintes são os nomes conhecidos como “nomes de domínio” no vocabulário popular: webmonkey.com, navy.mil, assim como os códigos de países, como o co.uk. Tudo que estiver abaixo disso é um sub-domínio ou host. Nomes de sub-domínio podem ser colocados em até 127 camadas, se vocẽ for muito louco.

Terminologia

Para poder entender os registros do DNS, você precisa entender algumas terminologias do DNS.

Um Dado é manipulador e disseminado por servidores de nomes, que fornecem informações sobre os nomes em resposta as consultas de “resolvers”. Um servidor de nome dado tem autoridade em uma região dada, e se lhe for pedida uma informação sobre um nome que não esteja em sua zona, ele tem que obter a informação do servidor de nomes que tem autoridade sobre a zona em questão. O processo pelo qual um “resolver” consulta um servidor de nomes por informações do DNS e recebe uma resposta é chamada “resolução”: o resolver conhece um nome de dompinio e quer achar o endereço IP correspondente. Ou vice versa. Os dados residem primariamente no servidor de nomes, que por motivos de redundância e robustez são copiados para um servidor secundário em intervalos regulares.

Registros do DNS

Hoje em dia, os dados do DNS são representados como registros de DNS em um arquivo de dados, e esses arquivos são manipulados pelo servidor de nomes. Existem vários diferentes tipos de registros de DNS, cada um adequado para um tipo especifico de dado.

Vamos dar um olhada na estrutura do mais importante dos arquivos. Os registros abaixo estão no formato padrão usado pelo BIND, o software mais comum usando nos servidores de nomes. Djbdns, um pacote alternativo, usa uma formato diferente.

Os registros do SOA (Start of Authority) indicam a extensão da zona para a qual o servidor tem autoridade. Eles também possuem informações sobre quão frequentemente eles devem ser checar por informações atualizadas. Um registro de SOA parece com isso:


mydomain.com. IN SOA ns1.mydomain.com. root.mail.mydomain.com. (

2002012901
24h
2h
4w
4d )

A primeira linha indica primeiro a zona, depois o tipo de registro – Internet SOA – em seguida o servidor de nomes primário da zona, e por fim um endereço de contato para a zona. Observe que o endereço de e-mail usa um ponto no lugar da arroba (@), e que todos os nomes de domínio terminam com um ponto. Na próxima linha fica o número serial, que pode ser tão longa quanto for incrementado a cada vez que o registro for atualizado. Se você não atualizar o número serial quando fizer uma alteração no registro, as alterações não irão ser completadas. O número serial usando acima acima consiste do ano, mês, dia e o número de alterações (01) feitas até o momento no dia. Em seguida vem a frequência como que os dados devem ser checados por um servidor secundário, quantas vezes uma tentativa falha de conexão deve ser refeita, quando os dados devem expirar se não forem atualizados, e o tempo de vida padrão dos dados. No registro acima, essas informações são ajustadas para 24 horas, 2 horas, 4 semanas e 4 dias, respectivamente.

Registros de NS (Name Server) fornecem uma lista de servidores de nomes que possuem autoridade na zona:


mydomain.com. IN NS ns1.mydomain.com.

mydomain.com. IN NS ns2.mydomain.com.

Os dados reais, a razão para a qual nós tem servidores de nomes para começar, estão contidos nos registros A (Address). Aqui é onde o mapeamento nome para número é mantido:


mydomain.com. IN A 192.168.40.31

mail.mydomain.com. IN A 192.168.40.32
ns1.mydomain.com. IN A 192.168.40.33
ns2.mydomain.com. IN A 192.168.40.34
cheesebox.mydomain.com. IN A 192.168.148.44
lester.mydomain.com. IN A 192.168.148.45

Os registros CNAME (Canonical name) permitem a criação de apelidos. Uma máquina tem um nome verdadeiro (ou canônico) e um número ilimitado de apelidos:


www.mydomain.com. IN CNAME mydomain.com.

wwww.mydomain.com. IN CNAME mydomain.com.
ww.mydomain.com. IN CNAME mydomain.com.
cb.mydomain.com. IN CNAME cheesebox.mydomain.com.

Observe que, graças aos apelidos acima, se um navegador tentar acessar http://mydomain.com, http://www.mydomain.com, http://ww.mydomain.com, ou http://wwww.mydomain.com, ele irá para o mesmo lugar.

A regra principal do CNAME é usar apenas um nome canônico da máquina, e nunca seus apelidos, em outros registros. Assim, em nossa rede hipotética, “cb.mydomain.com” nunca deve aparecer em um registro A, por que é somente um  apelido para a máquina cujo nome canônico é “cheesebox”.

Ponteiros e Registros MX

Os registros PTR (ponteiros) são o inversos dos registros A: enquanto o último mapeia nomes em endereços, endereços PTR mapeiam endereços em nomes. Os registros PTR nçao são armazenados no banco de dados da zona principal para mydomain.com, mas  em um outro banco de dados que cobre consultas reversas. Existe um domínio especial posto de lado para consultas reversas: in-addr.arpa. Os registros PTR referenciam endereços relacionados a essa zona. Na prática, isso significa que quando criar um registro PTR, o endereço numérico é invertido e seguido por “in-addr.arpa.”. Assim o registro PTR para o endereço IP 192.168.40.32 deve ser referenciado como 32.40.168.192.in-addr.arpa.

Assim, os registros PTR para as máquinas listadas acima devem se parecer com isso:


40.168.192.in-addr.arpa. IN SOA ns1.mydomain.com. root.mail.mydomain.com. (

2002012901 ; last updated January 29th, once
24h
2h
4w
4d )
31 IN PTR mydomain.com.
32 IN PTR mail.mydomain.com.
33 IN PTR ns1.mydomain.com.
34 IN PTR ns2.mydomain.com.
44 IN PTR cheesebox.mydomain.com.
45 IN PTR lester.mydomain.com.

O último tipo de registro de DNS que cobriremos são os registros MX (Maix eXchager). Esses endereços manipulam a troca de e-mails. Cada registro especifica uma máquina que deve manipular o correio de um domínio. Quando múltiplos servidores de correios são listados para um domínio, eles pode receber uma ordem de preferência. Essa ordem toma a forma de um número (entre 0 a 65535, sendo o 0 representando o servidor preferido) que aparece antes do nome do servidor, de forma que se o servidor principal não funcionar, o seguinte será usado.


mydomain.com. IN MX 0 mail.mydomain.com.

mydomain.com. IN MX 50 lester.mydomain.com.

Essa é a essência dos registros DNS. Existem outros tipos de registros para propósitos especializados, mas os que foram apresentados aqui são suficientes para a maioria das necessidades. Existem formas de abreviação e atalhos que podem ser usados para poupar digitação, mas essas formas são menos transparentes a observação que suas formas mais longas.
A listagem inteira dos registros é posta junta em um arquivo de dados, cujo exemplo é mostrado abaixo:


$TTL 24h

;
; zone data file
; comments can appear on any line after a semi-colon
;
mydomain.com. IN SOA ns1.mydomain.com. root.mail.mydomain.com. (
2002012901 ; last updated January 29th, once
24h
2h
4w
4d )
mydomain.com. IN NS ns1.mydomain.com.
mydomain.com. IN NS ns2.mydomain.com.
mydomain.com. IN A 192.168.40.31
mail.mydomain.com. IN A 192.168.40.32
ns1.mydomain.com. IN A 192.168.40.33
ns2.mydomain.com. IN A 192.168.40.34
cheesebox.mydomain.com. IN A 192.168.148.44
lester.mydomain.com. IN A 192.168.148.45
www.mydomain.com. IN CNAME mydomain.com.
wwww.mydomain.com. IN CNAME mydomain.com.
ww.mydomain.com. IN CNAME mydomain.com.
cb.mydomain.com. IN CNAME cheesebox.mydomain.com.
mydomain.com. IN MX 0 mail.mydomain.com.
mydomain.com. IN MX 50 lester.mydomain.com.

Observe a linha $TTL 24h no topo do arquivo. Isso diz que o Tempo de Vida do arquivo é de 24 horas. Essa arquivo é colocado nas máquinas do servidor de nomes.

Configurando um Servidor DNS

O software para servidor de nomes predominante, chamado ‘named’ (“name dee”), é distribuído com o BIND, o Berkeley Internet Name Domain, que também inclui uma biblioteca para resolução de nomes e outras ferramentas. Neste tutorial, falamos principalmente sobre o BIND. Uma alternativa a ele seria o djbdns. Aqui vocẽ encontra um guia de como mudar do BIND para o djbdns.

Presumivelmente você tem, ao menos, um nome de domínio e um endereço IP, e quer que um aponte para o outro. Se não estiver nesse ponto ainda, irá precisar conversar como um provedor para obter um endereço IP, e registrar o nome do domínio.

Em primeiro lugar, veja se já tem o BIND no seu sistema. Ele pode estar lá, por trás das cortinas, sem ser notado. Digite named -v na linha de comando. Se esse comando retornar uma mensagem dizendo a versão do BIND que você está rodando, isso significa que você está com ele instalado em seu sistema, e não precisa instala-lo – apesar do BIND ser um alvo de ataques, e se não tiver a última versão pode estar sujeito a riscos de segurança.
Caso contrário, baixo o código-fonte e descompacte, e instale-o como os comandos ./configure ; make ; make install. Instruções detalhadas sobre como configurar a instalação em seu sistema estão disponíveis no arquivo INSTALL.

Uma vez que tiver instalado o BIND, você deve configura-lo. Não temos espaço aqui para expor todos detalhes da configuração do BIND. Existe toda uma arte de como fazer o ajuste fino de tudo que quiser – existe um livro inteiro sobre esse tópico.

O How-To do DNS irá explicar a você como configurar o arquivo named.conf, que contém as informações de configuração do servidor de nomes. OS arquivos de dados da zona contendo os registros do DNS que vimos anteriormente – tipicamente, um para uso local e outro para uso externo – são colocados em diretório especificado. Depois o seu sistema precisa ser avisado para usar o servidor de nomes que você criou.

Traduzido de