Visão geral do DNS

Nesta página, você terá uma visão geral do sistema de nome de domínio (DNS, na sigla em inglês).

Para ter uma visão geral do Cloud DNS, consulte esta página. Para termos-chave relacionados ao Cloud DNS, consulte Termos-chave.

O DNS é um banco de dados hierárquico distribuído que armazena endereços IP e outros dados e permite consultas por nome.

Em outras palavras, o DNS é um diretório de nomes de domínio legíveis que se traduzem em endereços IP numéricos usados por computadores para se comunicar entre si. Por exemplo, quando você digita um URL em um navegador, o DNS converte o URL em um endereço IP de um servidor da Web associado a esse nome. Os diretórios DNS são armazenados e distribuídos em todo o mundo em servidores de nomes de domínio atualizados regularmente.

Os conceitos a seguir são úteis ao trabalhar com DNS.

Tipos de servidor DNS

Um servidor DNS armazena um banco de dados de nomes de domínio e faz o processamento desses nomes com base em consultas DNS provenientes de um cliente em uma rede.

Servidor autoritativo

Um servidor autoritativo é um servidor que contém os registros de nome de DNS, incluindo A, AAAA e CNAME.

Um servidor não autoritativo cria um arquivo de cache com base em consultas anteriores para domínios. Ele não contém registros de nomes originais.

Resolvedor recursivo

Um resolvedor recursivo é o servidor que envia uma consulta ao servidor autoritativo ou não autoritativo para resolução. Um resolvedor recursivo é assim chamado porque executa cada consulta para um determinado nome e retorna o resultado final.

Isso está em contraste com um resolvedor iterativo, que retorna apenas uma referência para os servidores DNS seguintes que podem ter a resposta.

Por exemplo, ao resolver o nome google.com., o resolvedor recursivo precisa determinar quem é autoritativo para . (a zona raiz do DNS). Em seguida, ele pergunta aos servidores de nomes quem é autoritativo para .com.. Por fim, ele pergunta aos servidores de nomes quem é autoritativo para google.com. e os rdata do registro A são retornados ao cliente.

Veja abaixo um exemplo de resolvedor recursivo em ação. Se você executar dig +trace google.com, o resolvedor recursivo realizará a seguinte ação (8.8.8.8/DNS público do Google é um desses resolvedores):

 dig +trace google.com
; <<>> DiG 9.11.5-P4-5.1-Debian <<>> +trace google.com
;; global options: +cmd
.           168383  IN  NS  a.root-servers.net.
.           168383  IN  NS  b.root-servers.net.
.           168383  IN  NS  c.root-servers.net.
.           168383  IN  NS  d.root-servers.net.
.           168383  IN  NS  e.root-servers.net.
.           168383  IN  NS  f.root-servers.net.
.           168383  IN  NS  g.root-servers.net.
.           168383  IN  NS  h.root-servers.net.
.           168383  IN  NS  i.root-servers.net.
.           168383  IN  NS  j.root-servers.net.
.           168383  IN  NS  k.root-servers.net.
.           168383  IN  NS  l.root-servers.net.
.           168383  IN  NS  m.root-servers.net.
.           168383  IN  RRSIG   NS 8 0 518400 20190810170000 20190728160000 59944 .
    ITqCp5bSKwoG1P76GpNfDanh4fXxOtHuld5SJzEm9ez0U/K7kpmBm4TE
    cw82zuqtZlqiGOuq+90KHJEhD1fdX3FujgDqe3kaY/41LgFIo76RBeMP
    CorYg29lKQOBf7pLPiJWewFmnLsRXsvENzxNXl9mynX80EQSS2YlCWpr
    47i2j5SFpGDzmxls7LinB4VvwVLhy0FPwBaVc5NVqQoFS5ZkfKXCUz8x
    urExPT2OtPJeDiGzrQGmT6vDbYZtJRWWGK5tPIKZQyF/08YSJlrjebNa
    1nKZVN8SsO8s7elz6JGmdoM6D/1ByLNFQmKvU55ikaVSnXylqixLbJQI 7LyQoA==
;; Received 525 bytes from 127.0.0.1#53(127.0.0.1) in 22 ms

com.            172800  IN  NS  a.gtld-servers.net.
com.            172800  IN  NS  b.gtld-servers.net.
com.            172800  IN  NS  c.gtld-servers.net.
com.            172800  IN  NS  d.gtld-servers.net.
com.            172800  IN  NS  e.gtld-servers.net.
com.            172800  IN  NS  f.gtld-servers.net.
com.            172800  IN  NS  g.gtld-servers.net.
com.            172800  IN  NS  h.gtld-servers.net.
com.            172800  IN  NS  i.gtld-servers.net.
com.            172800  IN  NS  j.gtld-servers.net.
com.            172800  IN  NS  k.gtld-servers.net.
com.            172800  IN  NS  l.gtld-servers.net.
com.            172800  IN  NS  m.gtld-servers.net.
com.            86400   IN  DS  30909 8 2
    E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.            86400   IN  RRSIG   DS 8 1 86400 20190811170000 20190729160000 59944 .
    KXPRdZspxd6hZYRFx3cj7Yp3d6HDzOG5CmoK46ZrrlKnZkCYMPKzyFQ2
    15pA+jZ37MbQbhe6+S+C4AHWqv95DDsue85ha3ZmWGhnJxcLnDaL5Twp
    Z/W/a+1cTHhhbMZua1riw74mqvzRAF1kVerj7jrvWnOAOZCh69Dr4AFJ
    gRN4MAn+wCZDmPQCtkcGVJ9vyNV7Xra45B4ISqEo0xi8CXewp9cc+aW5
    TSjFRhj1RM9d3k+3Mrq6AAV8dVgWofYTg6Ihph/SfoIx4TrTrEbgfdsv
    MvuLPXvK6Y7oSh5WknbFduw7HQdo1jH3/QR54FORswBJT8VmYD7Zii88 tAjbRQ==
;; Received 1170 bytes from 192.58.128.30#53(j.root-servers.net) in 2 ms

google.com.     172800  IN  NS  ns2.google.com.
google.com.     172800  IN  NS  ns1.google.com.
google.com.     172800  IN  NS  ns3.google.com.
google.com.     172800  IN  NS  ns4.google.com.
    CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 -
    CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
    CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2
    86400 20190803044434 20190727033434 17708 com.
    rMmiNL7bYvJpB3Bc+WnqS2iiczm2PwxBvJcl7SL/vcTj88GsxM1ycTSV
    PsHZHxfrv1dv2C5BCSZ+mzeVBu8upLoeraQy+UVf3VXyt3i3rNGzcXYV
    8HSrHcXrRoAJopFim3Ge1xdZ+uERg3cTIcN2tJxxkCeqt/EcUTqtQl8t EAc=
    S84BDVKNH5AGDSI7F5J0O3NPRHU0G7JQ.com. 86400 IN NSEC3 1 1 0 -
    S84CFH3A62N0FJPC5D9IJ2VJR71OGLV5 NS DS RRSIG
    S84BDVKNH5AGDSI7F5J0O3NPRHU0G7JQ.com. 86400 IN RRSIG NSEC3
    8 2 86400 20190804045723 20190728034723 17708 com.
    jypPsaWVop9rzuf70CFYyiK0hliiJ+YYtkjgb3HVj9ICc57kLmv9DkvG
    DddF5GBQpqNEakzyJtya179MAdDT7RhJB4XfmY6fu5I5QTeIjchfP5wt
    7gU1AL7cqTmBAo2RWu62vtUytV09+O3KGFq5O+Cwr11dSTfq1yYyw6YW cMI=
;; Received 772 bytes from 192.41.162.30#53(l.gtld-servers.net) in 2 ms

google.com.     300 IN  A   172.217.7.14
;; Received 55 bytes from 216.239.32.10#53(ns1.google.com) in 13 ms

Cada cliente de DNS consulta um servidor de nomes. Um resolvedor recursivo consulta outros servidores de nomes, até mesmo um servidor de nomes de nível superior, se necessário. O registro NS para uma zona em um servidor de nome de nível superior direciona o resolvedor para outro servidor de nomes, de nível inferior, que em determinado momento alcança um servidor que armazenou a zona ou o servidor autoritativo da zona.

Zonas

Zona pública

Uma zona pública é visível para a Internet. É possível criar registros DNS em uma zona pública para publicar o serviço na Internet. Por exemplo, é possível criar um registro A em uma zona pública chamada example.com. (observe o ponto final) do site público www.example.com..

Zona privada

Uma zona privada é qualquer zona que não possa ser consultada pela Internet pública.

Subzona delegada

O DNS permite que o proprietário de uma zona use registros NS para delegar um subdomínio a outro servidor de nomes. Os resolvedores seguem esses registros e enviam consultas no subdomínio para o servidor de nomes de destino especificado na delegação.

Por exemplo, é possível criar zonas separadas para example.com e subdomain.example.com, cada uma com seu próprio servidor de nomes autoritativo. Como subdomain.example.com é um domínio filho de example.com, o método para ativar o servidor de nomes autoritativo do subdomínio localizado da zona do domínio pai é chamado de delegação. A delegação é essencialmente um ponteiro para o servidor de nomes autoritativo de um subdomínio. Para ativar a delegação no Cloud DNS, adicione registros NS para os subdomínios na zona do domínio pai.

DNS split horizon

O split horizon é um termo usado para descrever uma instância quando duas zonas, uma a ser usada pela rede interna e a outra a ser usada pela rede externa (geralmente a Internet), são criadas para o mesmo domínio. O DNS split horizon permite exibir respostas diferentes, conjuntos de registros de recursos distintos, para o mesmo nome, dependendo de quem está perguntando.

Por exemplo, é possível fornecer a versão de desenvolvimento ou de preparo do aplicativo se a consulta vier da rede de desenvolvimento, e a versão de produção ou pública do app se ela vier da Internet pública.

Registros

Um registro é um mapeamento entre um recurso de DNS e um nome de domínio. Cada registro DNS individual tem um tipo (nome e número), um prazo de validade (time to live) e dados específicos do tipo.

Alguns dos tipos de registro mais usados são os seguintes:

  • A: registro de endereço, que mapeia nomes de host no seu endereço IPv4.
  • AAAA: registro de endereço IPv6, que mapeia nomes de host no seu endereço IPv6.
  • CNAME: registro de nome canônico, que especifica nomes de alias.
  • MX: registro de troca de e-mail, usado em solicitações de roteamento para servidores de e-mail.
  • NS: registro do servidor de nomes, que delega uma zona de DNS a um servidor autoritativo.
  • PTR: registro de ponteiro, que define um nome associado a um endereço IP.
  • SOA: início de autoridade, usado para designar o servidor de nomes principal e o administrador responsável por uma zona. Cada zona hospedada em um servidor DNS precisa ter um registro SOA (início da autoridade). É possível modificar o registro conforme necessário. Por exemplo, a alteração do número de série para um número arbitrário pode ser feita, a fim de dar suporte ao controle de versão baseado em data.

Conjuntos de registros

Registros com o mesmo nome e do mesmo tipo, mas com valores de dados diferentes são chamados de conjuntos de registros. Ao criar um registro, se existir um conjunto com o mesmo nome e tipo, o registro será adicionado a esse conjunto correspondente. Se não houver um conjunto correspondente, um novo conjunto será criado e adicionado à lista de conjuntos de registros.

Este é um exemplo de um conjunto de registros com mais de um registro com o mesmo nome e tipo:

Nome do DNS Tipo TTL (segundos) Dados
db-01.dev.gcp.example.com A 50 10.128.1.35
db-01.dev.gcp.example.com A 50 10.128.1.10

Para uma lista dos tipos de registro compatíveis no Cloud DNS, consulte Tipos de registro DNS compatíveis.

Delegação de subdomínios

Ao criar registros, verifique se os registros NS e SOA correspondem entre si. Registros NS e SOA conflitantes podem fazer com que alguns resolvedores rejeitem a delegação como inválida e se recusem a armazenar em cache as respostas NO DATA. Isso pode resultar em um número grande e inesperado de consultas nas zonas públicas gerenciadas por resolvedores recursivos de terceiros quando eles consultam zonas gerenciadas públicas em busca de registros que não existem.

Por exemplo, suponha que haja dois subdomínios, example.com e subdomain.example.com no Cloud DNS. Os registros NS e SOA para subdomain.example.com não correspondem. Nenhuma das zonas contém registros AAAA. Quando alguns resolvedores recursivos de terceiros consultam subdomain.example.com à procura de um registro AAAA e recebem NO DATA como resposta, se os resolvedores detectarem a delegação inválida de subdomain.example.com, eles se recusarão a armazenar em cache a inexistência de registros AAAA nessa zona. Isso resultará na repetição das consultas. Os resolvedores consultarão todos os servidores de nomes do Cloud DNS para conseguir essa informação.

Registrador

Um registrador de nome de domínio é uma organização que gerencia a reserva de nomes de domínio da Internet para zonas públicas. Um registrador precisa ser credenciado por um registro de domínio de nível superior genérico (gTLD, na sigla em inglês) ou um registro de domínio de nível superior com código de país (ccTLD, na sigla em inglês). É dessa forma que os servidores de nome de nível superior concordam com SOA e atualizam registros NS para a zona a fim de direcionar solicitações para servidores de nome de armazenamento em cache ou autoritativos.

Número de série de SOA

O número de série de SOA é um número de versão de uma zona de DNS. Para que todos os servidores de nomes sejam atualizados com a versão de uma zona, eles precisam ter o mesmo número de série de SOA. Os números de série dos registros SOA criados nas zonas gerenciadas monotonicamente por DNS aumentam a cada alteração transacional para os conjuntos de registros de uma zona.

No entanto, é possível alterar o número de série de um registro SOA para um número arbitrário, incluindo uma data formatada com o ISO 8601, como recomendado em RFC 1912 (em inglês).

DNSSEC

A extensão de segurança do sistema de nomes de domínio (DNSSEC, na sigla em inglês) aborda vulnerabilidade dos dados de DNS. O DNSSEC é um conjunto de especificações IETF que fornece autenticação de dados DNS, negação de existência autenticada e integridade de dados para clientes de DNS (resolvedores). Em resumo, a DNSSEC fornece uma maneira do software verificar a origem dos dados do DNS e validar que eles não foram modificados em trânsito.

Para mais detalhes sobre o DNSSEC, consulte RFC 4033.

Para uma lista de terminologia DNS geral, consulte RFC 7719 (em inglês).

A seguir