"Domain Names Service" (DNS)Professor Adjunto do Departamento de Engenharia Informática do ISEP O serviço de nomes de domínio permite uma associação global de nomes a recursos. O serviço é implementado de forma distribuída em servidores de nomes que permitem uma gestão hierarquica segundo sequências de domínios. Os domínios constituem de uma estrutura em árvore universal, cada domínio possui um nome, concatenando ao nome de um recurso os nomes dos domínios que é necessário percorrer desde esse ramo da árvore até à raiz obtem-se uma designação universal para o recurso. Os nomes de recursos e dominíos não devem exceder 63 caracteres e o nome de domínio vazio (zero caracteres) está reservado para a raiz da árvore. Como é do conhecimento geral, a concatenação de nomes de recursos e nomes de domínios efectua-se por adição de um ponto. Exemplo: www.dei.isep.ipp.pt. As bases de dados contendo os registos de recursos ("RESOURCE RECORDS") estão organizadas por zonas, regra geral faz-se corresponder a cada domínio uma zona, contudo é possivel a subdivisão de um domínio em várias zonas. Os servidores de nomes ("NAME SERVERS") são programas servidores que detêm os registos de recursos de uma ou mais zonas, periodicamente actualizam as suas bases de dados recorrendo a ficheiros em disco local ou a outros servidores de nomes. Esta informação é conhecida por "authoritative". Os servidores de nomes também podem manter em "cache" informações sobre outras zonas das quais não são autoridade, este procedimento aumenta a eficiência do mecanismo. Esta informação é conhecida por "non-authoritative", igualmente quando um servidor de nomes que é autoridade de uma zona não consegue refrescar as suas bases de dados passa a ser "non-authoritative". Os clientes dos servidores de nomes implementam um programa de resolução de nomes ("RESOLVER"), este programa dirige pedidos das aplicações para os servidores de nomes locais. O "resolver" implementa habitualmente uma "cache" para evitar a emissão de pedidos repetidos. Por segurança, cada zona deve ser replicada em vários servidores de nomes. Um dos servidores de nomes de uma dada zona é primário (ou "master"), os restantes são secundários. Geralmente o servidor primário obtém a informação relativa à zona em ficheiros locais, enquanto os servidores secundários recorrem obrigatoriamente ao servidor primário. "RESOURCE RECORDS" (RRs)Todos os registos de recursos possuem o mesmo formato genérico: NAME comp. variável TYPE 16 bits CLASS 16 bits TTL 16 bits RDLENGTH 16 bits RDATA comp. variável O campo "NAME" contém a designação do proprietário do recurso, geralmente um nó. O campo "TTL" especifica (em segundos) o tempo de vida do registo, ou seja o tempo durante o qual se mantém válido em "cache". Este limite não se aplica aos registos sobre os quais existe autoridade "authoritative data", para estes casos são definidas politicas de refrescamento especiais. O campo "RDLENGTH" indica o comprimento em octetos do campo "RDATA". O campo "RDATA" contém um "string" que descreve o registo, o seu formato varia com o tipo de registo ("TYPE") e respectiva classe ("CLASS"). Os principais tipos de registo são os seguintes:
O valor do campo "CLASS" indica a familia de protocolos, o valor tipico é "IN" (familia de protocolos "internet"). O campo "RDATA" é usado para armazenar os dados propriamente ditos, o seu formato depende do "TIPO" de registo, para a classe "IN" e para os tipos mais comuns, os dados são:
Nota: Todos os nomes de máquinas são qualificados (incluem o domínio). Os dados dos registos SOA são os seguintes: MNAME Nome do servidor primário onde tiveram origem os RR desta zona. RNAME "Mailbox" do administrador da zona. SERIAL Numero de versão dos RR gerado pelo servidor primário. REFRESH Intervalo de refrescamento da zona. RETRY Intervalo entre tentativas (em caso de falha). EXPIRE Intervalo de tempo após o qual os dados da zona deixam de ser "authoritative". MINIMUM A valor mínimo do campo TTL para os RR exportados. O número de série gerado pelo servidor primário permite aos secundários saberam se os RR ainda estão actualizados, em cada refrescamento o servidor secundário consulta do valor SERIAL no servidor primário, os RR são carregados apenas se o valor é superior ao local. O domínio IN-ADDR.ARPAO domínio especial IN-ADDR.ARPA é usado como raiz de uma árvore contendo os endereços IP da internet, a existência deste domínio facilita a localização de endereços segundo a estruturação existente na internet. Cada octeto do endereço funciona como um sub-domínio, por exemplo: O endereço 193.136.62.3 corresponde nesta estrutura ao nome 3.62.136.193.IN-ADDR.ARPA Note-se a inversão das posições dos octetos. A utilização desta estrutura e a utilização de apontadores (RRs do tipo PTR) facilita a resolução inversa de nomes (resolução de endereços) e permite localizar "routers" de redes. Para IPv6 foi definido um dominio especial IP6.INT com funcionamento semelhante. Ficheiros de ConfiguraçãoNão existem formatos definidos para os ficheiros base de configuração do servidor de nomes, contudo a definição das RR está normalizada. Tipicamente os RR de uma zona são armazenados num ficheiro que é invocado de forma associada à respectiva zona. O formato dos ficheiros que contêm as RR está normalizado, trata-se de ficheiros de texto em que os RR possuem formatações dependentes do tipo: SOA ("Start Of Authority")Este registo define o inicio de uma zona, esta zona termina no próximo registo SOA. name [ttl] [class] SOA origin person ( serial refresh retry expire minimum ) Em "name" é especificado o nome da zona, o nome "@" pode ser usado para manter a zona anterior, por exemplo a especificada na invocação do ficheiro. O valor "serial" deve ser incrementado sempre que se procede a qualquer alteração nos RR da zona. Exemplo: @ IN SOA picasso.dei.isep.ipp.pt. root.groucho.dei.isep.ipp.pt. ( 1 ; Serial 3600 ; Refresh 300 ; Retry 3600000 ; Expire 3600 ) ; Minimum NS ("Name Server")Este registo define um servidor de nomes com autoridade sobre um domínio: domain [ttl] [class] NS server A ("Address")Este registo define um endereço IP: host [ttl] [class] A address CNAME ("Canonical Name")Este registo define um "alias" para uma máquina: alias [ttl] [class] CNAME host Em "host" será especificado o nome oficial da máquina ("Canonical Name"). HINFO ("Host Info")Este registo define informações sobre uma máquina: host [ttl] [class] HINFO hardware software Exemplo: SRI-NIC.ARPA. HINFO DEC-2060 TOPS20 UCBARPA.Berkeley.EDU. HINFO VAX-11/780 UNIX |