você está aqui: Home  → Arquivo de Mensagens

Introdução ao DNS - Domain Name Service

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 19 de outubro de 2018

Você já parou para pensar como o seu computador é bem relacionado? No seu browser Web, basta digitar o nome de qualquer computador existente na Internet, que instantaneamente a conexão é efetuada. Seu computador conhece todos eles.

Mas como isto é possível? A Internet já possui milhões de computadores conectados. Como pode ele conhecer e conversar com todos eles?

Lembrar-se de um endereço como www.acme.com.br é bem mais fácil do que lembrar-se dos números 192.168.10.30, que são o endereço da máquina. Se olharmos, entretanto, do ponto de vista das máquinas envolvidas, notaremos que em toda a comunicação entre seu navegador e um site, as máquinas comunicam-se usando endereços numéricos. Para facilitar e agilizar a comunicação para ambos - seres humanos e máquinas - temos o DNS, que vem do inglês Domain Name Service ou, em português, serviço de nome de domínio.

O DNS é um protocolo e um conjunto de servidores distribuídos que realizam esta cômoda conversão. Entender seu funcionamento é algo essencial para a boa administração de uma rede de computadores. Este é o protocolo que torna possível que um computador encontre qualquer outro dentro da Internet em questão de segundos (ou muito menos que isto). O seu computador pessoal faz uma pergunta a um outro computador que por sua vez encarrega-se de encontrar a informação que você precisa, também fazendo perguntas a outros computadores ou informando ao seu computador para quem ele deve perguntar.

Vamos voltar um pouco mais no tempo, aos primórdios da Internet. Naquele tempo, existiam poucos computadores na Internet (que nem se chamava Internet ainda). Além de existirem poucos computadores, as pessoas que cuidavam destes computadores também se conheciam. E existia uma lista, chamada hosts.txt, que continha os nomes de todos os computadores existentes. Esta lista, na verdade, não continha apenas nomes. Ela continha linhas relacionando nomes com números. Isto porque os computadores não se comunicam através dos nomes que possuem e sim por meio de números que lhes são atribuídos, seus endereços IP (de Internet Protocol).

Mas é muito difícil memorizar números. Nós seres humanos nos lembramos muito mais facilmente de nomes. Como os computadores só se conhecem pelo número, criou-se um mecanismo que permitiu a tradução do nome, usado pelos seres humanos que operam os computadores, para o número, que os computadores usam em sua comunicação. E começamos com a lista.

A lista era mantida por uma entidade central, que cuidava da distribuição de números aos computadores que se ligavam à Internet. Sempre que um novo computador aparecia, a nova lista atualizada era distribuída a todos os administradores dos computadores ligados à Internet. Desta forma, cada computador conseguia se comunicar com todos os demais. Bastava olhar em sua lista. A Internet era então uma típica cidade do interior, todos se conheciam diretamente e os novatos eram apresentados a todos que já faziam parte da comunidade.

É claro que nem tudo dura para sempre. A Internet foi invadida por todos os tipos de pessoas e se tornou uma comunidade virtual, um espelho do mundo real. E o velho esquema de manter a listinha, contendo os nomes de todos os computadores passou a não ser mais viável. Afinal de contas, qual computador tem o poder de consultar uma listinha de alguns milhões de linhas sempre que precisasse enviar alguma coisa para outro computador na Internet? E como faríamos para distribuir esta lista para todos os computadores conectados em rede, a cada nova alteração? Precisou-se inventar uma outra maneira de fazer com que os computadores se encontrassem, mesmo sem possuir a tal listinha (que já nem era mais listinha).

Foi então que inventaram o DNS. Com o DNS, abolia-se a centralização da informação. Não existe mais um computador na Internet que conheça todos os demais. O que aconteceu foi que a autoridade sobre a informação foi diluída. Desta forma, não existe mais um dono da verdade, a informação está distribuída por milhares de computadores, que conhecem muito bem apenas alguns computadores. Tomemos o exemplo da uma universidade. Dentro dela haverá um computador com uma lista de todos os computadores conectados à Internet dentro da Universidade. Qualquer computador na Internet que queira achar algum computador dentro desta universidade tem que perguntar a este computador. Desde que o computador procurado exista, ele fornece a informação solicitada.

Mas e como chegar até este computador? Novamente não é difícil descobrir. Os projetistas do DNS na verdade nada mais fizeram do que imitar a vida real. Imagine que você esteja em uma cidade grande e deseja chegar até um determinado bairro. Você para alguém na rua e pergunta: "Como faço para chegar até o bairro X"? O seu interlocutor pode não saber, mas dirá para ir até determinado lugar e perguntar novamente. E lá vai você perguntando, até que encontra alguém que sabe lhe dizer onde se encontra o local que está procurando.

A tradução de nomes em números na Internet funciona exatamente da mesma forma. Você configura o seu computador com o nome do servidor de nomes local. É ele quem vai fazendo as perguntas para você, até obter uma resposta. A resposta pode ser o número IP do computador com o qual você quer se comunicar ou uma negativa, dizendo que o computador procurado não existe (na verdade, há mais opções, mas estas possibilidades podem, grosseiramente, resumir-se nas apresentadas sem nenhum prejuízo para a compreensão).

Agora, quando é usado o DNS? Sempre que você usar um programa que usa o nome de um computador o DNS entra em ação. Você está mandando uma mensagem eletrônica para jose@acme.com.br. O DNS tem que descobrir para você qual o número IP do computador que recebe mensagens destinadas ao domínio acme.com.br. Você está acessando o servidor Web da Disney? Lá vai o DNS novamente buscar a tradução do nome www.disney.com para um número IP. Chat, FTP, e mil outras coisas que você se habituou a usar na Internet, todas fazem uso do DNS. Até mesmo para encontrar o servidor de arquivos na sua rede do trabalho há uma grande chance de se usar o DNS, ao invés de métodos menos robustos. Na prática, toda comunicação entre dois computadores de uma rede faz uso do DNS para aumentar a eficiência desta comunicação e o armazenamento de informações (como logs de acesso) sobre a comunicação. E, estes servidores também podem fazer uso do DNS para saber qual é o nome da sua máquina no instante de armazenar os registros de acesso. O DNS funciona nos dois sentidos.

Por agora você já deve ter visto a importância do DNS no uso dos recursos da Internet. Por isto mesmo não se esqueça que a sua configuração correta é muito importante. A não ser que você - e todos os usuários do seu computador ou rede - saibam de cor o número IP de todos os computadores da Internet, o que é pouco provável. Afinal de contas nem o seu computador consegue fazer isto e ele é muito melhor do que você para memorizar coisas. Devemos deixar o computador fazer o trabalho de um computator, não concorda?

E, mesmo que você não esteja trabalhando diretamente com a Internet, é interessante possuir um servidor interno que atenda as necessidades de sua intranet.

Mas, agora que sou o responsável pelo DNS onde trabalho, como faço para colocá-lo para funcionar? Como faço para ter certeza de que suas configurações estão seguras? Como faço para saber se tudo está funcionando?

Continue lendo...

1. Registro de Domínios

Todo computador ligado à Internet possui um nome e um sobrenome. O nome geralmente é escolhido pela pessoa que usa o computador ou pelo administrador da rede. Em muitos locais escolhe-se um tema preferido e os computadores são batizados segundo este tema. Por exemplo, os fãs das aventuras do Asterix, podem resolver escolher os nomes dos personagens das histórias em quadrinhos para seus computadores. Temos o obelix, o próprio asterix, abracurcix, ideiafix, chatotorix e mais alguns.

Agora fica a questão do sobrenome. No nome obelix.acme.com.br, o nome do computador é obelix e o sobrenome é acme.com.br. O sobrenome já é um pouco mais complicado de definir e envolve o contato com algumas entidades que regulamentam e controlam a concessão de domínios. Em termos da Internet global, o sobrenome precisa ser registrado. Para que o registro seja concedido não pode haver outra empresa ou pessoa que o tenha registrado anteriormente. O sobrenome, no jargão da Internet, é o que chamamos de domínio. No Brasil, o órgão responsável pelo registro de domínios é a Registro.br. O Registro.br é um serviço de caráter público, executado por delegação de competência do Comitê Gestor da Internet brasileira. Todo o processo, da consulta ao registro do domínio pode ser feito diretamente através do endereço http:registro.br. Neste mesmo endereço estão disponíveis diversas informações importantes sobre o procedimento para registro de domínios no Brasil.

O DNS possui estrutura semelhante a uma árvore de diretórios, tal como a que é encontrada em sistemas Unix ou MS-DOS ou nas pastas do Windows. O diretório de mais alto nível, ou diretório raíz, possui apontadores para os demais diretórios do segundo nível, os diretórios do segundo nível possuem apontadores para os diretórios do terceiro nível e assim sucessivamente.

Mas para entender melhor tudo o que foi dito, vamos analisar o nome de um computador. Vejamos o nome obelix.acme.com.br. Dá para ver que o nome é composto de cinco componentes:

  obelix + acme + com + br + "."

Isto mesmo, cinco componentes. Embora não pareça, o ".", que a maioria de nós nem se lembra de digitar quando escreve o nome de um computador (e muitos de nós nem mesmo sabemos que este ponto existe) representa o domínio de mais alto nível na hierarquia de nomes de computadores. No nome de computadores, a hierarquia (ou domínio) de mais alto nível fica à direita, ao passo que a mais baixa fica à esquerda.

Isto é fácil de se visualizar. O "." contém os servidores de nomes de mais alto nível, que possuem apontadores para os computadores de nível imediatamente inferior, os domínios geográficos, aos quais pertencem o Brasil (br), Japão (jp), Canadá (ca), Portugal (pt) e todos os demais países. Neste mesmo nível situam-se os domínios com (entidades comerciais), net (comunicações), org (organizações sem fins lucrativos), edu (educação), gov (governo) e mil (militares). Os domínios de segundo nível apontam para os domínios de terceiro nível. A empresa fictícia Acme, por exemplo, está dentro do Brasil. Dentro do servidor de nomes do domínio br, mantidos pelo Registro.BR, existe uma referência ao servidor de nomes da empresa Acme, que conhece todos os computadores do domínio acme.com.br.

Agora vamos ver a situação em que alguém deseja encontrar o computador acme.com.br. Ele primeiro faz a pergunta ao seu servidor de nomes local. Este servidor de nomes não conhece o computador acme.com.br. O que faz então? Pergunta a outro, neste caso, aos servidores do domínio ".". Estes servidores de nomes também não conhecem o computador acme.com.br, mas analisando o nome descobrem que este computador está dentro do Brasil (br) e instruem o servidor de nomes local a perguntar aos servidores do domínio br. E lá vai o nosso servidor de nomes perguntar aos servidores do domínio br onde está acme.com.br. Eles (servidores do domínio br) também não sabem, mas sabem que tal computador, se existir, está dentro da empresa chamada Acme. E novamente instruem o servidor de nomes local a perguntar aos servidores de nomes da Acme. Desta vez a resposta é definitiva. O computador acme.com.br existe e o número IP correspondente é 200.200.20.1. Acabou a busca. Não foi tão difícil assim. Para localizar o computador acme.com.br, dentre os milhões existentes na Internet, foram necessárias apenas quatro perguntas. Antes que vocês saiam procurando o computador acme.com.br, ele não existe (ainda). Utilizamos este nome aqui apenas para ilustrar o conceito.

O processo pode ser visto na figura abaixo:

2. Por quê ter um servidor DNS em uma intranet?

Em uma intranet podemos imaginar que não há a necessidade de usarmos um servidor DNS, basta voltamos um pouco no tempo e mantermos uma listinha de nomes e endereços de máquinas.

Isso pode até ser verdade para redes mais simples, mas traz-nos outros problemas. Como garantir que todas as máquinas estejam presentes na listinha, que todas estejam com a mesma "versão" da listinha, que a cada nova máquina instalada a listinha seja atualizada, etc?

Com o uso de um servidor DNS podemos simplificar bastante este problema e podemos fazer um melhor planejamento da rede. Um servidor DNS interno pode ser, também, extremamente útil na documentação de redes segmentadas - imagine o tamanho das redes internas de universidades e grandes empresas... agora imagine que todas as máquinas precisam ser identificadas e que alguns departamentos têm autonomia para adicionar novas máquinas na intranet, usando um conjunto de endereços IP que lhes foi fornecido e, para piorar um pouco, imagine que eles podem nomear as máquinas de acordo com convenções internas, mas devem respeitar as políticas locais e especificar o nome do departamento ou setor, além do nome da empresa, em cada um dos nomes. Parece algo difícil e complexo, não?

Com o uso de servidores DNS distribuídos, essa tarefa torna-se extremamente mais fácil, e garante que todas as máquinas saberão quem são as outras, a cada instante.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida