Você está na página 1de 65

PROTOCOLOS DE APLICAÇÃO

CLIENTE-SERVIDOR: DNS
PARTE V

Disciplina: ENG04458 – Telefonia A


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.

Você também pode gostar