DNS para Leigos

09 outubro, 2009 Sem comentários »

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.

Post a Comment