O que é um resolvedor de DNS, e qual você está usando?
Um resolvedor de DNS é o serviço que o seu dispositivo pergunta primeiro quando precisa do endereço IP de um nome, e uma única consulta normalmente passa por três papéis diferentes: um resolvedor stub na sua própria máquina, um resolvedor recursivo que faz a busca de verdade, e os servidores autoritativos que guardam a resposta real. A maioria das pessoas só configura o primeiro e nunca vê os outros dois diretamente.
O que acontece quando o seu dispositivo procura um nome?
O seu sistema operacional não sai procurando um nome pela internet sozinho. Ele passa o pedido para um pequeno software chamado resolvedor stub, que não é um servidor de nomes de jeito nenhum. A RFC 8499 o define como um resolvedor "que não consegue fazer toda a resolução sozinho" e depende de um resolvedor recursivo para o trabalho de verdade. O trabalho do resolvedor stub é enviar a sua consulta para o servidor configurado nas suas configurações de rede e devolver a resposta, ou uma cópia recente já em cache.
Resolvedor stub, resolvedor recursivo, servidor autoritativo: qual é a diferença?
Três papéis aparecem em toda consulta, e o mesmo servidor físico pode assumir mais de um deles:
- Resolvedor stub. Roda no seu dispositivo, repassa consultas, mantém um pequeno cache, e não consegue resolver um nome sozinho.
- Resolvedor recursivo. Segundo a RFC 8499, "um resolvedor que age em modo recursivo", ou seja, ele faz todo o trabalho de perseguir uma resposta através de quantos servidores forem necessários, depois guarda em cache e devolve o resultado. Esse é o papel que o seu provedor de internet ou um serviço público de DNS ocupa.
- Servidor autoritativo. A RFC 8499 o define como um servidor que "conhece o conteúdo de uma zona DNS por conhecimento local, e por isso pode responder consultas sobre essa zona sem precisar consultar outros servidores". Esse é o servidor que o próprio provedor de DNS do domínio administra, e a resposta dele é a única que ninguém mais está copiando.
Um servidor que responde com um encaminhamento em vez de uma resposta completa está agindo de forma iterativa; um que continua trabalhando até ter uma resposta final ou um erro definitivo está agindo de forma recursiva, que é o que "resolvedor recursivo" quer dizer no nome.
O caminho que uma consulta percorre: os saltos de raiz, TLD e autoritativo
Uma consulta fria, sem nada em cache em lugar nenhum, percorre uma hierarquia fixa. O resolvedor recursivo começa em um servidor raiz, uma das treze identidades de servidor raiz que a IANA lista de a.root-servers.net a m.root-servers.net, e pergunta a ele sobre example.com. O servidor raiz não sabe a resposta; ele devolve um encaminhamento para os servidores responsáveis pelo domínio de topo .com. O resolvedor pergunta a um deles e recebe um segundo encaminhamento, dessa vez para os servidores de nomes autoritativos de example.com em si, os que o dono do domínio configurou. Só esse último servidor dá uma resposta real em vez de apontar para outro lugar. O resolvedor recursivo guarda a resposta em cache e a devolve para o seu resolvedor stub, que a entrega ao seu navegador.
Todo salto depois do primeiro é pulado sempre que um cache no caminho já tem a resposta, o que explica por que a grande maioria das consultas do dia a dia nunca chega a tocar um servidor raiz.
Resolvedor do provedor de internet vs resolvedor público: o que muda de verdade?
O resolvedor que o seu dispositivo usa por padrão geralmente vem do DHCP, distribuído pelo seu roteador ou pelo seu provedor de internet, e quase sempre é um resolvedor recursivo fazendo buscas completas em seu nome. O que ele faz com as suas consultas, o tamanho do cache dele e de quantos locais ele opera é definido por quem o administra, e não é algo que você consegue ver do seu lado.
Resolvedores públicos existem como uma alternativa para a qual você pode apontar o seu dispositivo: o Google Public DNS roda em 8.8.8.8, a Cloudflare em 1.1.1.1, e a Quad9 em 9.9.9.9. Cada um publica a própria política sobre o que registra e por quanto tempo guarda, cada um roda a própria rede anycast, de modo que o mesmo endereço responde a partir do local mais próximo de você, e a Quad9 também bloqueia domínios maliciosos conhecidos por padrão no nível do resolvedor, o que um resolvedor de provedor de internet normalmente não faz. Nada disso muda o que o DNS em si pode fazer: um resolvedor só decide como uma consulta é realizada, não o que os registros de um domínio dizem.
Qual resolvedor a sua máquina está usando agora?
O resolvedor que você está realmente usando é uma configuração, não um palpite, e cada sistema operacional tem um comando que mostra isso:
- Windows:
ipconfig /alllista "DNS Servers" sob cada adaptador de rede, na ordem em que são consultados. - macOS:
scutil --dnsrelata a configuração de DNS atual, incluindo os servidores de nomes em vigor para cada serviço de rede. - Linux com systemd-resolved:
resolvectl statusmostra, segundo o próprio manual da ferramenta, "as configurações globais e por link de DNS atualmente em vigor", ou seja, tanto o resolvedor padrão quanto o que uma conexão específica, como Wi-Fi ou uma VPN, tenha sobrescrito.
Uma VPN, uma rede corporativa ou a própria configuração de DNS seguro do navegador podem cada uma substituir um resolvedor diferente sem mudar o que o comando do sistema operacional relata, então, se a resposta do comando não bate com o que você espera, esse é o primeiro lugar para olhar.
Qual resolvedor responde a uma consulta pode mudar o resultado que você vê, não só a velocidade de obtê-lo: um resolvedor com cache desatualizado, uma instabilidade regional, ou uma política de filtragem própria pode devolver algo diferente do que os servidores autoritativos diriam diretamente. Rode uma consulta com a ferramenta de consulta DNS para comparar, ou, se o resolvedor está respondendo devagar em vez de diferente, como corrigir uma consulta DNS lenta cobre como medir e trocar. Se ele não está respondendo de jeito nenhum, comece por servidor DNS não está respondendo. Para o comportamento de cache por trás de tudo isso, veja o que é um cache de DNS. O HostTracker monitora sites desde 2004, hoje observa mais de 500.000 sites a partir de mais de 300 pontos de verificação em 158 cidades, e pode avisar por e-mail, SMS, chamada de voz, Slack, Telegram e outros no momento em que uma verificação que espera um endereço IP específico encontra um diferente.
Perguntas frequentes
O meu roteador é um resolvedor de DNS?
Muitas vezes, só em um sentido limitado. Muitos roteadores domésticos rodam um pequeno encaminhador de DNS: ele responde a partir de um cache minúsculo, mas para qualquer coisa que ainda não esteja em cache, ele passa a consulta direto para o resolvedor do provedor de internet em vez de fazer a recursão completa sozinho. A RFC 2308 descreve esse papel como um encaminhador (forwarder), "um servidor de nomes usado para resolver consultas em vez de usar diretamente a cadeia de servidores de nomes autoritativos".
Usar um resolvedor público deixa a minha navegação mais rápida?
Às vezes sim, às vezes não. Um resolvedor perto de você com um cache aquecido responde em milissegundos de um único dígito, não importa quem o opera. As principais variáveis são a proximidade do local mais próximo daquele resolvedor e o quanto o cache dele já está aquecido, não a marca.
Qual é a diferença entre recursão e encaminhamento?
Um resolvedor fazendo recursão consulta a raiz, o TLD e os servidores autoritativos por conta própria, um salto de cada vez, e guarda o resultado final em cache. Um resolvedor que encaminha, em vez disso, manda a pergunta inteira para outro resolvedor e espera uma resposta completa, trocando o trabalho, e a visibilidade sobre o que você procurou, pelo que aquele resolvedor upstream já tiver em cache.
Os 13 servidores raiz rodam mesmo em 13 máquinas?
Não. Existem treze identidades nomeadas de servidor raiz, mas cada uma é servida por muitas máquinas físicas ao redor do mundo, de modo que uma consulta é roteada para uma cópia próxima em vez de atravessar um oceano toda vez.
Dois dispositivos na mesma rede podem usar resolvedores diferentes?
Sim. O roteador distribui um padrão via DHCP, mas qualquer dispositivo pode sobrescrever isso nas próprias configurações de rede, e uma VPN ou a configuração de DNS seguro de um navegador pode sobrescrever de novo por cima disso. Os comandos acima sempre mostram o que aquele dispositivo específico está usando naquele momento, não o que a rede pretende.