Você sabe o que é, e como funciona, um sistema de nome de domínios (Domain Name System – DNS)? DNS é uma forma amigável para o usuário navegar numa rede de computadores como a internet, os computadores numa rede são identificados pelo seu endereço IP (por exemplo: 172.67.183.206), porém esses endereços são difíceis de serem lembrados enquanto você navega na internet e é por isso que o DNS existe, o DNS surgiu para simplificar o uso de uma rede de computadores, afinal, é muito mais fácil você lembrar que o registro DNS é blog.lucianohanna.com.br ao invés de lembrar que o IP é 172.67.183.206.
Uma analogia muito boa para simplificar é com nome de rua, quando nos referimos a uma rua, normalmente falamos o nome da rua, como Avenida Presidente Vargas, não pelo CEP 20071-004. Porém, assim como o CEP, o endereço IP é muito importante para outras coisas que abordarei em outro post aqui no blog, então fiquem ligados nos novos posts!
Uma parte importante é o servidor de nome (name server), esse servidor é responsável por responder qual é o endereço IP de um dado domínio, um experimento que você pode fazer é usar o nslookup para realizar uma consulta ao nameserver, o nslookup é um programa nativo do Linux e Windows para realizar esse tipo de consulta (como o próprio nome faz referência). Essa ferramenta é essencial para depuração de problemas na rede, pois muitos problemas no acesso à internet é um problema no DNS, não na conexão de fato à rede.
Nslookup
Sem mais delongas, o uso do nslookup é bem simples, por exemplo: nslookup blog.lucianohanna.com.br 8.8.8.8
em que 8.8.8.8 é o IP do nameserver (do Google) que farei a consulta pelo nome de domínio blog.lucianohanna.com.br. Recomendo que consulte a documentação do nslookup para saber outros casos de uso do mesmo. A saída desse comando, no Linux, foi:
Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: blog.lucianohanna.com.br Address: 172.67.183.206 Name: blog.lucianohanna.com.br Address: 104.21.48.104 Name: blog.lucianohanna.com.br Address: 2606:4700:3037::ac43:b7ce Name: blog.lucianohanna.com.br Address: 2606:4700:3036::6815:3068
Como podemos observar, a saída do programa possui algumas informações sobre os registros do domínio. Quando você acessa esse blog, a primeira coisa feita é realizar essa consulta para saber onde está o site que você quer acessar, nesse caso específico, os IPv4 são 172.67.183.206 e 104.21.48.104 e os IPv6 são 2606:4700:3037::ac43:b7ce e 2606:4700:3036::6815:3068. Essa é a primeira etapa realizada, pois os dispositivos da rede conversam em IP, o nome de domínio é só a forma amigável para o usuário acessar o site.
O nslookup, por padrão, faz a consulta dos registros A e AAAA, que são os registros que vinculam um endereço IP em um domínio (IPv4 para A e IPv6 para AAAA). Existem diversos outros tipos de registros que não entrarei em detalhes para que esse post não vire um livro.
Espaço de nome de domínio
Outro detalhe da saída do programa é o “Non-authoritative answer“, uma resposta DNS pode ser autoritária ou não-autoritária. Uma resposta não-autoritária é uma resposta que o servidor não tem autoridade em responder, esse servidor está dando essa resposta baseado na resposta de outro servidor e uma resposta autoritária é uma resposta que foi respondida do servidor que é responsável por aquele registro. No caso do 8.8.8.8, a resposta é não-autoritária pois este é um servidor de cache, nesse caso especifico, o nameserver que retorna uma resposta autoritária são os nameservers da Cloudflare.
Os servidores DNS possuem uma topologia de árvore em que no topo se tem a raiz, depois se tem os servidores de níveis um pouco mais especificos porém ainda muito generalizado como .com, .br e .gov (.gov faz referência aos domínios que terminam em .gov, não inclui domínios como .gov.br) e, abaixo desse nível temos os mais específicos como o .com.br e .gov.br sendo filho do .br. Note que essa é só a parte superior da árvore, a árvore real possui mais níveis, por exemplo, o .com.br possui como filho o lucianohanna.com.br e, por sua vez, possui como filho o blog.lucianohanna.com.br
Servidores de Cache
Algo muito comum de se ver em redes corporativas e de provedores de acesso à internet são servidores de cache de DNS, esses servidores são importantes para reduzir o tráfego à rede externa. Pense nas páginas que você acessa enquanto navega na internet, é muito comum que você acesse diversas páginas do mesmo domínio, correto? Imagine o quanto de consultas DNS repetidas são feitas em 1 hora apenas por você (um usuário), agora imagine o quanto de consultas DNS repetidas são feitas em 1 hora na rede de um provedor de acesso à internet com milhares de usuários. São várias, correto? Esse é um dos motivos para que uma empresa implemente um servidor de cache DNS em sua rede, a redução dessas consultas à rede externa economiza recursos da infraestrutura, por exemplo, reduz o uso de banda do link e reduz a quantidade de dados trafegados no link que, por consequência, reduz o custo com a rede. Uma analogia que pode ser feita para o usuário final é que a sua rede utiliza 60Mbps sem cache de DNS e 40Mbps com cache de DNS, logo, você pode contratar o plano de 40Mbps ao invés do plano de 60Mbps, ou, no caso de tráfego, imagina que você pague por bit trafegado na rede, você trafegar 40Mb ao invés de 60Mb faz com que a conta fique mais barata.
Como pode notar, o DNS é um sistema complexo, porém bem distribuído. Eu espero que você esteja entendendo um pouco mais sobre DNS agora e consiga tirar proveito disso. Eu, por exemplo, consegui depurar muito mais facilmente os problemas na minha rede depois que conheci o nsloookup e me poupou de muitas ligações ao suporte da operadora.
Tem alguma dúvida? Alguma crítica? Alguma sugestão de tema? Deixe um comentário abaixo!