O que é DNS (Domain Name System)?

Introdução

Você certamente sabe que a internet possui uma infinidade de sites. Para acessá-los, você normalmente digita um endereço no campo correspondente do seu navegador, por exemplo, www.google.com.br, www.infowester.com ou www.ealecrim.net. Mas, você tem ideia de como o computador consegue localizar estes sites, independente de onde estejam hospedados? É neste ponto que "entra em cena" o trabalho de servidores do tipo DNS (Domain Name System). Neste artigo, você saberá o que é isso, entenderá como o DNS funciona e conhecerá conceitos relacionados, como DNSSEC.

Nomes de domínio

Todo site ou serviço na internet precisa de um endereço IP (seja ela IPv4 ou IPv6). Com este recurso, é possível localizar o servidor (ou o conjunto de servidores) que hospeda o site e, assim, acessar as suas páginas. Na ocasião de escrita deste artigo, o IP do InfoWester era 200.234.200.169.

Pois bem. Tente decorar este número. Decorou? Parabéns! Agora, aguarde alguns minutos e tente se lembrar novamente deste endereço IP. Difícil, né? Agora, imagine ter que se lembrar dos IPs de todos os sites que você acessa diariamente, como Facebook, Twitter, e-mail, portais de notícias, etc. Pois é, praticamente impossível e nada prático, não é mesmo?

É basicamente por isso que utilizamos nomes de domínios para acessar os sites da internet. Com isso, o usuário não precisa saber, por exemplo, o endereço IP do InfoWester para acessá-lo, basta saber o seu domínio, no caso, www.infowester.com. Trata-se de um esquema bastante prático, afinal, decorar nomes é muito mais fácil do que guardar sequências numéricas. Além disso, mesmo que você não se lembre de um nome com exatidão, poderá digitá-lo em um mecanismo de busca e este o ajudará a encontrá-lo.

A questão é que, apesar do uso de domínios, os sites ainda precisam dos endereços IP, afinal, os nomes foram criados para facilitar a compreensão humana, não a dos computadores. E cabe ao DNS o trabalho de relacionar um domínio aos IPs.


Servidores de DNS (Domain Name System)

Os serviços de DNS (Domain Name System - Sistema de Nomes de Domínios) da internet são, em poucas palavras, grandes bancos de dados espalhados em servidores localizados em várias partes mundo. Quando você digita um endereço em seu navegador, como www.infowester.com, seu computador solicita aos servidores de DNS de seu provedor de internet (ou outros que você tenha especificado) que encontre o endereço IP associado ao referido domínio. Caso estes servidores não tenham esta informação, eles se comunicam com outros que possam ter.

Ajuda neste trabalho o fato de os domínios serem organizados hierarquicamente. Primeiramente temos o servidor raiz (root server), que pode ser entendido como o principal serviço de DNS e é representado por um ponto no final do endereço, como mostra o seguinte exemplo:

www.infowester.com.

Repare que se você digitar o endereço exatamente como está acima - com ponto no final - em seu navegador, o programa encontrará o site normalmente. No entanto, não é necessário incluir este ponto, já que os servidores envolvidos já sabem de sua existência.

A internet conta (pelo menos até a data de publicação deste texto) com treze servidores raiz, sendo que dez se localizam nos Estados Unidos, dois na Europa (Estocolmo e Amsterdam) e um na Ásia (Tóquio). Quando uma falha, os demais conseguem manter o funcionamento da rede sem maiores complicações.

A hierarquia é seguida com domínios que conhecemos bastante, como .com, .net, .org, .info, .edu, .br, .me e várias outros. Estas são chamadas de gTLDs (Generic Top Level Domains - algo como Domínios Genéricos de Primeiro Nível).

Há também terminações orientadas a países, chamadas de ccTLDs (Country Code Top Level Domains - algo como Código de País para Domínios de Primeiro Nível). Por exemplo: .br para o Brasil, .ar para a Argentina, .fr para a França e assim por diante. Há combinações também, como .com.br e .blog.br.

Depois, aparecem os nomes que empresas e pessoas podem registrar com estes domínios, como a palavra infowester em infowester.com ou google em google.com.br.

Exemplo de hierarquia de DNS

Com a hierarquia, descobrir qual IP e, consequentemente, qual servidor está associado a um domínio - processo chamado de resolução de nome - fica mais fácil, já que este modo de funcionamento permite um esquema de trabalho distribuído, onde cada nível da hierarquia conta com serviços específicos de DNS.

Para entender melhor, veja este exemplo: suponha que você queira visitar o site www.infowester.com.br. Para isso, o serviço de DNS do seu provedor (ou outro que você especificar) tentará descobrir se sabe como localizar o referido site. Caso negativo, primeiramente consultará o servidor raiz. Este, por sua vez, indicará o servidor de DNS da terminação .br, que continuará o processo até chegar ao servidor que responde pelo domínio infowester.com.br, que finalmente informará o IP associado, ou seja, em qual servidor está o site em questão.

Os servidores de DNS que respondem por determinados domínios são chamados de autoritativos. Já os serviços responsáveis por receber consultas de DNS de máquinas clientes e tentar obter respostas com servidores externos são chamado de recursivos.

Perceba, na ilustração, o esquema de distribuição: servidores de DNS apontam para o outro, até que o destino seja encontrado. No caso do servidor raiz, este possui meramente uma relação dos serviços de DNS responsáveis pelos domínios gTLD e ccTLD, sendo que estes se encarregam de dar sequência ao procedimento.

Os domínios gTLD e ccTLD são administrados por entidades diferentes, que respondem também por seus servidores de DNS. Por exemplo: a terminação .br é controlada pela Registro.br.


Cache de DNS

Suponha que você tenha visitado um site que nunca tenha sido resolvido pelo serviço de DNS de seu provedor, de forma que este tenha que consultar outros servidores de DNS (por meio do já mencionado esquema de pesquisa hierárquica). Para evitar que essa pesquisa tenha que ser feita novamente quando outro usuário do provedor tentar acessar o mesmo site, o serviço de DNS pode guardar a informação da primeira consulta por algum tempo. Assim, em outra solicitação igual, o servidor já saberá qual o IP associado ao site em questão. Este procedimento é conhecido como cache de DNS.

No início, o cache de DNS somente guardava dados de consultas positivas, isto é, de quando um site é encontrado. No entanto, os serviços de DNS também passaram a guardar resultados negativos, de sites não existentes ou não localizados, como quando digitamos um endereço errado, por exemplo.

As informações do cache são armazenadas por um determinado período de tempo por meio de um parâmetro conhecido como TTL (Time to Live). Este é utilizado para evitar que as informações gravadas se tornem desatualizadas. O período de tempo do TTL varia conforme as configurações determinadas para o servidor.

Graças a isso, o trabalho dos serviços de DNS dos servidores raiz e dos demais subsequentes é minimizado.


DNSSEC

Neste ponto, você já sabe que os servidores de DNS têm papel importantíssimo na internet. O problema é que o DNS também pode ser "vítima" de ações maliciosas.

Imagine, por exemplo, que um indivíduo com grande conhecimento no assunto elaborou um esquema para conseguir capturar solicitações de resolução de nomes de clientes de um determinado provedor. Ao ter sucesso com isso, ele pode tentar direcionar um endereço falso no lugar de um site que um usuário queira visitar. Perceba o risco: se o usuário não perceber que foi direcionado para uma página falsa, poderá fornecer dados sigilosos, como número de cartão de crédito.

Para evitar problemas como estes é que foi criado o DNSSEC (DNS Security Extensions), que consiste em uma especificação que adiciona recursos de segurança ao DNS.

O DNSSEC considera, essencialmente, os aspectos de autenticidade e integridade dos procedimentos envolvendo DNS. Mas, ao contrário do que algumas pessoas pensam inicialmente, não pode prover proteção contra invasões ou ataques DoS, por exemplo, embora possa ajudar, de certa forma.

Basicamente, o DNSSEC utiliza um esquema que envolve chaves públicas e privadas, que é explicado neste artigo sobre assinaturas e certificados digitais. Com isso, é possível ter certeza de que os servidores corretos estão respondendo às pesquisas de DNS.

A implementação do DNSSEC deve ser feita pelas entidades responsáveis pela administração dos domínios, motivo pelo qual este recurso ainda não é utilizado de maneira plena. Felizmente, em relação ao Brasil, o país foi um dos primeiros  a lidar com isso ao implementar o DNS em endereços .br, sendo que, na época da publicação deste texto, esta proteção era obrigatória nos domínios .jus.br e .b.br (terminação destinada a bancos).

Para saber mais sobre DNSSEC em domínios brasileiros, visite a página registro.br/suporte/tutoriais/dnssec.html.


Serviços gratuitos de DNS: OpenDNS e Google Public DNS

Quando você contrata um serviço de acesso à internet, por padrão, passa a utilizar os servidores de DNS da prestadora. O problema é que, muitas vezes, estes servidores podem não funcionar a contento: a conexão é estabelecida, mas o navegador não consegue encontrar nenhuma página; o acesso a sites pode estar lento porque os serviços de DNS demoram para responder; enfim.

Uma solução para problemas como estes consiste em adotar serviços de DNS alternativos e especializados, que são otimizados para oferecer o melhor desempenho possível e são menos suscetíveis a falhas. Os mais conhecidos são o OpenDNS e, mais recentemente, o Google Public DNS. Ambos os serviços são gratuitos e, quase sempre, funcionam de maneira bastante satisfatória.

OpenDNS

Usufruir do OpenDNS é muito fácil: basta utilizar os dois IPs do serviço. São eles:

  • Primário: 208.67.222.222
  • Secundário: 208.67.220.220

O serviço secundário é uma réplica do primário; se este não puder ser acessado por algum motivo, o segundo é a alternativa imediata.

Estes endereços podem ser configurados em seu próprio computador ou em equipamentos de rede, como roteadores Wi-Fi. Se você utiliza Windows 7, por exemplo, pode fazer a configuração da seguinte forma:

Vá em Iniciar / Painel de Controle / Redes e Internet / Central de Rede e Compartilhamento / Alterar as configurações do adaptador. Agora, você deve clicar com o botão direito do mouse no ícone que representa a sua conexão e escolher Propriedades. Em seguida, na aba Rede, selecione a opção Protocolo TCP/IP Versão 4 (TCP/IPv4) e clique em Propriedades. Ative a opção Usar os seguintes endereços de servidor DNS. No campo Servidor DNS preferencial, informe o endereço primário do DNS. No campo logo abaixo, insira o endereço secundário.

Configurando o DNS no Windows 7

Obviamente, este tipo de configuração pode ser feito também em Mac OS X, Linux e outros sistemas operacionais, bastando procurar orientações sobre como fazê-lo em manuais ou arquivos de ajuda. O mesmo vale para muitos equipamentos de rede.

Perceba que o OpenDNS não exige cadastro, mas é possível fazê-lo no site do serviço para poder usufruir de outros recursos, como bloqueio de domínios e estatísticas de acesso, por exemplo

.

Google Public DNS

O Google Public DNS é outro serviço do tipo que se destaca. Apesar de não oferecer tantos recursos quanto o OpenDNS, é fortemente focado em segurança e performance, além, é claro, de ser de responsabilidade de uma das maiores empresas de internet do mundo. Os seus endereços têm uma grande vantagem: podem ser decorados mais facilmente. Confira:

  • Primário: 8.8.8.8
  • Secundário: 8.8.4.4

O Google Public DNS também tem endereços em IPv6:

  • Primário: 2001:4860:4860::8888
  • Secundário: 2001:4860:4860::8844

Registro de domínios

Se você quer ter um site próprio, do tipo meunome.com.br ou meunome.net, precisa registrar o domínio. Se este tiver que terminar com .br, o procedimento pode ser feito no site Registro.br. Para domínios internacionais (.com, .net, .org, entre outros) há várias empresas que oferecem este serviço, sendo a GoDaddy a mais conhecida.

O primeiro passo consiste em verificar se o domínio que você deseja está disponível, isto é, se já não foi registrado por outra pessoa ou por uma empresa. Todos os serviços de registro fornecem um campo onde é possível fazer esta verificação.

Se o domínio estiver livre (ninguém o está utilizando), você pode fazer um cadastro no serviço e pagar uma taxa, que varia conforme a empresa e o tipo de domínio. No entanto, vale frisar que o registro somente vale para a terminação escolhida. Se você registrar um domínio nomequalquer.com, por exemplo, precisará realizar outro registro para nomequalquer.net.

O registro vale por pelo menos 365 dias, podendo ser registrado também por dois ou mais anos. Caso você queira continuar utilizando-o, deve renová-lo antes da expiração, do contrário, correrá o risco de perdê-lo. Geralmente a empresa de registro emite um aviso por e-mail para alertar da necessidade de renovação, bastando pagar uma nova taxa para que este processo seja efetivado.

Acontece que simplesmente registrar um domínio não é suficiente para colocar o seu site no ar. É preciso também escolher uma empresa para hospedá-lo. Há várias companhias que prestam este tipo de serviço, com os mais variados preços. Você pode pesquisar por "hospedagem de sites" no Google para tentar encontrar o melhor serviço para você.

Quando você tiver escolhido um serviço de hospedagem, deverá associar a sua conta ao domínio registrado. É fácil fazer isso: o serviço de hospedagem irá fornecer pelo menos dois endereços de DNS (name servers) que você deve informar no painel oferecido pela empresa onde você fez o registro do domínio. Estes endereços geralmente tem o seguinte formato:

  • ns1.empresadehospedagem.com.br
  • ns2.empresadehospedagem.com.br
  • ns3.empresadehospedagem.com.br

Perceba que, ao realizar este procedimento, a entidade responsável por gerenciar o seu domínio saberá informar quais serviços de DNS respondem pelo servidor que hospeda o seu site, fazendo com que este consiga ser encontrado.


Tipos de registros de DNS

Quando você registra um domínio e contrata um serviço de hospedagem, este pode oferecer subdomínios baseados em seu endereço para que você possa acessar serviços de e-mail, servidor de FTP, entre outros, por exemplo: ftp.seusite.com.br ou mail.seusite.com.br. Além disso, você também pode querer um subdomínio para determinados fins, como criar um blog dentro do seu site: blog.seusite.com.br.

Isso é possível graças a alguns registros (parâmetros) de DNS, que devem ser inseridos em arquivos específicos de configuração do servidor. No entanto, no caso de serviços de hospedagem, muitas vezes é possível alterar tais parâmetros por meio de um painel de controle ou de uma página específica para isso.

Eis os registros mais comuns:

Registros A: basicamente, associam um ou mais endereços IP a um ou mais domínios. Pode-se utilizar AAAA para endereços IPv6;

Registros CNAME (Canonical Name): servem para criar redirecionamentos para domínios ou subdomínios. É este parâmetro que dever ser utilizado, por exemplo, para criar um endereço do tipo blog.seusite.com.br;

Registros MX (Mail Exchanger): são os parâmetros que devem ser configurados para contas de e-mail no domínio (@seusite.com.br);

Registros NS (Name Server): indicam quais servidores atuam como serviço de DNS do site. São os endereços mencionados no tópico sobre registros de domínios;

Registros PTR (Pointer): informam quais domínios estão associados a determinados IPs, quase se fosse o reverso dos registros A;

Registros SRV (abreviação de Service): indicam a localização de determinados serviços dentro do domínio;

Registros SOA (Start of Authority): indicam o início de uma zona, isto é, de um conjunto de registros localizado dentro de um espaço de nomes de DNS. Cada zona deve ter um registro SOA;

Registros TXT (abreviação de Text): servem para a inserção de comentários ou orientações.

Eis alguns exemplos:

Entrada
Tipo
Conteúdo
ftp
CNAME
infowester.com
calendar
A
187.189.0.42
-
NS
ns1.infowester.com
-
MX
server1.mail.infowester.com

Estes registros de DNS devem ser editados, por exemplo, para quem cria contas no Google Apps. Por meio deste serviço, o usuário pode utilizar ferramentas do Google - como o Gmail - de maneira atrelada ao seu domínio. Assim, é possível, por exemplo, ter o site seusite.com.br hospedado em um servidor qualquer, mas possuir contas de e-mail @seusite.com.br gerenciadas pelo Google Apps, mesmo com este não hospedando o site.

Perceba que qualquer mudança nos registros de DNS deve ser feita com bastante cautela - um erro pode simplesmente impedir a localização do site.


Finalizando

A utilização do DNS não se limita à internet. Este recurso pode (e é) utilizado em redes locais ou extranets, por exemplo. Sua implementação pode ser feita em praticamente qualquer sistema operacional, sendo muito usual nas plataformas baseadas em Unix e no Windows. A ferramenta mais conhecida para DNS é o BIND, que é mantido pela Internet Systems Consortium.

Isso deixa claro que o assunto é mais complexo, por isso, você pode consultar os seguintes links, caso queira saber mais sobre DNS (links em inglês):

Escrito por - Publicado em 06_09_2011 - Atualizado em 06_09_2011