Ir para o conteúdo

CCT-UFCA/Ciência da Computação/Laboratório de Redes/DNS

De Wikiversidade

O que é o DNS?

[editar | editar código]

O DNS (Domain Name System) é um "sistema de nomes" distribuído e hierárquico. Seu objetivo principal é traduzir nomes de domínios (como www.exemplo.com) em endereços IP (como 200.241.16.8), um processo conhecido como "resolução de nomes". Ele também faz o processo inverso, traduzindo endereços IP para nomes de domínio.

Ele é estruturado como uma base de dados hierárquica e distribuída, onde cada servidor é responsável por uma parte do espaço de nomes.

Histórico

[editar | editar código]

No passado, a conversão de nomes para IPs era feita por meio de um único arquivo de texto (/etc/hosts). Esse sistema era centralizado e não-hierárquico, o que gerava constantes problemas de atualização. O DNS resolveu esses problemas introduzindo dois conceitos-chave:

  • Nomes de hosts hierárquicos: o que permite a estrutura de árvore do sistema de nomes.
  • Distribuição da responsabilidade: servidores diferentes cuidam de partes diferentes do sistema, tornando a gestão mais eficiente.

Estrutura do Espaço de Nomes DNS

[editar | editar código]

O espaço de nomes do DNS é uma estrutura de árvore hierárquica.

  • Raiz (.): É o topo da árvore, um nó especial de label nulo.
  • Domínios Top-level (TLD): Ficam logo abaixo da raiz. São fixos e divididos em dois tipos: domínios de 3 letras (como .com, .org, .edu) para os EUA e códigos de país de 2 letras (como .br, .pt).
  • Domínios: Um nome de domínio é a lista de labels, do nó até a raiz, separados por pontos (por exemplo: inf.ufes.br). Um nome de domínio que termina com um ponto é chamado de FQDN (Fully Qualified Domain Name), o que garante que ele seja completo.

Tipos de Servidores DNS

[editar | editar código]

Existem vários tipos de servidores, cada um com uma função específica na hierarquia do DNS:

  • Servidor Primário: Mantém a cópia mestre e autoritativa dos dados de um domínio.
  • Servidor Secundário: Copia os dados do servidor primário para fornecer redundância e melhorar a performance. É importante ter servidores secundários.
  • Servidor Caching-only: Não armazena dados autoritativos, mas armazena em cache as respostas para consultas, reduzindo o tráfego de rede.
  • Servidores Raiz (Root Name Servers): Existem 13 servidores raiz no mundo. Eles sabem o nome e o IP dos servidores TLD e encaminham as consultas para o servidor autoritativo correto.
  • Servidores TLD (Top-Level Domain Servers): Responsáveis por domínios como .com, .br, etc. Eles sabem quais são os servidores oficiais de cada domínio abaixo deles.

Tipos de Consulta (Queries)

[editar | editar código]
  • Consulta Não-Recursiva (Iterativa): O servidor DNS responde com a informação que tem no cache ou, se não tiver, aponta para o próximo servidor que pode ter a resposta, deixando o cliente responsável por continuar a busca.
  • Consulta Recursiva: O servidor DNS assume a responsabilidade de resolver o nome por completo. Ele mesmo contata outros servidores na hierarquia para encontrar a resposta e a retorna para o cliente. Servidores de nível mais baixo são geralmente recursivos, enquanto os de nível mais alto são tipicamente não-recursivos.

Configuração e Componentes (BIND)

[editar | editar código]

O BIND (Berkeley Internet Name System) é uma das implementações mais populares do DNS. Seus componentes incluem:

  • named: O daemon que executa as consultas e gerencia os dados do servidor.
  • resolver: Rotinas de biblioteca usadas por programas clientes para fazerem consultas. A configuração do cliente é feita principalmente no arquivo /etc/resolv.conf, onde se define os servidores DNS a serem usados.
  • nslookup, dig, host: Ferramentas de linha de comando para interagir com o DNS.

Registros de Recursos (Resource Records - RR)

[editar | editar código]

A base de dados do DNS é composta por registros de recursos, que são arquivos de texto no servidor primário. Cada registro tem um formato e um tipo específicos:

  • SOA (Start of Authority): Marca o início de uma zona e contém informações importantes sobre ela.
  • NS (Name Server): Define os servidores de nomes para um domínio e permite a delegação de autoridade.
  • A (Address Record): Mapeia um nome de host para um endereço IPv4.
  • MX (Mail eXchanger): Direciona e-mails para o servidor de correio correto.
  • CNAME (Canonical Name): Cria um "apelido" para um host, direcionando o tráfego para um nome já existente.
  • PTR (Pointer): Usado para a resolução reversa, mapeando um endereço IP para um nome de host.

DNS Reverso

[editar | editar código]

O DNS reverso é o processo de traduzir um endereço IP para um nome de host (o inverso do DNS "direto"). Ele funciona de forma semelhante, mas a busca começa com o endereço IP invertido e o sufixo .in-addr.arpa, e a responsabilidade de gerenciar esses registros é de quem detém o bloco de IPs, geralmente o provedor de internet.