DNS – Domain Name System

Square

Gisela Miranda Difini

Curso de Bacharelado em Ciência da Computação – Universidade do Vale do Rio dos Sinos ( UNISINOS ) – São Leopoldo
93020-190 – São Leopoldo – RS– Brasil

giselamd@edu.unisinos.br

Abstract. The DNS (Domain Name System) is an application layer protocol structured hierarchically and distributed across servers. Its main functionality is to manage and identify names for computers, services or machines connected to the internet. The DNS generates an IP address from a name typed by a human, using usually the UDP transport protocol to access this hierarchy and request the conversion from a typed name to a machine-known IP address in a more agile way. It is widely used throughout the internet, abstracting the need of knowing all IP addresses so that the communication between humans and machines can be successful.

Resumo. O DNS, ou Domain Name System, é um protocolo da camada de aplicação, que é estruturado de forma hierárquica e distribuído entre servidores, sua principal funcionalidade está no gerenciamento e na resolução de nomes para computadores, máquinas ou serviços conectados à internet. O DNS resolve o IP a partir do nome digitado, usualmente utilizando o protocolo de transporte UDP para se comunicar com a hierarquia de servidores e requisitar um IP conhecido e interpretável por máquinas de forma mais ágil. O DNS é amplamente utilizado na internet, abstraindo a necessidade de conhecer diretamente o IP de todos os servidores objeto para que a comunicação humano-máquina seja bem sucedida.

  1. Introdução

O DNS é um banco de dados distribuído implementado em uma hierarquia de servidores de nome (servidores DNS ou NameServers), [Kurose, 2011] e é um protocolo que permite a comunicação entre hosts e NameServers, buscando traduzir os endereços da linguagem humanamente interpretável para uma linguagem que possa ser interpretada por máquinas em redes. O protocolo DNS utiliza, comumente, UDP e a porta 53.

O DNS é utilizado por várias entidades da camada de aplicação para traduzir os hostnames fornecidos por usuários para endereços IP, como por exemplo o HTTP, SMTP e FTP. Sendo o HTTP o mais utilizado pelos usuários para a tradução de um nome de hospedeiro contido em uma URL. O DNS também provê alguns outros serviços além da tradução de nomes de hospedeiros para endereços IP:

  • Apelidos de host: Quando o DNS faz a tradução de um endereço para outro endereço. Um hostname o pode ter um ou mais apelidos (URLs canônicas). O DNS pode ser chamado por uma aplicação para obter o nome canônico correspondente a um apelido fornecido, bem como para obter o endereço IP do hospedeiro [Kurose, 2011].
  • Apelidos de servidor de correio: O DNS pode ser chamado por uma aplicação de correio para obter o nome canônico a partir de um apelido fornecido, bem como o endereço IP do hospedeiro [Kurose, 2011], assim como ocorre com os apelidos de host.
  • Distribuição de carga: O DNS também é usado para realizar destruição de carga entre servidores, tais como os servidores Web replicados. Neste caso vários conjuntos de endereços IP ficam associados a um único nome canônico e contido no banco de dados do DNS [Kurose, 2011].
  1. Servidores DNS

Como supracitado, os servidores DNS estão organizados de forma hierárquica e distribuídos ao redor do mundo. Desta forma, os servidores distribuem os mapeamentos para os hosts existentes, facilitam a manutenção e diminuem a distância entre os seus clientes.

Existem três tipos de servidores DNS (NameServers): servidores DNS raiz, servidores DNS de domínio de alto nível (TLD) e servidores DNS com autoridade. Há também outro servidor de nome conhecido como servidor DNS local, que não pertence, estritamente, à hierarquia de servidores.

  • Servidores de nomes locais: são os servidores que estão próximos ao cliente. Ao pesquisar por um host, primeiramente uma mensagem é enviada ao servidor DNS local.
  • Servidores de nomes raiz: são os servidores requisitados por um servidor DNS local. Existem 13 servidores DNS raiz, sendo a sua maioria localizada na América do Norte.
  • Servidores de nomes de Domínio de Alto Nível: como já diz o nome, estes servidores são os responsáveis pelos domínios de alto nível (TLDs).
  • Servidores de nomes com autoridade: são servidores criados por organizações.
  1. Estrutura do pacote

Os servidores de nomes armazenam registros de recursos (RR) que fornecem os mapeamentos de hostnames para endereços IP. Cada mensagem de resposta DNS carrega um ou mais registros de recurso. Um RR é uma tupla de quatro elementos com os seguintes campos: Name, Value, Type, TTL. Sendo o TTL o tempo de vida útil do registro de recurso. A maior parte destes registros de recurso foi especificada na RFC1035.

Os campos Name e Value dependem do Type, que identifica se o que o cliente quer mapear é um hostname, um domínio ou um apelido de host, por exemplo. Os tipos de registros mais conhecidos são:

  • A ou hostname: o registro central de um DNS, vincula um domínio a um endereço IP direto;
  • AAAA: realiza a mesma função de “A”, porém para um endereço IPv6 ao invés de IPv4;
  • NS ou Name Server: especifica qual é o servidor DNS responsável pelo domínio ou sub-domínio;
  • CNAME ou Canonical Name: especifica qual é o apelido do hostname, ou seja, realiza o redirecionamento;
  • MX ou Mail Exchanger: aponta para o servidor de e-mails;
  • PTR ou Pointer: como já diz o nome, este registro aponta o domínio reverso a partir de um endereço IP;
  • SOA ou Start Of Authority: indica o responsável pelo domínio.

O protocolo DNS possui um padrão de mensagem para que possa ser convertido de um padrão “humanamente legível” para um endereço interpretado em redes. As mensagens DNS são encapsuladas no UDP ou TCP e utilizam, como mencionado anteriormente, a porta comumente conhecida pelo número 53. Este padrão segue a seguinte forma, de acordo com a RFC 1035 [Mockapetris, P.]:

 

Tabela 1. Formato da Mensagem DNS

Cabeçalho DNS (comprimento fixo)
Entradas de Pergunta (comprimento variável)
Registros de recursos de resposta (comprimento variável)
Registros de recursos de autoridade (comprimento variável)
Registros de recursos adicionais (comprimento variável)

DNS message

Figura 1. Estrutura do Cabeçalho DNS
Fonte: INACON Protocol Help, 2010

      Os campos do cabeçalho são divididos, de cima para baixo e da esquerda para a direita, em: Identificação, controle ou flags, número de perguntas, número de respostas, número de autoridades e número de adicional. Estes 6 campos possuem um tamanho fixo de 16-bits, resultando em um total de 12 bytes para o cabeçalho.

  • ID (Identificação): usado para identificar se a mensagem de requisição e resposta do DNS se referenciam à mesma mensagem.
  • Flags:
    • QR: Identifica se a mensagem é uma resposta ou requisição.
    • AA(Authoritative Answer): Especifica se o servidor de resposta é uma fonte autorizada para o nome de domínio.
    • TC(TrunCation): A mensagem foi cortada devido ao comprimento ser maior que o canal de transmissão permite.
    • RD(Recursion Desired): Se estiver ativo, pede para o servidor seguir com a consulta recursiva. (suporte à consulta recursiva é opcional).
    • RA(Recursion Available): Identifica se a consulta recursiva está disponível no servidor.
    • Z: Reservado para uso futuro.
    • AD(Authenticated data): Identifica se a resposta do DNS é segura, pois foi validada usando DNSSEC
    • CD(Checking disabled): O DNS envia uma resposta, mesmo se a mesma não for validada pelo DNSSEC.
    • RCODE:
      • 0 – Sem erros.
      • 1 (Format error) – O servidor não consegue interpretar a consulta.
      • 2 (Server failure) – O servidor não conseguiu continuar com a consulta devido à um problema.
      • 3 (Name error) – Nome de domínio não existe.
      • 4 (Not Implemented) – O servidor não consegue identificar o tipo solicitado na consulta.
      • 5 (Refused) – Operação recusada pelo servidor.
  • QDCOUNT: Quantidade de perguntas. Possui 3 campos.
    • QNAME: Determina o domínio que está sendo pesquisado
    • QTYPE: Determina o registro de recursos que está tentando recuperar.
    • QCLASS: Classe de requisição.
  • ANCOUNT: Informa a quantidade de registros de recursos das respostas(Answer RRs).
  • NSCOUNT: Informa a quantidade de registros de recursos autoritativos(Authority RRs).
  • ARCOUNT: Informa a quantidade de registros de recursos adicionais(Additional RRs).
  1. Cache DNS

O Cache é uma ótima alternativa para melhorar o desempenho e reduzir a quantidade de mensagens DNS que trafegam pela Internet. Quando um servidor de nomes recebe uma resposta DNS, este pode guardar o par hostname/endereço IP em sua memória local para que, caso chegue a este mesmo servidor uma consulta para o mesmo nome de máquina, o servidor de nomes consiga fornecer o endereço de IP desejado, mesmo que este não tenha autoridade para este nome.

Como hosts, mapeamentos entre hosts e endereços IP não são permanentes, após um determinado período de tempo (normalmente dois dias), os servidores DNS descartam as informações armazenadas em seus caches [Kurose, 2011].

  1. Funcionamento

Os servidores DNS respondem à perguntas de dentro e de fora de seus próprios domínios cada vez que uma certa aplicação precisa traduzir um nome de hospedeiro para um endereço IP. Uma consulta passa primeiramente pelo servidor/provedor de nome local, caso este não consiga localizar o host  usando informações de zonas locais e nem de informações contidas no seu cache DNS, este passará a consultar outros servidores DNS para responder a solicitação do cliente. O servidores DNS raiz armazenam as informações da localização de todos os TLD nameservers e, como já mencionado, são estes servidores que respondem à requisições dos servidores de nomes local, devolvendo como resposta a localização do servidor DNS de domínio de alto nível, podendo este último passar para servidores DNS de sub-domínios (intermediários) e servidores de nomes com autoridade, caso necessário. Existem dois tipos de consulta: iterativa e recursiva.

A consulta iterativa acontece quando o servidor DNS requisitado pelo servidor de nome local não é capaz de resolver um determinado nome e, assim, devolve endereços de servidores de nome que saibam resolver. Já na consulta recursiva, caso o servidor DNS local não consiga resolver o pedido, este irá se encarregar de passar a informação para outros servidores e devolver a resposta ao cliente.

DNS recursivo vs iterativo

Figura 2: DNS Recursivo Vs. Iterativo
Fonte: ITnerante, 2016

  1. Segurança

A segurança no DNS é padronizada pelo DNSSEC (Domain Name System Security Extensions), que é o conjunto de padrões internacionais para estender a segurança para o protocolo DNS. O objetivo da extensão DNSSEC é assegurar o conteúdo do DNS e impedir ataques validando os dados e garantindo a origem das informações [Registro.br]. De acordo com a RFC 2535 [Eastlake, D.], a segurança do DNS é provida pela pela extensão do protocolo, com serviços de distribuição de chaves públicas, assim como segurança no DNS. De acordo com o mesmo, as chaves armazenadas habilitam a autenticação da chave para sistemas configurados. As chaves de autenticação dos nomes DNS podem ser utilizadas para suportar outros processos.

Como supracitado, o DNSSEC adiciona alguns tipos de registros DNS, especificados pela RFC 4034, como:

  • DNSKEY: Registro que contém a chave pública;
  • RRSIG: Registro que contém assinaturas criptografadas;
  • DS: Utilizado para autenticar o DNSKEY;
  • NSEC e NSEC3: Servem para negação explícita de existência de um registro DNS;

DNSKEY

Figura 3. DNSKEY
Fonte: dnsimple Newsletter, 2017

RRSIG

Figura 4. RRSIG
Fonte: dnsimple Newsletter, 2017

DS

Figura 5. DS
Fonte: dnsimple Newsletter, 2017

NSEC

Figura 6. NSEC
Fonte: dnsimple Newsletter, 2017

 

  1. Conclusão

Com a popularização da internet e da utilização periódica de browsers, é relevante ressaltar a importância da criação dos nomes de domínio, que facilitaram a memorização dos endereços de computadores, e da hierarquia do DNS e sua estrutura distribuída, visto que desta forma a comunicação entre cliente e servidor se dá de forma contínua e rápida, o que não aconteceria caso os servidores DNS possuíssem um sistema centralizado. Outro tópico importante a ser ressaltado é a segurança na troca de mensagens DNS que, ao ser adicionada à mensagem, garante que servidores confiáveis farão a leitura e conversão da criptografia inserida na mensagem para que, desta forma, possíveis manipulações dos dados das mensagens sejam evitadas. Ademais, é necessário salientar a importância deste protocolo e a abstração da conversão de dados humanamente legíveis para dados entendíveis por máquinas, sem a interação do usuário final, o que torna o uso da internet uma ferramenta inteligível e de fácil uso.

  1. Referências

INACON Protocol Help, 2010. DNS Message Format. Disponível em: http://www.inacon.de/ph/data/DNS/DNS-Message-Format_OS_RFC-1035.htm. Último acesso: Abril, 2018.

grupo1redes, 12 de maio de 2015. Protocolo DNS. Disponível em: https://colandonarede.wordpress.com/2015/05/12/protocolo-dns/. Último acesso: Abril, 2018.

Mockapetris, P. IETF RFC 1035, Novembro 1987. Disponível em:https://tools.ietf.org/html/rfc1035. Último acesso: Abril, 2018.

Eastlake 3rd, D. IETF RFC 6895, Abril 2013. Disponível em:https://tools.ietf.org/html/rfc6895. Último acesso: Abril, 2018.

Eastlake 3rd, D. IETF RFC 1591, Março 1994. Disponível em:https://tools.ietf.org/html/rfc1591. Último acesso: Abril, 2018.

KUROSE,J. F.; ROSS,K. W. Redes de Computadores e a Internet – Uma abordagem top-down, 5ª Edição 2011.

Eastlake 3rd, D. IETF RFC 2535, Março 1999. Disponível em:https://tools.ietf.org/html/rfc2535. Último acesso: Abril, 2018.

Kolkman, O. et al., D. IETF RFC 6781, Março 2012. Disponível em:https://tools.ietf.org/html/rfc6781. Último acesso: Abril, 2018.

David Robert Camargo de Campos, Rafael Dantas Justo. Introdução à DNS e DNSSEC. Disponível em: ftp://ftp.registro.br/pub/doc/introducao-dns-dnssec.pdf. Ultimo acesso em: Abril, 2018.

Registro.br. DNS e DNSSEC. Disponível em: https://registro.br/tecnologia/dnssec.html?secao=dnssec. Último acesso em: Abril, 2018.

dnsimples Newsletter. DNSSEC Record Types. Disponível em: https://newsletter.dnsimple.com/dnssec-record-types/. Último acesso em: Abril, 2018.

dnsimples Newsletter. DNSSEC Record Types – NSEC and DS. Disponível em: https://newsletter.dnsimple.com/dnssec-record-types-part-two/. Último acesso em: Abril, 2018.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *