Curso Básico de DNS Domain Name System Índice DNS – Domain Name System Histórico O que é DNS Como Funciona Delegação Tipos de Servidores Resource Records – Tipos de Registros Resolução de Nomes Resolução Reversa Recursividade Histórico Necessidade de mapeamento de nomes para endereços de rede desde a ARPAnet (década de 1970) Arquivo hosts.txt continha toda a informação necessária a respeito do mapeamento dos nomes para endereços IP de todos os hosts da rede (semelhante ao arquivo /etc/hosts.txt do Unix). Arquivo mantido pelo SRI-NIC (Stanford Research Institute - Network Information Center) e distribuído aos administradores da ARPAnet por FTP. Histórico Problemas detectados com a solução baseada no arquivo hosts.txt: Tráfego e carga de CPU: o suporte ao tráfego na rede decorrente do processo de atualização e a carga de CPU da máquina que mantinha o arquivo de hosts se tornaram cada vez mais difíceis. Conflito de nomes de hosts: não era possível existir dois hosts com o mesmo nome no arquivo, mesmo sendo de instituições diferentes. O NIC tinha poderes para designação de endereços IP únicos, mas não tinha qualquer autoridade sobre os nomes dos hosts. Consistência: manter a consistência do arquivo hosts.txt era quase impossível. Histórico O sucesso da ARPAnet determinou o fracasso do arquivo hosts.txt. Administradores da ARPAnet buscam um sucessor para o hosts.txt, onde a administração deve ser local e os dados devem estar disponíveis globalmente. Paul Mockapetris foi o responsável por desenhar a arquitetura do novo sistema. Em 1984, lança as RFCs 882 e 883 (obsoletadas pelas RFCs 1034 e 1035), descrevendo o DNS (Domain Name System). O que é DNS O DNS é um banco de dados distribuído. A árvore de domínios que constitui o banco de dados do DNS é denominada DNS name space (espaço de nomes de domínio). O que é DNS Os dados de cada segmento do banco de dados são disponibilizados em toda a rede através de um esquema cliente-servidor. A parte servidor do esquema cliente-servidor é executada pelos name servers, que contém informações sobre os segmentos (zonas). Os clientes são chamados resolvers e enviam aos name servers as consultas de nomes para a porta destino 53 UDP (ou TCP, que não é muito utilizado). O componente que permite acesso dos clientes ao serviço DNS é denominado name resolver. Sua implementação não é feita via um programa específico (isto é, não existe um “cliente DNS” específico) e sim por rotinas de acesso das aplicações que necessitam resolver nomes em endereços de rede. Fazer a consulta de resolução de nomes, interpretar as respostas e retornar aos programas as informações solicitadas são funções do resolver. Como Funciona A estrutura do banco de dados do DNS é similar ao sistema de arquivos do Unix, desenhado como uma árvore invertida com o nó raiz (root node) no topo. No Unix, o nó raiz é identificado com uma barra (/) . No DNS, é um nó nulo (null) representado como um par de aspas (“”) ou na notação textual como um ponto (.). Como Funciona Cada nó é, por sua vez, a raiz de uma nova “subárvore” que pertence à árvore completa. Cada uma dessas “sub-árvores” representa um segmento do banco de dados do DNS (equivalente a um diretório do Unix) que é chamada de domínio. Cada domínio no DNS (bem como um diretório no Unix) pode ser dividido em subdomínios (subdiretórios no Unix). Todo domínio terá uma identificação única representada pela seqüência de nomes desde o nó raiz até o próprio nó, com cada nome separado do outro por um ponto. Cada nó da árvore pode conter até 63 caracteres e a árvore de nomes pode ter até 127 níveis de profundidade. A notação da árvore do banco de dados do DNS é invertida em relação ao sistema de arquivos do Unix. br net usr local telemar bin rms imake rms.telemar.net.br /usr/local/bin/imake Como Funciona Cada domínio pode ser administrado por uma organização diferente, permitindo a distribuição de responsabilidades ao longo da rede. As organizações podem administrar seus respectivos domínios através da delegação pela autoridade competente no seu país. Autoridade nos EUA: InterNIC (http://www.internic.net) Autoridade no Brasil: FAPESP (http://registro.br) Organização dos domínios dividida em: Institucionais: englobam os equipamentos em função da natureza da instituição que os mantém. Exemplos: com, edu, gov, org. Geográficos: definidos em função da disposição geográfica das instituições. Exemplo: br, ar, uk, jp. Como Funciona Top-Level Domains (TLD): domínios superiores do tipo institucionais para instituições registradas diretamente no InterNIC e domínios geográficos para países, delegados para instituições locais responsáveis por eles. Atualmente, também são conhecidos por generic Top-Level Domains (gTLD). Originalmente, 7 TLDs: com – Empresas comerciais edu – Instituições de ensino e pesquisa mil – instituições militares int – Organizações internacionais gov – Instituições governamentais org – Instituições não comerciais net – Empresas provedoras de conectividade Um oitavo TLD chamado arpa foi originalmente utilizado pela ARPAnet para transição do arquivo de hosts para o DNS e atualmente é utilizado para resoluções reversas. FQDN (Fully Qualified Domain Name): nome de domínio completo de um host na Internet, reflete toda a hierarquia desde onde o domínio está registrado até o TLD. Como Funciona “” root Top Level Domains Second Level Domains arpa com edu gov mil net au ... br in-addr berkeley com 200 ce telemar 222 waxwin www generic domains 0 34 34.0.222.200.in-addrp.arpa ... uk ... zw telemar.com.br www.telemar.com.br (FQDN) country domains Delegação A descentralização da administração do DNS é obtida através do conceito de delegação. A administração de um domínio pode ser dividida em subdomínios e cada subdomínio pode ser delegado a outra organização. Os name servers (servidores de nomes) geralmente contêm informações completas a respeito de uma zona, que podem ser obtidas através de um arquivo local ou de outro name server. Tipos de Servidores Os servidores de nomes podem ser classificados como: Autoritativos Cache-Only Fowarders Os servidores autoritativos podem ser de dois tipos: servidores primários (primary master) e servidores secundários (secondary master). Os servidores primários de uma zona obtêm os dados dessa zona de um arquivo local. Os servidores secundários (também conhecidos como slave name servers) de uma zona obtêm os dados dessa zona de outro servidor de nomes que tem autoridade sobre essa zona, chamado servidor master (master server). Geralmente, os servidores master são servidores primários mas nada impede que um servidor secundário obtenha os dados de um outro servidor secundário. Tipos de Servidores Tanto o servidor primário quanto o secundário respondem com autoridade (authoritative answer) pelas zonas que têm em sua configuração. O servidor secundário contém uma cópia dos arquivos de zona do servidor primário. Quando um servidor secundário é iniciado, lê os arquivos de backup da zona e verifica com o primário se houve alguma modificação (consultando o serial number da zona) e, em caso afirmativo, busca os dados da zona. Esse processo é chamado de transferência de zona (zone transfer) e utiliza a porta 53 TCP. A diferença entre um servidor primário e um servidor secundário diz respeito a administração dos servidores, já que os dados de uma zona só precisam ser atualizados no primário (pois a atualização da zona é transmitida via transferência de zona para o secundário). Para consultas, todos os dois têm a mesma importância, respondendo com autoridade pela zona. Os arquivos utilizados pelo servidor primário para carregar os dados de uma zona são denominados arquivos de zona. Tipos de Servidores Os servidores do tipo Cache-Only não têm autoridade sobre nenhuma zona (exceto, se configurado, pela 0.0.127.in-addr.arpa). Quando uma consulta a um nome é feita e sua resposta ainda não está no cache do servidor, é preciso resolvê-lo através de consultas recursivas a servidores autoritativos. Uma vez recebida a resposta, ela é armazenada em cache. Dessa forma, a próxima consulta para o mesmo nome será respondida diretamente ao cliente, sem necessidade de consultas recursivas para encontrar a resposta (desde que o tempo de vida (TTL) do registro ainda não tenha expirado). TTL (Time To Live): valor que o administrador da zona configura que indica por quanto tempo um servidor de nomes pode manter os registros referentes a sua zona em cache. Quando o TTL de um registro expira, o servidor de nomes deve descartar o dado em cache e buscá-lo novamente nos servidores autoritativos da zona consultada. Se uma zona tem seus registros atualizados freqüentemente, a melhor opção é usar um TTL baixo, porém a carga nos servidores autoritativos para a zona será maior, pois as consultas dos servidores cache também serão mais freqüentes. Tipos de Servidores Os servidores do tipo Forwarder encaminham as consultas de resolução de nomes para outros servidores. O recurso de forwarding pode ser aplicado para o servidor de nomes ou apenas para determinadas zonas. Quando aplicado para o servidor de nomes (que passa a ser trabalhar no modo Forwarder-Only), toda consulta para esse servidor é encaminhada para outros servidores. Quando aplicado apenas para determinadas zonas, apenas as consultas referentes a essas zonas serão encaminhadas para outros servidores Tipos de Servidores Os servidores do tipo Forwarder ainda podem ser utilizados para aumentar a segurança da rede interna, quando utilizados com o recurso de um Bastion Host. O bastion host é um servidor de nomes que geralmente é colocado em uma DMZ, com conectividade à Internet. Todas as consultas dos servidores de nomes internos são encaminhadas para o bastion host, através do recurso de forwarding. Dessa forma, o único host da rede que pode se comunicar com os servidores de nomes da Internet é o bastion host. Resource Records – Tipos de Registros Os Resource Records (RR’s) contêm as informações dos dados de uma zona. Os tipos mais comuns de RR’s são: A - Address: mapeia um hostname para um enredeço IP (resolução direta). CNAME – Canonical Name: mapeia um alias (apelido) para um hostname com RR do tipo A. MX – Mail Exchanger: indica um ou mais servidores de e-mail que receberão mensagens pelo domínio. NS – Name Server: especifica os servidores de nome autoritativos para o domínio. PTR – Pointer Record: mapeia um endereço IP para um hostname (resolução reversa). SOA – Start Of Authority: indica o início da zona e deve estar no início do arquivo de zona. Define valores de zona tais como o serial number e o TTL. Resolução de Nomes Os servidores de nomes podem fornecer informações não apenas sobre as zonas das quais têm autoridade, bastando buscar pela árvore de domínios do DNS as informações de zonas das quais não têm autoridade. Esse processo é chamado resolução de nomes. Root Name Servers: contêm informações dos servidores de nomes que têm autoridade sobre cada TLD. Em uma consulta para resolução de qualquer endereço, os root servers informam o nome e o endereço dos servidores de nomes que têm autoridade sobre o domínio de nível mais alto ao qual pertence o domínio desejado. Os servidores de nome dos domínios mais altos fornecem, então, o nome e o endereço dos servidores de nomes do domínio de segundo nível ao qual pertence o domínio desejado. Cada servidor de nomes fornece a informação necessária para chegar “mais perto” da resposta até que um deles saiba a resposta para a consulta do endereço. Resolução de Nomes Processo de resolução de nomes para o endereço girigiri.gbrmpa.gov.au Resolução de Nomes Os root name servers são extremamente importantes, uma vez que se não há informação no cache do servidor de nomes, a resolução de nomes começa por eles. Se todos os root name servers ficarem indisponíveis por um longo período de tempo, toda resolução de nomes na Internet falhará. Atualmente, existem 13 root name servers disponíveis no mundo. Resolução Reversa Além da necessidade de resolução de nomes para endereços IP, existe o caso contrário, onde uma vez conhecido um endereço IP é necessário obter o nome do host associado. Esse processo é utilizado tanto por servidores quanto por administradores que necessitam conhecer quem acessa seus serviços. A implementação dessa resolução requer uma estrutura de zonas de autoridade e domínios totalmente independente daquela usada para as demais informações. A solução foi a criação de uma parte do espaço de nomes de domínio que usasse os endereços IP como nome dos nós. No espaço de nomes de domínio da Internet, essa porção é o domínio in-addr.arpa. Os nós do domínio in-addr.arpa são nomeados por números de 0 a 255, separados por pontos. O domínio in-addr.arpa pode ter até 256 subdomínios, cada um correspondendo a valores possíveis do primeiro octeto de um endereço IP. Cada subdomínio pode ter até 256 subdomínios, representando o segundo octeto de um endereço IP e assim sucessivamente, até o quarto octeto. Resolução Reversa O processo de resolução reversa é semelhante ao processo de resolução de nomes, com as consultas recursivas inicialmente direcionadas para os servidores autoritativos da zona in-addr.arpa, até a resposta final. Normalmente o DNS trata nomes de domínio reverso até os limites de uma classe C. Existe a possibilidade de configurar servidores de nomes para que seja possível a administração de zonas de domínio reverso correspondentes a subredes de classe C. Essa configuração denominada delegação de autoridade de reverso de subredes. Recursividade As consultas de nomes podem ser recursivas ou não recursivas. Uma consulta recursiva requer um processo de resolução do servidor de nomes onde ele repete as consultas a servidores remotos e seguindo as referências dadas até a resposta final. Nas consultas não recursivas, a resposta dada informa apenas quais servidores respondem o nome e o endereço dos servidores de nomes que têm autoridade sobre o domínio de nível mais alto ao qual pertence o domínio desejado. Os servidores de nome podem ser configurados para responder a consultas recursivas e não recursivas. Conhecendo mais o DNS As primeiras RFC’s a descreverem o DNS são: 1033 (Domain Administrators Operations Guide), 1034 (Domain Names--Concepts and Facilities) e 1035 (Domain Names--Implementation and Specification). Após essas RFC’s dezenas de outras foram lançadas, muitas vezes atualizando ou tornando obsoletas as já existentes. Para informações complementares a respeito das RFC’s do DNS, consulte http://www.dns.net/dnsrd/rfc.