1 Domain Name System Protocol (DNS) José Gomes1 5571, Ernesto Ferreira2 7821 e Daniel Silva3 7997 Engenharia de Sistemas Informáticos Pós Laboral, Comunicação de Dados Escola Superior de Tecnologia Instituto Politécnico do Cávado e do Ave, Barcelos, Portugal 1 [email protected], [email protected] e [email protected] I. INTRODUÇÃO Abstract—This document is an overview of the protocol DNS1 (Domain Name System). The DNS (Domain Name System) is a service we use when we access the internet, even if we do not know it. When we type an address into a browser, it will make use of DNS to change the host name to an IP address. This is not the only function of this protocol, but it is a very simple example that proves how our life would be difficult without him, imagine if we need to remember every IP addresses of all the sites that we access every day, it would be something out of range from the most of us Index Terms—Domain Name System Protocol, DNS, Server DNS. Resumo— Este documento é uma visão geral do protocolo DNS (Domain Name System). O DNS é um serviço que todos nós usamos, quando acedemos à internet, mesmo sem o conhecermos. Quando digitamos um endereço num browser, ele irá fazer uso do DNS para trocar um endereço de um host para um endereço de IP2. Esta não é a única função deste protocolo, mas é um simples exemplo que prova o quão difícil seria a nossa vida sem ele, imaginem que tinham de memorizar todos os endereços IP de todos as páginas de internet que acedem todos os dias, seria algo impensável para a maioria de nós. A presente dissertação tem como objetivo transmitir uma visão transversal sobre os principais aspetos do Protocolo DNS. Este nos dias de hoje reveste-se de grande relevância, face há estabilidade e confiança da internet, tendo sido criado como forma de reforçar a segurança e facilidade de utilização da mesma. Com o início do crescimento exponencial da internet, na década de 80, foi necessário adotar novas metodologias de forma a massificar e disseminar a internet. O protocolo DNS nasce das necessidades acima referidas e da carência de um conjunto de métodos que automatizasse e simplificasse a comunicação entre vários hosts3. O endereço IP, até então, usado unicamente para a comunicação entre hosts necessitava de uma simplificação de modo a ser mas intuitivo para o ser humano. A título de exemplo, para aceder a uma página web no mundo da internet, estas são identificadas pelos seus nomes de domínio (domain name). No entanto, todos os hosts são também identificados por endereços IP. O endereço IP é constituído por quatro octetos, perfazendo 32 bits, a estrutura hierárquica do IP, quando examinada da esquerda para a direita dá-nos a informação acerca da localização na rede, coisa que não é possível obter apenas com o nome do host. Para o ser humano é mais simples lembrar nomes, e assim identificar os referidos hosts, mas para um router o endereço IP é mais simples de processar, pois esses cálculos são efetuados através de operações lógicas. Para o router os cálculos em binário são simples de fazer, quanto à informação a ser processada se incluísse carateres alfanuméricos, os mesmos teriam tamanho variável, o que dificultaria o processamento e a rapidez de propagação na rede. 1 DNS-Domain Name System 2 IP – Internet Protocol 3 Hosts - Computador Ligado a uma Rede - Hospedeiro 2 De grosso modo, as principais motivações para a criação do protocolo DNS, são simplificar a nomenclatura usada nas comunicações, assegurar o método de gestão das mesmas e otimizar a troca de informações de hosts entre os diversos servidores DNS dispersados pela rede de internet. O presente documento está dividido em quatro partes distintas. A primeira parte é feita uma pequena síntese na história e evolução do protocolo DNS, numa segunda parte, é descrito todos os prossupostos técnicos e funcionalidades que compõem o protocolo. Na terceira parte do documento é colocado um exemplo da aplicação do DNS na atualidade “Google DNS”, por fim é demostrado aplicações e comando de terminal que utilizem o protocolo DNS para obter informações. [1]; [2] O protocolo DNS utiliza o protocolo UDP7 e a porta 53 para comunicar. Para além de identificar um host, pode também identificar pelos apelidos que simplificam o nome do mesmo que seja demasiado complicado ou demasiado comprido. Nestas situações o DNS pode ser chamado para obter o nome do host, e também para obter o respetivo IP que corresponde ao apelido fornecido, como é o caso de alguns servidores de correio eletrónico, que possuem apelido para simplificar o seu host. O protocolo DNS pode ainda ser utilizado para distribuir a carga entre servidores web ou de correio eletrónico replicado, com maior incidência nas páginas de internet mais movimentados que rodam em vários servidores e têm endereços de IP diferentes. II. ORIGEM E EVOLUÇÃO DO PROTOCOLO O DNS foi criado devido à complexidade de traduzir os números de IP, por uma nomenclatura de mais alto nível, que as pessoas comuns conseguem recordar com facilidade. Este terá sido o ponto de apoio para o crescimento exponencial que a internet sofreu. A criação do DNS data do ano de 1983, e o seu principal mentor foi o americano Paul Mockapetris, que fez o trabalho a pedido de Jonathan Postel, uma grande personagem que esteve presente na criação da ARPANET4 (Advanced Research Projects Agency Network) e foi editor dos RFCs. Paul descreveu o sistema de nomes nas RFCs5 882 e 883, posteriormente o protocolo foi reformulado nas RFCs 1034 e 1035. A primeira implementação do DNS foi criada por um grupo de quatro estudantes da Universidade da Califórnia Berkeley. Essa implementação foi melhorada no ano seguinte, dando vida ao software que até hoje é o mais conhecido e importante servidor de domínios, o BIND6 (Berkeley Internet Name Domain). [1]; [2] B. Modo de funcionamento do DNS: Os servidores DNS são distribuídos de forma hierárquica entre vários servidores por todo o mundo, de forma que não concentre todo o processo num único servidor, o que sobrecarregaria o mesmo, tornaria o processo mais lento e mais sujeito a falhas. Os servidores DNS dividem-se em três classes, e descritos de seguida. C. Tipos de servidores de DNS: 1) Servidores de nomes raiz Existem 13 servidores de nomes de raiz no mundo, estes são os responsáveis por passar uma lista de servidores TLD8 correspondentes ao endereço IP desejado. 2) Servidores TLD (nomes de domínio de alto nível) III. DESCRIÇÃO DO PROTOCOLO Estes servidores são os responsáveis por domínios de alto nível como: .com; .net; .edu; .gov; .uk; .fr; .jp; entre outros. A. Serviços fornecidos pelo DNS: A tradução do nome de um hosts para um endereço de IP, é realizada pelo protocolo DNS, este protocolo basicamente funciona com um conjunto de servidores distribuídos hierarquicamente, que recebem o nome do host que determinado utilizador digita e devolve o endereço de IP correspondente. 3) Servidores de nomes com autoridade Estes servidores são a parte final do processo, isto é, geralmente as próprias organizações, responsáveis por passar o endereço de IP correspondente ao nome de host. 4 ARPANET - Advanced Research Projects Agency Network 5 RFC - Request for Comments 7 UDP - User Datagram Protocol BIND - Berkeley Internet Name Domain 8 TLD - Top-Level Domain 6 3 Existem ainda os servidores DNS locais, contidos em cada ISP9 (internet service provider - provedor de serviços de internet). Este não integra a hierarquia de servidores DNS, apenas repassa o nome de host e recebe o endereço IP correspondente dos servidores que integram a hierarquia. Para que um host tenha acesso a uma URL10 qualquer, como por exemplo:"www.google.com", na internet. Em primeiro lugar envia uma mensagem de requisição para o servidor de nomes local. O servidor local envia uma consulta ao DNS raiz, o qual percebe o sufixo 'com' e responde uma lista de endereços IP para o DNS local contendo servidores TLD que são responsáveis por 'com'. Em seguida, o DNS local faz requisição para um desses servidores TLD, o qual recebe o sufixo 'google.com' e envia ao DNS local o endereço IP do servidor DNS com autoridade para a Google. Finalmente, o DNS local consulta o servidor com autoridade e esse responde com o endereço do host 'www.google.com'. Assim, o DNS local responde ao host o IP do nome solicitado. a) Exemplo: www.est.ipca.pt – pt – domínio de nível de topo – ipca e est – domínios de segundo e terceiro níveis, respetivamente Fig. 1. Esquema Consulta Iterativa. Servidor responde com endereço se o souber, ou envia endereço de servidor que pode fornecer a informação pretendida – www – nome da máquina (host) Significa máquina www dentro do domínio est, dentro do domínio ipca, dentro do domínio pt. Realizado o processo relatado acima, vemos que há consultas recursivas e iterativas. Essas consultas são feitas entre o host e o DNS local. Estas consultas são recursivas pois o hospedeiro solicita ao DNS local que obtenha o mapeamento em seu nome. Enquanto as outras três consultas (DNS local com DNS raiz, TLD e autoridade) são iterativas, já que as respostas são retornadas diretamente ao DNS local. Em teoria, qualquer consulta DNS pode ser iterativa ou recursiva, porém, na prática, as consultas geralmente são feitas conforme o padrão exposto no exemplo acima. Todos os servidores DNS, podem utilizar a cache de DNS para tornar o processo mais rápido, isto é, ao realizar o pedido ao servidor, este guarda na memória a resposta correspondente. Desta forma quando a mesma requisição é feita novamente ele dará a resposta imediatamente, não necessitando fazer toda a procura novamente. Essa informação fica armazenada por um certo período de tempo, geralmente 2 dias, até ser atualizada novamente em uma outra requisição. Fig. 2. Esquema Consulta Recursiva. Servidor responde com endereço se o souber, ou encarrega-se de fazer o pedido a outro servidor e enviar a resposta final ao cliente b) 9 ISP - Internet service provider 10 URL - Uniform Resource Locator DNS reverse lookup Pesquisa em sentido contrário: com este método, sabe-se endereço IP e pretende-se saber qual o nome associado, usa-se endereço IP em sentido inverso seguido de ‘in-addr-arpa’ para IPv4, ou ‘ip6.arpa’ para IPv6. 4 c) Exemplo.: 231.231.137.193.in-addr.arpa IV. ATUALIDADE GOOGLE PIONEIRA EM DNS Servidores de raiz apontam para o RIPE11 NCC (Réseaux IP Européens Network Coordination Centre, o RIR12 (Regional Internet Registry) para a Europa), para a zona 193.in-addr.arpa. Servidor no RIPE NCC aponta para Portugal (FCCN 13), para a zona 137.193.in-addr-arpa. Servidor da FCCN aponta para o IPCA (ns.ipca.pt), para a zona 231.137.193.in-addr.arpa. Servidor ns.ipca.pt devolve ‘www.est.ipca.pt’ como resposta (nome associado ao IP 193.137.231.231. d) DNS mensagens Fig. 3. DNS da Google. Tipos de registo: A – endereço IPv4. AAAA – endereço IPv6. CNAME14 (Canonical Name) – fornece um nome alternativo (alias) para o nome pesquisado; é depois enviado um novo pedido com este nome. MX 15(Mail Exchanger) – indica o endereço do servidor de e-mail para o domínio especificado. NS16 – indica um servidor de nomes que pode ser consultado. PTR17 – utilizado em pesquisa invertida, para devolver nome associado a um endereço. SOA18 (Start of Authority) – contém meta-informação sobre a zona (nome, contacto, valores padrão para a zona). [1]; [2]; [4] O Google anunciou recentemente a passagem deste serviço a um estágio mais definitivo e apresentou também os números referentes à sua utilização. O Google utiliza os mesmos endereços de IP em qualquer parte do mundo, mas utilizando um sistema distribuído, que trata da sincronização de zonas automaticamente e de forma distribuída. Segundo Google, mais de 70% dos pedidos que são recebidos neste serviço são provenientes dos Estados Unidos. A presença em outras zonas do globo continuam a crescer e a Google instalou novos servidores em zonas que até agora não estavam cobertas com este serviço de forma correta. O empenho do Google neste serviço é tal que alargaram já o seu suporte para IPV619. Este modelo apresentado pela Google para o serviço de DNS, deu origem a uma nova proposta acerca de como o DNS pode funcionar com recurso a CDN´s20, modelo esse que está em estudo e em discussão no IETF21, esse mesmo modelo está atualmente a ser implementado por outras empresas de forma semelhante. [3] 11 RIPE- Réseaux IP Européens 12 RIR- Regional Internet Registry 13 FCCN- Fundação para a Computação Cientifica Nacional 14 CNAME- Canonical Name 15 MX- Mail Exchanger 16 NS- Name server 19 IPV6 - Internet Protocol Version 6 PTR- Pointer record 20 CDN’s - Content Delivery Network SOA- Start of Authority 21 IETF - Internet Engineering Task Force 17 18 5 V. APLICAÇÕES A. Principais Softwares Estes são alguns dos principais softwares (opensource22 ou comerciais) utilizados para se instalar e configurar um Servidor DNS: BIND NSD djbdns Unbound Microsoft DNS Dnsmasq MaraDNS B. Aplicações em linha de comandos Em Linux existem alguns comandos de terminal que usam o protocolo DNS de forma a transmitir ao utilizador as informações necessárias. De Seguida faz-se referência aos quatro principais comandos com base em terminal Linux. Host - é um utilitário simples para a realização de pesquisas de DNS. É normalmente usado para converter nomes de domínio em endereços IP e vice-versa. Quando não há argumentos o anfitrião imprime um breve resumo dos seus argumentos. Nome é o nome de domínio que está a ser observado. Também pode ser um endereço IPv4 ou um endereço IPv6, no qual o host padrão, executa uma pesquisa inversa para o endereço. Nslookup - é um comando de terminal Windows/Linux para consultar servidores de nome de domínio da Internet. Nslookup tem dois modos: interativo e não-interativo. O modo interativo permite ao utilizador consultar os servidores de nomes para obter informações sobre os vários hosts e domínios ou para imprimir uma lista de hosts num domínio. O modo não interativo é usado para imprimir apenas o nome e as informações solicitadas para uma máquina ou domínio. Dig23 - É uma ferramenta flexível para interrogar os servidores de nomes DNS. Ele executa pesquisas de DNS e exibe as respostas que são retornadas do servidor de nome (s) de domínio que foram consultados. A maioria dos administradores de DNS utilizam o dig para solucionar problemas de DNS por causa de sua flexibilidade, facilidade de uso e clareza. 22 Opensource - Software de Código Aberto 23 Dig - Domain Information Groper Apesar de dig normalmente usar argumentos, ele também tem um modo de lote de operações de leitura de pedidos de pesquisa a partir de um arquivo. Um breve resumo dos seus argumentos de linha de comando e opções é disponibilizado quando a opção-h é dada. Ao contrário das versões anteriores, o BIND 9 implementação do dig permite pesquisas múltiplas a ser emitido a partir da linha de comandos. A menos que seja dito para consultar um servidor nomes de domínio específico, o dig vai tentar cada um dos servidores listados no /etc/resolv.conf. Quando não há argumentos de linha de comandos, o dig irá realizar uma consulta NS a partir da "." (a raiz). Whois - O comando whois pesquisa nos registos de uma base de dados mantidos por vários Centros de Informação de Rede. Este permite identificar se o nome de domínio está disponível, e se não estiver indica o proprietário de um nome de domínio e outras informações com servidores NS etc. [1]; [4] VI. REFERÊNCIAS [ IBM, “ibm.com,” 04 Junho 2012. [Online]. Available: [1] http://www.ibm.com/developerworks/br/local/opensource/ dns_protocol/index.html. [Acedido em 22 Março 2013]. [ WikiversityS, “wikiversity.org,” 16 Setembro 2012. [2] [Online]. Available: http://pt.wikiversity.org/wiki/Introdu%C3%A7%C3%A3o _%C3%A0s_Redes_de_Computadores/DNS. [Acedido em 25 Março 2013]. [ Pplware, “Pplware.sapo.pt,” 25 Fevereiro 2012. [3] [Online]. Available: http://pplware.sapo.pt/informacao/dns-da-google-e-ja-omais-usado-na-internet/. [Acedido em 25 Março 2013]. [ The Internet Engineering Task Force (IETF), “rfc[4] editor.org,” [Online]. Available: http://www.rfceditor.org/search/rfc_search.php. [Acedido em 28 Março 2013].