• RSS
  • Facebook
  • Twitter
  • Linkedin

DNS para Leigos

nerd_cavernaUm dos meus serviços do dia a dia, é cuidar de um servidor DNS. Mas quando eu falo de DNS nem todas as pessoas entendem do que eu estou falando.
Hoje em dia a maioria da população conhece o básico da internet, que são as páginas, e-mails e claro os programas de bate-papo (MSN e afins), mas quando se fala de outras particularidades de uma rede de computadores, como FTP e DNS ou ir a fundo em E-mail com SMTP, POP e IMAP, parece que você está xingando alguém.
Sei que a maioria dos leitores aqui do meu humilde blog entendem estas siglas, mas a intenção desse post (espero que uma série de outros posts) é ir a fundo em um particular protocolo de rede tão importante no nosso dia a dia onde nem todos sabem o que é e como funciona.

O básico de entendimento de DNS que a maioria das pessoas tem, e que o DNS a tradução de um endereço IP para um nome. Por exemplo a página www.registro.br, onde se registra domínios, está no servidor com o endereço IP 200.160.2.3. Imagine como seria para decorar os endereços IP de cada computador na internet para poder acessar seu conteúdo. Eu já sou terrível para decorar números telefônicos, se não existisse o DNS acho que a internet não iria dar muito certo.
DNS é a sigla adotada para Domain Name System, que trata-se de um sistema hierárquico para resolução de nomes para computadores. No inicio da era da ArpaNET ainda, com o crescimento do numero de computadores na rede se viu a necessidade de criar um sistema que funcionasse como uma agenda telefônica para os computadores onde se associava um nome para cada endereço IP dos dispositivos e computadores na rede. A idéia principal foi criar um arquivo HOSTS.TXT com os dados dos nomes e endereços IP e colocar em um computador central (SRI) onde toda vez que um computador fosse ligado, ele buscava este arquivo HOSTS.TXT no servidor central e o usava como referencia.

De inicio este sistema era funcional, porém existia o problema do crescimento da rede, e também a era da internet estava batendo a porta. Com isso mostrou a necessidade de se criar um sistema melhor, que fosse distribuído e independente de apenas um banco de dados central. Então em 1983 (ano que nasci lol) foi criada a primeira implementação do DNS, um sistema hierárquico em forma de arvore, onde está arvore é divida em zonas. Tendo no topo a root zone, e distribuindo o resto das zonas por outros servidores DNS.

Um domínio possui uma divisão por pontos, onde cada parte possui um servidor autoritário (que responde por esta parte), vejamos por exemplo www.google.com.br. A parte principal deste domínio é o .br. Quando um computador client vai consultar este domínio na internet, ele primeiro consulta um dos servidores da root zone, nesta zona, temos informações básicas sobre a primeira parte do domínio, no caso a resposta que teremos para .br será de que o servidor autoritário de .br fica no Brasil. Nossa consulta então vai até o servidor no Brasil procurar então por .com.br e assim por diante até chegar em www.google.com.br.

O exemplo acima não é 100% certo, é apenas para demonstrar como funciona a busca por um nome através do sistema de nomes. Até porque o .br e o .com.br ficam no mesmo servidor e o google.com.br e o www.google.com.br também, e nem sempre as buscas são feitas diretamente para um servidor na root zone. Abaixo eu fiz um desenho bem tosco para demonstrar como funciona a hierarquia mais ou menos do sistema de nomes.
dns

A imagem acima mostra uma root zone composta por diversos servidores DNS, uns ficam na Nasa outros no exercito americano, e outras empresas nos Estados Unidos. Apesar da empresas serem americanas alguns servidores da root zone utilizam um serviço chamado AnyCast para distribuir seu acesso ao redor do mundo, assim não centralizando a “Internet” apenas nos EUA.

O DNS funciona de duas formas, o DNS Server e o DNS Resolver. O DNS Server é um sistema de banco de dados distribuidor, que trabalha no modelo cliente-servidor. O DNS Server responde se ele é quem armazena informações sobre os domínios, é conhecido também como o servidor autoritário de um domínio. Exemplo o Google possui uma rede de vários servidores de DNS, onde ficam armazenadas informações sobre seus domínios como Google.com, google.com.br, orkut.com, gmail.com e etc. Já o DNS Resolver trabalha de forma diferente, neste caso o DNS vai buscar a informações sobre um domínio na rede de forma recursiva ou não recursiva.

Vou fazer uma analogia simples de como o DNS funciona nas duas formas
Eu tenho um DNS Server do Google onde armazena informações sobre os serviços do Google. Então em um dia qualquer aí alguém tenta acessar o site do Gmail, e sua busca por www.gmail.com sai pela internet em busca do endereço IP deste nome, em certo momento a busca chega até o servidor do Google, e então serão feitas as perguntas a este servidor:
[DNS Cliente] – Você é o dono do dominio gmail.com?
[DNS Server] – Sim sou o dono deste domínio.
[DNS Cliente] – Então qual é o endereço IP de www.gmail.com?
[DNS Server] – www.gmail.com responde para 200.0.0.1
Fim da conversa.

Agora imagine se você quer acessar thiago.blogspot.google.com.br (esse domínio não existe , eu acho :P).
[DNS Cliente] – Você é o dono do dominio google.com.br?
[DNS Server] – Sim sou o dono deste domínio.
[DNS Cliente] – Você é o dono do dominio blogspot.google.com.br?
[DNS Server] – Sim sou o dono deste domínio, porém quem responde pelo subdominio blogspot.google.com.br e meu servidor filho de IP 200.1.1.1.

Agora a conversa foi diferente pois o google não me deu o IP, e sim me mandou para um outro servidor que possui os dados de blogspot.google.com.br, então o cliente vai nesse servidor e busca então pelo IP de thiago.blogspot.google.com.br com a mesma conversa.
Acho que da para entender como funciona um DNS Server usando essa ideia de pergutna, pois é praticamente isso, o servidor fica lá esperando alguem perguntar se ele é ou não o responsável pelo dominio e qual o IP pertece o dominio.

O DNS Resolver como foi dito trabalha de uma forma diferente, imagine o servidor de DNS do seu computador, vamos supor que você e um dos infelizes clientes da Telemar que possuem um Velox em casa. Então a Telemar tem um servidor de DNS que é usado por seus clientes para resolver o nome localmente para que eles possam acessar sua internet, conversar com amigos, e etc.
Então você liga o PC conecta na internet e quer acessar o seu Gmail. Você abre o Firefox (o melhor :D) e digita nele www.gmail.com. Seu navegador então vai usar o DNS configurado no seu Velox para obter o IP do servidor do site do Gmail.com. Como ele não sabe onde fica os servidores do google ele vai fazer fazer a busca na internet agindo como um DNS Client perguntando os DNS Servers quem é o IP daquele domínio.

– Primeiro ele vai na root zone para saber quem é o .com
– .com pertence a VeriSign, então ele pergunta para a VeriSign quem é gmail.com.
– O servidor da VeriSign fala para ele o IP de um dos servidores DNS do google que é o dono de gmail.com
– O google fala qual é o IP de gmail.com e o seu Firefox abre então o site do gmail.com

Todo esse procedimento é claro é bem rapido, e para ficar mais rápido os DNS Resolver tambem trabalham com um sistema de cache, pois tambem são chamados de DNS Cache. O Cache é usado para diminuir o tráfego, imagine quantos usuários de velox estão perguntando para o servidor da Telemar onde está gmail.com? Se ele tiver um cache desta informação o serviço se torna bem mais rápido.

Wall of Text Crits 204934 damage. You Dies!
O texto está ficando gigante e eu ainda não entrei em detalhes das Zonas, e os tipos de DNS (host, alias, cname, mx e etc) que existem, com isso vou deixar para uma segunda parte, onde vou entrar em um texto mais técnico com menos analogias. Bom espero que esse meu pensamento alto que postei hoje sirva para ensinar algo para alguém.
Na parte dois vou abordar
– Tipos de dns.
– Programas usados para servidores de dns.
– O que eu uso e meus scripts (são lindos <3 bash).

Até a próxima.

7 Responses so far.

  1. Mírian Profeta says:

    Firefox 3.0.1.NETCLR3.5.30729 Windows XP

    Foi muito bom vc ter gasto tempo para explicar esse assunto. Estou estudando pra concurso e estava muito difícil entender todas essas siglas, principalmente porque não sou do ramo.

    Valeu! Obrigada.

  2. Thiago Melo says:

    Firefox 3.6.3 Windows 7

    Que bom que meu posto te ajudou Mírian, obrigado pela visita e volte sempre.

  3. Luís says:

    Chrome 15.0.874.121 Windows 7

    Parabéns pelo post véio!

  4. Lorena says:

    Chrome 38.0.2125.111 Windows 7

    Nossa, muito útil! Gostei das analogias, ficou bem mais fácil de entender. Acho que foi o melhor lugar que encontrei explicando 😛

  5. Lucas says:

    Chrome 38.0.2125.111 Windows 7

    Cara, queria saber se essa parada de DNS Server e Resolver ta certa. Não to achando em lugar nenhum.
    À propósito, ótimo blog.

    • Thiago Melo says:

      Chromium 38.0.2125.104 Linux

      Você pode procurar por D. J. Bernstein, no site dele cr.yp.to ele que fala mais sobre os dois tipos de DNS, hoje em dia servidores DNS mais usados tipo BIND ou do Windows trabalham como se fossem um só, foi por isso que o D. J. Bernstein criou o djbdns de forma separar os serviços.


pfSense 2.0 e...

Ano passado eu tentei me aventurar a configurar um servidor ...

GVT TV ...

A GVT está lançando seu novo produto, Televisão por Assinatura ...

Novo Blog, quem...

Hoje resolvi voltar a postar no blog, aproveitei para trocar ...

FlashPlayer no Snep,...

Esses dias pediram para eu ouvir umas ligações, e era ...

VMware vCenter Converter...

Esses dias chegou um servidor novo aqui na empresa, um ...

Ultimo post de...

Bom esta semana final de 2010 eu estava aqui de ...

Migração do Voip...

Bom quando terminou a migração eu fiquei direto na empresa ...

Asterisk com Snep...

A tempos venho comentando sobre Asterisk e Snep aqui no ...

Implementações na Radiologia

Estou fazendo implementações de novos sistemas na Radiologia, o primeiro ...

FISL 11 –...

Opa dia 2 do FISL foi ontem lol. Mas não ...