O que é DNS recursivo?

Em pesquisas de DNS, que combinam nomes de domínio a endereços de IP legíveis por máquina, a jornada até a árvore do DNS pode ser feita por um servidor DNS ou um cliente.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Definir DNS recursivo
  • Diferenciar entre uma consulta DNS recursiva e iterativa
  • Compreender as vantagens e os riscos associados às consultas recursivas de DNS

Conteúdo relacionado


Quer saber mais?

Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.

Consulte a política de privacidade da Cloudflare para saber como coletamos e processamos seus dados pessoais.

Copiar o link do artigo

DNS gratuito incluído em qualquer plano da Cloudflare

O que é DNS recursivo?

Uma pesquisa de DNS recursivo é onde um servidor de DNS se comunica com vários outros servidores DNS para buscar um endereço de IP e devolvê-lo ao cliente. Isso contrasta com uma consulta de DNS iterativa, em que o cliente se comunica diretamente com cada servidor de DNS envolvido na pesquisa. Embora esta seja uma definição muito técnica, uma análise mais detalhada do sistema de DNS e a diferença entre recursão e iteração deve ajudar a esclarecer as coisas.

O que é um servidor de DNS?

Sempre que um usuário digita um nome de domínio (como "cloudflare.com") em sua janela do navegador, isto aciona uma pesquisa de DNS. Uma série de computadores remotos conhecidos como servidores de DNS então encontram o endereço de IP para aquele domínio e o devolvem ao computador do usuário para que ele possa acessar o site correto.

Vários tipos diferentes de servidores de DNS devem trabalhar em conjunto para concluir uma pesquisa de DNS. Um resolvedor de DNS, servidor raiz de DNS, servidor DNS TLD e nameserver autoritativo de DNS devem fornecer informações para concluir a pesquisa. No caso de armazenamento em cache, um desses servidores pode ter salvo a resposta de uma consulta durante uma pesquisa anterior e pode então entregá-la da memória.

Para saber mais sobre como funciona uma pesquisa de DNS, consulte O que é um servidor de DNS?

Qual é a diferença entre recursão e iteração?

Recursão e iteração são termos de ciência da computação que descrevem dois métodos diferentes para resolver um problema. Na recursão, um programa chama a si mesmo repetidamente até que uma condição seja atendida, enquanto na iteração, um conjunto de instruções é repetido até que uma condição seja atendida. Essa diferença sutil é difícil de ilustrar sem entrar no código, mas a principal conclusão é que a recursão é uma solução que repetidamente chama a si mesma.

Por exemplo, imagine que Jim perdeu suas chaves em casa e está procurando uma maneira sistemática de encontrá-las. Uma solução recursiva seria Jim continuar procurando suas chaves até encontrá-las. Jim começará a procurar e, se não encontrar suas chaves, retornará à instrução original de continuar procurando até encontrá-las. Uma solução iterativa seria Jim pesquisar um quarto por cinco minutos, depois voltar às instruções e pesquisar o próximo quarto por cinco minutos e continuar esse ciclo até encontrar suas chaves ou percorrer toda a lista de quartos procurando.

Uma compreensão profunda de recursão e iteração não é necessária para compreender a diferença entre pesquisas DNS recursivas e iterativas: em uma pesquisa recursiva, um servidor DNS faz a recursão e continua consultando outros servidores DNS até que tenha um endereço de IP para retornar ao cliente (geralmente o sistema operacional de um usuário). Em uma consulta de DNS iterativa, cada consulta DNS responde diretamente ao cliente com um endereço para outro servidor de DNS solicitar e o cliente continua consultando servidores de DNS até que um deles responda com o endereço de IP correto para o domínio fornecido.

Dito de outra forma, o cliente faz uma forma de delegação em uma consulta de DNS recursiva. Ele diz ao resolvedor de DNS: “Ei, eu preciso do endereço de IP para este domínio, por favor, procure-o e não me retorne até que você o tenha”. Enquanto isso, em uma consulta iterativa, o cliente informa ao resolvedor de DNS: “Ei, preciso do endereço de IP para este domínio. Por favor, me informe o endereço do próximo servidor DNS no processo de pesquisa para que eu possa procurar por mim mesmo”.

Quais são as vantagens do DNS recursivo?

As consultas de DNS recursivo geralmente tendem a ser resolvidas mais rapidamente do que as consultas iterativas. Isto é devido ao armazenamento em cache. Um servidor de DNS recursivo armazena em cache a resposta final para cada consulta que realiza e salva essa resposta final por um determinado período de tempo (conhecido como tempo de vida).

Quando um resolvedor recursivo recebe uma consulta de um endereço de IP que já possui em seu cache, ele pode fornecer rapidamente a resposta armazenada em cache ao cliente sem se comunicar com nenhum outro servidor de DNS. A entrega rápida de respostas a partir do cache é muito provável, se a) o servidor DNS atender a muitos clientes e/ou b) o site solicitado for muito popular.

Quais são as desvantagens do DNS recursivo?

Infelizmente, permitir consultas DNS recursivas em servidores de DNS abertos cria uma vulnerabilidade de segurança, pois essa configuração pode permitir que invasores realizem ataques de amplificação de DNS e envenenamento de cache de DNS.

Servidores de DNS recursivo e ataques de amplificação de DNS

Em um ataque de amplificação de DNS, um invasor normalmente usa um grupo de máquinas (conhecido como botnet) para enviar um grande volume de consultas DNS usando um endereço de IP falsificado. Um endereço de IP falsificado é como um endereço de remetente forjado; o invasor está enviando solicitações de seu próprio IP, mas solicitando que as respostas sejam enviadas à vítima. Para exacerbar o ataque, o invasor também usa uma técnica chamada amplificação, na qual a solicitação falsificada pede uma resposta muito longa. O serviço vitimado receberá uma enxurrada de respostas de DNS demoradas e indesejadas que podem interromper ou até mesmo derrubar seus servidores. Este é um tipo de ataque DDoS.

É como um grupo de adolescentes brincalhões ligando para uma pizzaria e cada um pedindo uma dúzia de pizzas. Em vez de dar seu próprio endereço para entrega, eles dão o endereço de um vizinho desavisado. A vítima, que recebe um fluxo de entregas de pizza grandes e indesejadas, provavelmente sofrerá muitas interrupções em seu dia.

Um servidor DNS que aceite consultas recursivas é necessário para realizar esse tipo de ataque, pois os pacotes de DNS amplificados são respostas a consultas de DNS recursivas.

Servidores de DNS recursivos e ataques de envenenamento de cache de DNS

Em um ataque de envenenamento de cache de DNS, quando um servidor de DNS recursivo solicita um endereço de IP de outro servidor de DNS, um invasor intercepta a solicitação e fornece uma resposta falsa, que geralmente é o endereço de IP de um site malicioso. Não apenas o servidor de DNS recursivo envia ao cliente original esse endereço de IP, mas o servidor também salva a resposta em seu cache. Qualquer usuário que solicite um IP para o mesmo nome de domínio será enviado ao site malicioso. Se for um nome de domínio popular e um resolvedor de DNS popular, esse ataque pode afetar milhares de usuários.

Em uma consulta de DNS iterativa, o cliente solicita diretamente a resposta a cada servidor de DNS. Mesmo que um invasor consiga enviar uma resposta forjada à consulta, isso afetará apenas um único cliente, o que geralmente não vale o tempo do invasor.

Como ser compatível com consultas de DNS rápidas e seguras

O serviço de DNS gerenciado da Cloudflare geralmente resolve consultas de DNS mais rapidamente do que o DNS dos concorrentes ou DNS público. Além disso, o DNS da Cloudflare oferece é compatível com DNSSEC, um protocolo de segurança rigoroso projetado para manter os servidores e consultas de DNS seguros.