Unidade: Delet - Escola de Engenharia - UFRGS Autores da 1ª Versão: Lucas Alves, Pedro Morgan e Vinícius Ceriotti Telefonia A – 2020/1 Revisão: Roger P. F. Hoefel, Dr. – Professor Associado E-mail: roger.hoefel@ufrgs.br Data: 04/07/2022 Versão: 04 Domain Name System (DNS)
• Atualmente a Internet é imensa. Logo, um sistema
de diretório central não pode conter todo o mapeamento de endereços IP. – Além disso, se o computador host central falhar toda a rede de comunicação entrará em colapso. • Uma melhor solução é distribuir informações entre muitos computadores ao redor do mundo. – Nesse método, o host que precisa de um mapeamento de endereços pode entrar em contato com computador mais próximo que contém as informações necessárias. Domain Name System (DNS)
• Suponha que um usuário deseja usar um software
cliente de transferência de arquivos (FTP) para acessar o servidor de transferência de arquivos em execução em um host remoto. – O usuário conhece apenas o nome do servidor de transferência de arquivos, como afilesource.com. • No entanto, o pacote TCP/IP precisa do endereço IP do servidor de transferência de arquivos para fazer a conexão. • As seis etapas descritas a seguir mapeiam o nome do host para um endereço IP: Domain Name System (DNS) 1. O usuário transmite o nome do host para o cliente de transferência de arquivos. 2. O cliente de transferência de arquivos passa o nome do host para o cliente DNS. 3. Cada computador, após a inicialização, conhece o endereço de um servidor DNS. O cliente DNS envia uma mensagem para um servidor DNS com uma consulta que fornece o nome da transferência de arquivos do servidor usando o endereço IP conhecido do servidor DNS. Domain Name System (DNS) 4. O servidor DNS responde com o endereço IP do servidor de transferência de arquivos desejado. 5. O servidor DNS do cliente passa o endereço IP para o cliente de transferência de arquivos. 6. O cliente de transferência de arquivos agora usa o endereço IP recebido para acessar o servidor de transferência de arquivos. Espaço de Nomes
• Para não ser ambíguo, os nomes atribuídos às
máquinas devem ser cuidadosamente selecionados em um espaço de nomes com controle total sobre o mapeamento entre os nomes e os endereços IP.
• Um espaço de nomes que mapeia cada endereço
para um nome exclusivo pode ser organizado de duas maneiras: simples ou hierárquico. Espaço de Nomes Plano (Flat)
• Em um espaço de nome simples, um nome é atribuído
a um endereço. • Um nome neste espaço é uma sequência de caracteres sem estrutura. • Os nomes podem ou não ter uma seção comum: se tiverem, esta seção comum não tem significado. • A principal desvantagem de um espaço de nome simples é que ele não pode ser usado em um sistema grande como a Internet, porque o espaço de nomes simples deve ser controlado centralmente para evitar ambiguidade e duplicação de endereços. Espaço de Nomes Hierárquico
• Em um espaço de nomes hierárquico, cada nome é
composto de várias partes. Por exemplo, – A primeira parte pode definir o pais. – A segunda parte pode definir a natureza da organização. – A terceira parte pode definir o nome de uma organização. – A quarta parte pode definir os departamentos da organização e assim por diante. Domain Name Space • Para ter um espaço de nome hierárquico na internet, um espaço de nomes de domínio foi projetado. • Neste projeto, os nomes são definidos em uma estrutura de árvore invertida com a raiz no topo da árvore. Rótulo (Label) • Cada nó da árvore tem um rótulo, que é uma cadeia com um máximo de 63 caracteres. • O rótulo raiz é uma string nula (string vazia). • O DNS requer que filhos de um nó (nós que ramificam do mesmo nó) tenham rótulos diferentes, o que garante a exclusividade dos nomes de domínio. Nome de Domínio • Cada nó da árvore tem um nome de domínio. Um nome de domínio completo é uma sequência de rótulos separados por pontos (.).
• Os nomes de domínio são
sempre lidos do nó até a raiz.
• O último rótulo é o rótulo da
raiz (nulo). – Isso significa que um nome de domínio completo sempre termina em um rótulo nulo, o que significa que o último caractere é um ponto porque a string nula significa nada (void). Domínio • Um domínio é uma subárvore do espaço do nome de domínio.
O nome do domínio é o nome do nó no topo da sub-árvore.
Domínios: Exemplo Distribuição do Espaço de Nomes
• As informações contidas no espaço do nome de
domínio devem ser armazenadas. No entanto é muito ineficiente e também não é confiável ter apenas em um servidor com uma quantidade tão grande de informações. – É ineficiente porque responder a solicitações de todo o mundo sobrecarrega o sistema. – Não é confiável porque qualquer falha torna os dados inacessíveis. Hierárquia de Nomes de Servidores • A solução para esses problemas é distribuir as informações entre vários computadores chamados servidores DNS. Uma maneira de fazer isso é dividir todo o espaço em vários domínios com base no primeiro nível. • Em outras palavras, deixamos a raiz independente e criamos tantos domínios (subárvores) quanto os nós de primeiro nível. – Como um domínio criado dessa maneira pode ser muito grande, o DNS permite que os domínios sejam divididos em domínios menores (subdomínios). Cada servidor pode ser responsável por um domínio grande ou pequeno. Domínio Um servidor pode ser responsável por mais de um domínio. Zona • Como a hierarquia completa de nomes de domínio não pode ser armazenada em um único servidor, ela é dividida em vários servidores: um servidor que é responsável ou tem autoridade é chamado de zona. – Podemos definir uma zona como uma parte contígua da árvore inteira. – Se um servidor aceitar a responsabilidade por um domínio e não dividir o domínio em Uma zona de DNS é uma parte do domínios menores, o "domínio" e a "zona" espaço de nomes do DNS gerenciada referem-se à mesma coisa. por uma organização ou • O servidor cria um banco de dados administrador específicos. Uma zona de DNS é um espaço chamado de arquivo de zona e mantém administrativo que permite um todas as informações para cada nó sob controle granular dos componentes esse domínio. do DNS, como os nameservers autoritativos. Zona Um arquivo de zona é um arquivo de texto sem formatação armazenado em um servidor de DNS, que contém uma representação real da zona e contém todos os registros para cada domínio dentro da zona. Os arquivos da zona sempre devem começar com um registro Start of Authority (SOA), que contém informações importantes, incluindo os dados de contato do administrador da zona. DNS na Internet
• O DNS é um protocolo que pode ser usado em
diferentes plataformas. • Na Internet, o espaço do nome de domínio (árvore) foi originalmente dividido em três seções diferentes: domínios genéricos, domínios de país e domínios inversos. – Devido ao rápido crescimento da Internet, tornou- se extremamente difícil controlar os domínios inversos, que poderiam ser usados para encontrar o nome de um host ao receberem o endereço IP. DNS na Internet Os domínios inversos agora são reprovados (consulte a RFC 3425). Portanto, nos concentramos nos : domínios genéricos e domínios de país. Domínios Genéricos • Os domínios genéricos definem os hosts registrados de acordo com seu comportamento genérico. • Cada nó na árvore define um domínio, que é um índice para o banco de dados de espaço de nomes de domínio Domínios Genéricos
• Olhando para a árvore, vemos que o primeiro nível na seção
de domínios genéricos permite diferentes rótulos possíveis. • Esses rótulos descrevem os tipos de organização listados, conforme exemplificado na tabela abaixo. Domínios Genéricos Domínios de Pais • A seção de domínios do país usa abreviações de país de dois caracteres (br, por exemplo, para o Brasil e us para os EUA). • Os segundos rótulos podem ser organizacionais ou podem ser designações nacionais mais específicas. – Os Estados Unidos da América , por exemplo, usam abreviações do estado como uma subdivisão de nós (por exemplo, ca.us). • O endereço uci.ca.us pode ser traduzido para a Universidade da Califórnia, em Irvine, no estado da Califórnia, nos Estados Unidos. Exemplo: Domínios de Nomes & Pais Domínios de Nomes & Pais: Ilustração Registrador
• Como os novos domínios são adicionados ao DNS?
– Isso é feito por meio de um registrador, um entidade credenciada pela ICANN. Um registrador, primeiro verifica se o nome de domínio solicitado é único e, em seguida, insere-o no banco de dados do DNS. Uma taxa é cobrada. • Para se registrar, a organização precisa fornecer o nome do servidor e o endereço IP do servidor. – Por exemplo, uma nova organização comercial chamada wonderful com um sevidor chamado ws e o endereço IP 200.200.200.5 precisam fornecer as seguintes informações a um dos registradores: • Nome de domínio: ws.wonderful.com • Endereço IP: 200.200.200.5 Registrador Registro de Domínio no Brasil Sobre o NIC.br O Núcleo de Informação e Coordenação do Ponto BR - NIC.br foi criado para implementar as decisões e os projetos do Comitê Gestor da Internet no Brasil - CGI.br, que é o responsável por coordenar e integrar as iniciativas e serviços da Internet no País. O NIC.br, além de braço executivo do CGI.br, tem entre suas atribuições: • o registro e manutenção dos nomes de domínios que usam o <.br> , e a distribuição de números de Sistema Autônomo (ASN) e endereços IPv4 e IPv6 no País, por meio do Registro.br; • o tratamento e resposta a incidentes de segurança em computadores envolvendo redes conectadas à Internet no Brasil, atividades do CERT.br; • ....
O Registro.br é o departamento do NIC.br responsável pelas
atividades de registro e manutenção dos nomes de domínios que usam o .br. Também executa o serviço de distribuição de endereços IPv4 e IPv6 e de números de Sistemas Autônomos (ASN) no país. Servidor Raiz
• Um servidor raiz é um servidor cuja zona consiste na
árvore inteira. • Um servidor raiz geralmente não armazena informações sobre domínios, mas delega sua autoridade a outros servidores, mantendo referências a esses servidores. – Existem vários servidores raiz, cada um cobrindo todo o espaço do nome de domínio. • Os servidores raiz são distribuídos em todo o mundo. Root Name Servers Existem atualmente 12 root name servers, com nomes na forma letter.root-servers.net, onde letter varia de A a M. • Isto não significa que existam apenas 13 servidores físicos. • Cada operador usa equipamento redundante para prover um serviço confiável mesmo na ocorrência de falha de hardware ou software. Root Name Servers
Root Server Technical Operations Association (root-servers.org)
Root Name Servers
Root Server Technical Operations Association (root-servers.org)
Top Level Domain Servers Servidores Primários e Secundários
• O DNS define dois tipos de servidores: primário e
secundário. – Um servidor primário é um servidor que armazena um arquivo sobre a zona para a qual ele é uma autoridade. • É responsável por criar, manter e atualizar o arquivo de zona. Ele armazena o arquivo de zona em um disco local. • Existe apenas um servidor de nomes primário para cada domínio ou subdomínio. – Um servidor secundário é um servidor que transfere as informações completas sobre uma zona de outro servidor (primário ou secundário) e armazena o arquivo em seu disco local. Servidores Primários e Secundários
• Nas configurações de rede de seu computador, você
pode usar dois servidores DNS, o primário e o secundário. • Quando você tentar se conectar a um site, o sistema tentará primeiro converter a URL amigável digitada num endereço IP no servidor DNS primário. • Se este servidor falhar ou estiver em manutenção, ele vai tentar no DNS secundário. – Se o secundário também não contiver o endereço IP do servidor do site que você está tentando acessar, então você verá uma mensagem de erro em seu navegador. Servidores Primários e Secundários Resolução
• Mapear um nome para um endereço é chamado de
resolução de endereço de nome. • O DNS é projetado como um aplicativo cliente- servidor. – Um host que precisa mapear um endereço para um nome ou um nome para um endereço chama um cliente DNS chamado de resolvedor. Resolução • O resolvedor acessa o servidor DNS mais próximo com uma solicitação de mapeamento. • Se o servidor tiver a informação, esta informação é fornecida para o resolvedor. Caso contrário, o servidor encaminha o resolvedor para outros servidores ou solicita que outros servidores forneçam as informações. – Depois que o resolvedor recebe o mapeamento, ele interpreta a resposta para ver se é uma resolução real ou um erro e, finalmente, entrega o resultado para o processo que o solicitou. • Uma resolução pode ser recursiva ou iterativa. Resolução Recursiva • Assumimos que um programa aplicativo em execução em um host chamado some.anet.com precisa encontrar o endereço IP de outro host chamado engineering.mcgraw-hill.com para enviar uma mensagem. – O host de origem está conectado ao ISP Anet – O host de destino é conectado à rede McGraw-Hill. Resolução Recursiva • Evento 1: O programa aplicativo no host de origem, chama o resolvedor de DNS (cliente) para que encontre o endereço IP do host de destino. O resolvedor, que não conhece esse endereço, envia a consulta para o servidor DNS local (por exemplo, dns.anet.com) em execução no site Anet ISP. • Evento 2: Assumimos que este servidor também não conhece o endereço IP do host de destino. Ele envia a consulta para um servidor DNS raiz, cujo endereço IP deve ser conhecido para esse servidor DNS local. Resolução Recursiva • Evento 3: Os servidores raiz normalmente não mantêm o mapeamento entre nomes e endereços IP, mas um servidor raiz deve pelo menos conhecer um servidor em cada domínio de nível superior (nesse caso, um servidor responsável pelo domínio .com). A consulta é enviada para esse servidor de domínio de nível superior . • Evento 4: Assumimos que esse servidor não conhece o mapeamento de endereço de nome desse destino específico, mas conhece o endereço IP do servidor DNS local na empresa McGraw-Hill (por exemplo, dns.mcgraw-hill.com). A consulta é enviada para este servidor. Resolução Recursiva • Evento 5: O servidor DNS local na empresa McGraw-Hill que conhece o endereço IP do host de destino. O endereço IP agora é enviado de volta ao servidor DNS de nível superior. • Evento 6: O endereço IP depois volta para o servidor raiz. • Evento 7: e retorna ao servidor DNS do ISP, que pode armazená-lo em cache para consultas futuras. • Evento 8: Finalmente, de volta ao host de origem. Resolução Iterativa • Na resolução iterativa, cada servidor que não conhece o mapeamento envia o IP endereço do próximo servidor de volta para o que solicitou. • Normalmente, a resolução iterativa ocorre entre dois servidores locais; o resolvedor original recebe a resposta final do servidor local. • Observe que as mensagens mostradas pelos eventos 2, 4 e 6 contêm a mesma consulta. Resolução Iterativa • No entanto, a mensagem mostrada pelo evento 3 contém o endereço IP do servidor de domínio de nível superior, • A mensagem mostrada pelo evento 5 contém o endereço IP do servidor DNS local da McGraw-Hill. • A mensagem mostrada pelo evento 7 contém o endereço IP do destino. • Quando o servidor DNS local Anet recebe o endereço IP do destino, ele o envia ao resolvedor, no evento 8. Caching • Cada vez que um servidor recebe uma consulta por um nome que não está em seu domínio, ele precisa procurar em seu banco de dados por um endereço IP do servidor. A redução desse tempo de pesquisa aumentaria eficiência. O DNS manipula isso com um mecanismo chamado cache. • Quando um servidor pede um mapeamento de outro servidor e recebe a resposta, ele armazena essas informações em sua memória cache antes de enviá-lo ao cliente. Se o mesmo ou outro cliente pedir o mesmo mapeamento, ele pode verificar sua memória cache e resolver o problema. No entanto, para informar ao cliente que a resposta é proveniente da memória cache e não de uma fonte autorizada, o servidor marca a resposta como não autoritária. • O cache acelera a resolução, mas também pode ser problemático. Se um servidor armazena em cache mapeamento por um longo período de tempo, ele pode enviar um mapeamento desatualizado para o cliente. Caching Para evitar o envio de informações desatualizadas duas técnicas são usadas.
– Primeiro, o servidor autoritário sempre adiciona informações ao
mapeamento chamado tempo de vida (TTL). • Define o tempo em segundos que o receptor servidor pode armazenar as informações em cache. Após esse período, o mapeamento é inválido e qualquer consulta deve ser enviado novamente para o servidor autoritário. – Segundo, o DNS exige que cada servidor mantenha um contador TTL para cada mapeamento que ele armazena em cache. • A memória cache deve ser pesquisada periodicamente e os mapeamentos com um TTL expirado devem ser eliminados. Registros de Recursos • As informações de zona associadas a um servidor são implementadas como um conjunto de recursos registros. Em outras palavras, um servidor de nomes armazena um banco de dados de registros de recursos. • Um registro de recurso é uma estrutura conforme mostrado abaixo: (Domain Name, Type, Class, TTL, Value)
• O campo de nome de domínio é o que identifica o registro de recurso.
• O tipo define como o valor deve ser interpretado. • A classe define o tipo de rede; estamos interessados apenas na classe IN (Internet). • O TTL define o número de segundos para o qual a informação é válida. • O valor define as informações mantidas sobre o nome de domínio válida. Registros de Recursos Tipo
• Lista de tipos comuns e como o valor é interpretado
para cada tipo. Mensagens DNS Mensagens DNS
• Para recuperar informações sobre hosts, o DNS
usa dois tipos de mensagens: consulta e resposta. Mensagens DNS • Campo de identificação: – Id da mensagem, definida pelo cliente e retornada nas respostas do servidor. Permite ao cliente fazer o casamento entre as requisições e as respostas • Campo de flag: – Define se o mensagem é uma consulta ou resposta. Também inclui status de erro. Mensagens DNS • Number of Questions – Para queries é igual a 1, com os outros campos = 0. Para answers é igual a 0. • Number of Answers: – Número de Resource Records (RRs) existentes na resposta. Mensagens DNS • A seção de perguntas consiste em um ou mais registros de perguntas. Está presente nas mensagens de consulta e resposta. • A seção de respostas consiste em um ou mais registros de recursos. Está presente apenas em mensagens de resposta. Mensagens DNS • A seção autorizadora fornece informações (nome de domínio) sobre um ou mais servidores autorizadores para a consulta. • A seção de informações adicionais fornece informações adicionais que podem ajudar o resolvedor. Encapsulamento Encapsulamento
• O DNS pode usar UDP (User Datagram Protocol) ou
TCP (Transmission Control Protocol). • Em ambos os casos, a porta conhecida usada pelo servidor é a porta 53. • O UDP é usado quando o tamanho da mensagem de resposta é menor que 512 bytes porque a maioria dos pacotes UDP tem um limite de tamanho de pacote de 512 bytes. Encapsulamento
• Se o tamanho da mensagem de resposta for maior que 512
bytes, uma conexão TCP será usada. Nesse caso, um dos dois cenários pode ocorrer: – Se o resolvedor tiver conhecimento prévio de que o tamanho da mensagem de resposta é mais de 512 bytes, ele usa a conexão TCP. Conexão TCP porque o tamanho da informação sendo transferida normalmente excede 512 bytes. – Se o resolvedor não souber o tamanho da mensagem de resposta, ele poderá usar o Porta UDP. • No entanto, se o tamanho da mensagem de resposta for maior que 512 bytes, o servidor trunca a mensagem e ativa o bit TC. • O resolvedor agora abre uma conexão TCP e repete a solicitação para obter uma resposta completa do servidor. DDNS (Dynamic DNS)
• Quando o DNS foi projetado, ninguém previu que haveria
tantos endereços. • No DNS, quando há uma alteração, como adicionar um novo host, remover um host, ou alterando um endereço IP, a alteração deve ser feita no arquivo mestre do DNS. • Estes tipos de mudanças envolvem muita atualização manual. O tamanho da Internet de hoje, não permite esse tipo de operação manual. DDNS (Dynamic DNS) • O arquivo mestre do DNS deve ser atualizado dinamicamente. • O domínio dinâmico sistema de nomes (DDNS) foi concebido para responder a essa necessidade. • No DDNS, quando uma ligação entre um nome e um endereço é determinada, a informação é enviada geralmente por DHCP (Dynamic Host Configuration Protocol) para um servidor DNS primário. O servidor primário atualiza a zona. • Os servidores secundários são notificados ativamente ou passivamente. Um servidor secundário é um servidor Um servidor primário é um servidor que que transfere as informações completas armazena um arquivo sobre a zona para a qual sobre uma zona de outro servidor ele é uma autoridade. (primário ou secundário) e armazena o arquivo em seu disco local. DDNS (Dynamic DNS)
• Na notificação ativa, o servidor principal envia uma
mensagem para o servidores sobre a mudança na zona, enquanto na notificação passiva, os servidores secundários verificam periodicamente as alterações. • Em ambos os casos, depois de ser notificado sobre a mudança, o servidor secundário solicita informações sobre a zona inteira (chamada a transferência de zona). • Para fornecer segurança e impedir alterações não autorizadas nos registros DNS, o DDNS pode usar um mecanismo de autenticação. Segurança do DNS • O DNS é um dos sistemas mais importantes na infraestrutura da Internet. Aplicativos como acesso à Web ou e-mail são muito dependente do funcionamento adequado do DNS. DNS pode ser atacado de várias maneiras Incluindo: 1. RASTREAMENTO: O invasor pode ler a resposta de um servidor DNS para encontrar a natureza ou os nomes dos sites o usuário geralmente acessa. Esse tipo de informação pode ser usado para encontrar o perfil do usuário. Para evitar esse ataque, as mensagens DNS precisam ser confidenciais. Segurança do DNS • DNS pode ser atacado de várias maneiras Incluindo: • 2. SPOOFING: O invasor pode interceptar a resposta de um servidor DNS e alterá-lo ou criar um resposta totalmente nova falsa para direcionar o usuário para o site ou domínio do atacante deseja que o usuário acesse. Esse tipo de ataque pode ser evitado usando a origem da mensagem autenticação e integridade da mensagem. • 3. DENIAL OF SERVICE: O invasor pode inundar o servidor DNS para sobrecarregá-lo ou, eventualmente, travá-lo. Este tipo de ataque pode ser evitado usando a provisão contra o ataque de negação de serviço. Para proteger o DNS, a IETF (Internet Engineering Task Force) criou uma tecnologia denominada DNS Security (DNSSEC) que fornece autenticação de origem de mensagem e integridade de mensagem usando um serviço de segurança chamada assinatura digital. DNSSEC, no entanto, não fornece confidencialidade para as mensagens DNS. Referência • Fourozan ,Behrouz. Data Communications and Networking. 5th ed. New York: McGraw-Hill, 2012.