DNS: Deep Dive, parte 1
Nesta primeira de duas partes deste artigo revisaremos alguns conceitos dos servidores DNS. Ao fim desta primeira parte temos um vídeo que mostra como funciona uma consulta DNS comum.
Tipos de consultas DNS
Como sabemos, a função principal de um servidor DNS é prover tradução de endereços IP em nomes de fácil memorização. Desta forma ao invés de decorar o endereço IP de cada servidor da rede pode-se apenas memorizar um mnemônico que remeta ao serviço que oferecido pelo servidor. Para executar esta função o DNS tem uma arquitetura cliente-servidor. Os clientes DNS enviam aos servidores requisições de vários tipos, entre eles:
- Host (A)
DNS Client envia um FQDN* na requisição e o servidor DNS retorna um endereço IP formato IPv4.
* FQDN: Fully-Qualified Domain Name, nome que descreve completamente um host na estrutura DNS. Por exemplo, se o nome do host é “desktop” e o domínio “robertobraga.net”, o FQDN será “desktop.robertobraga.net”
- Host (AAAA)
DNS Client envia um FQDN na requisição e o servidor DNS retorna um endereço IP formato IPv6. Os registros do tipo AAAA tem suporte tanto no Windows 2000 Server, Windows Server 2003 e Windows Server 2008. O transporte DNS é possível, entretanto, apenas a partir do Windows Server 2003 e a funcionalidade não vem habilitada por padrão. A partir do Windows Server 2008 o suporte a IPv6 é nativo.
- Alias (CNAME)
Em uma requisição do tipo CNAME (Canonical Name), traduz-se um FQDN em outro FQDN. É utlizado para a criação de alias em servidores DNS.
- Pointer (PTR)
Registros do tipo Pointer (PTR) fazem consultas reversas no DNS. O DNS Client envia na requisição um endereço IPv4 ou IPv6 e recebe um FQDN como resposta.
- Service Location (SRV)
Em uma requisição deste tipo, o requisitante envia um serviço e respectivo protocolo e recebe como resposta uma Porta e um FQDN. É utlizado em protocolos recentes, como SIP e XMPP. É também utilizado no processo de descoberta de Domain Controllers em um domínio Active Directory.
- Mail Exchanger (MX)
A requisição passa um FQDN de nome de domínio e recebe como resposta um FQDN de servidor de correio para aquele domínio.
Zonas em um servidor DNS
O DNS utiliza-se da estrutura em forma de zonas para executar suas funções. Uma zona armazena nomes para determinado domínio. Desta forma, um mesmo servidor DNS pode ter várias zonas, cada uma correspondendo a um domínio: contoso.com, microsoft.com, robertobraga.net, por exemplo. As entradas DNS – cada uma associada a um dos tipos – estão dentro de cada zona. Importante notar que as informações são armazenadas por zona (e não por servidor).
Replicação em servidores DNS
Quanto ao tipo, as zonas podem ser Zonas de Pesquisa Direta (Forward Lookup Zones), que traduzem nomes e serviços DNS ou Zonas de Pesquisa Inversas (Reverse Lookup Zones), que traduzem IPs em nomes DNS. As zonas DNS são ainda definidas pelo tipo de replicação que estão submetidas. Quanto a este critério, uma zona pode ser Integrada ao AD, Primária (Master), Secundária (Slave) ou Stub.
O serviço DNS é tipicamente distribuído. Desta forma, obtêm-se redundância através de bases de dados para resolução de nomes disponível em vários servidores. Esta disponibilidade é permitida pela funcionalidade de replicação do serviço.
A maneira tradicional (especificada originalmente na RFC 1035) em que a replicação acontece é na direção Master -> Slave. O banco de dados em formato texto (arquivo .dns) é armazenado em um servidor DNS primário, como cópia read/write. Os outros servidores – secundários – armazenam cópias deste arquivo (read-only).
Com o Active Directory implantado no Windows 2000 e seu intenso uso do serviço DNS, um novo tipo de zona foi implementado. As Zonas Integradas do Active Directory (ou apenas Zonas Integradas) tem algumas diferenças em comparação com zonas DNS tradicionais. Em especial, as zonas se tornam objetos do Active Directory e são replicadas junto com o restante do banco de dados do AD. Outra diferença essencial é que não existem cópias secundárias da zona. Todas as cópias passam a ser read/write. E essas cópias, por sua vez, podem estar apenas em servidores DNS que sejam também Domain Controllers (DCs).
Uma Zona Stub é uma cópia de uma zona que tem a função de apenas informar quais são os servidores DNS autoritativos para a zona. Geralmente é usada para interligar infraestruturas de DNS distintas.
Funcionamento das consultas DNS
Zonas Integradas, Primárias e Secundárias são autoritativas. Isto significa que caso um servidor DNS da zona receba uma query de um DNS Client ele saberá a responder sem ter que consultar outros servidores DNS – se a consulta for para uma zona que ele é autoritativo. Desta forma se o servidor srv-dc1 é autoritativo para a zona robertobraga.net ele saberá responder uma consulta tipo A para desktop.robertobraga.net com o IP correspondente.
Se a consulta for para uma zona em que o servidor DNS não seja autoritativo (www.brasildotnet.net, host www para o domínio brasildotnet.net, por exemplo) há algumas possibilidades para a resolução correta do nome acontecer. São elas:
- Repassar a query a um forwarder, servidor DNS um nível acima;
- Repassar a query a um root hint, que são os servidores DNS raiz;
- Repassar a query a um servidor delegado para aquele namespace (caso possível apenas caso esteja sendo utilizado uma estrutura com sub-zonas)
O funcionamento de uma consulta DNS e repasse em um cenário de rede local com forwarders e com root hints desabilitados é mostrado no vídeo abaixo.













