CCT-UFCA/Ciência da Computação/Laboratório de Redes/DNS
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.