Arquitetura TCP/IP Parte IV – Mapeamento de endereços IP em endereços físicos (ARP) Fabrízzio Alphonsus A. M. N. Soares Tópicos ● Problema de resolução de endereço ● Mapeamento direto ● Associação dinâmica ● ARP (Address Resolution Protocol) – Formato do pacote, algoritmo e cache – Proxy ARP, ARP Probe, ARP Announcement e ARP spoofing Justificativa ● ● É necessário usar endereços (físicos) de hardware para comunicar em uma rede Aplicações usam apenas endereços Internet Exemplo genérico ● ● ● Computadores A e B na mesma rede (física) Aplicação em A gera um pacote para aplicação em B Software do protocolo em A deve usar o endereço de hardware de B ao enviá-lo um pacote, logo: – Software do protocolo precisa de um mecanismo que mapeie um endereço IP para endereço de hardware equivalente – Também é conhecido como problema de resolução de endereço Resolução de endereço ● ● ● É realizada em cada rede (física) ao longo do caminho percorrido por um pacote na Internet Duas abordagens – Mapeamento direto – Associação dinâmica Escolha depende do tipo de hardware Mapeamento direto ● Fácil de entender ● Eficiente ● ● Apenas funciona quando o endereço de hardware é menor que o endereço IP Consiste em atribuir um endereço IP que codifica o endereço de hardware Exemplo de mapeamento direto ● Hardware: ProNET (token ring) ou ARCnet (token passing) ● Endereço de hardware: 8 bits ● Supondo que a rede 200.150.50.0/24 seja usada ● ● Se uma interface tem um endereço de hardware N, o endereço IP 200.150.50.N pode ser associada à mesma Resolver um endereço IP significar extrair o endereço de hardware do último byte Associação dinâmica ● ● ● Necessária quando endereço de hardware é maior que o endereço IP (ex.: Ethernet) Permite ao equipamento A encontrar endereço de hardware do equipamento B – A sabe endereço IP de B – A sabe que B está na mesma rede física o Solução: difunde (broadcast) a consulta e obtém a resposta – Associação dinâmica é usada ao longo de apenas uma rede física por vez Address Resolution Protocol (ARP) ● ● ● Padrão para resolução dinâmica de endereços na Internet Exige suporte a difusão (broadcast) em hardware Projetado para redes locais – ARP é usado para mapear endereços dentro de uma única rede física, não entre múltiplas redes Funcionamento do ARP A X B Y A difunde uma requisição (consulta) em busca de B A X B Y B, e somente B, responde à requisição Funcionamento ARP (cont.) ● ● ● ● ● Equipamento A difunde uma requisição com o endereço IP de B Todos equipamentos na rede física recebem a difusão Apenas o equipamento B responde com seu endereço físico Equipamento A adiciona endereço físico de B à sua tabela (ARP) Equipamento A entrega diretamente o pacote para B Formato do pacote ARP ● ● HardwareType - Especifica o tipo do hardware. – Os tipos conhecidos são definidos pela RFC Assigned Numbers, que recebe uma atualização de tempos em tempos. – O hardware ethernet recebeu o número 1. Protocol Type - Especifica o tipo do protocolo ao qual o endereço lógico se refere. – A RFC Assigned Numbers especifica que o tipo deve ser o mesmo que os do MAC Ethernet. No caso do IP, 0800h. Formato do pacote ARP ● ● ● ● ● HardwareLen - Determina o comprimento em bytes do endereço de hardware (físico). ProtocolLen - Determina o comprimento em bytes do endereço de protocolo (lógico). Operation - Tipo da operação. Para o ARP, só existem duas: Pergunta e Resposta. SenderHardwareAddr - Endereço físico de quem está enviando o pacote. SenderProtocolAddr - Endereço lógico de quem está enviando o pacote. Formato do pacote ARP ● ● TargetHardwareAddr Endereço físico desejado. Na operação de request, vai em branco. (Quem responder preenche este campo) TargetProtocolAddr - Endereço lógico desejado. Formato do pacote ARP Hardware IP Exemplo: IP (versão 4) em uma rede Ethernet HARDWARE TYPE: 1 (Ethernet) PROTOCOL TYPE: 080016 (IP – versão 4) HLEN: 6 (bytes – Ethernet) PLEN: 4 (bytes – IPv4) OPERATION: 1 (requisição ARP) ou 2 (resposta ARP) Observações sobre o formato do pacote ARP ● Campos de comprimento variável, os quais dependem dos tipos dos endereços, logo o ARP pode ser usado com: – Endereço de hardware arbitrário – Endereço de protocolo arbitrário (qualquer versão do IP e até outros que não o IP) ARP: exemplo enviar datagrama (3) ARP request (4) ARP reply (1) (2) IP ARP (3) (5) Ethernet driver ARP request (Eth. broadcast) Ethernet driver Ethernet driver (4) ARP ARP IP Retenção de associações ● ● Por questões de desempenho o ARP precisa evitar o envio de uma requisição para cada pacote a ser enviado Solução: – Manter uma tabela de associações – O endereço é resolvido uma vez e usado várias Cache ARP ● Tabela ARP é implementada como uma memória cache – Entradas são adicionadas dinamicamente – Entradas “envelhecem” e são removidas ● – Minimiza entradas desatualizadas Entradas mudam dinamicamente e são atualizadas Otimizações do ARP ● Algumas operações simples podem melhorar significativamente o aproveitamento da rede com relação a pacotes ARP: – Como o pedido de ARP inclui os endereços lógico e físico do requisitante, a máquina que responde pode imediatamente guardar esta informação em seu ARP Cache, pois provavelmente precisará dela em breve. Otimizações do ARP – Como o pedido é enviado em broadcast, todas as que recebem o pacote podem aproveitar o tempo que dispenderam para analisar a informação guardando-a no seu Cache. Assim, se em algum momento for necessário falar com aquele host, a informação já estará presente. Isso é bastante viável pois as tabelas de ARP não são muito grandes, em geral. Otimizações do ARP – Assim que uma máquina é inicializada na rede, esta pode gerar um ARP broadcast anunciando seu endereço para as outras, adiantando o processo de detecção, e consequentemente, a comunicação. Isso só é vantajoso se a comunicação for iniciada pelo host remoto, pois em caso contrário, de qualquer forma, será necessário um ARP para pedir o endereço remoto. Algoritmo para processamento de requisições ARP 1.Extrai o par de informações da origem (IPA,HwA) e atualiza a entrada na tabela ARP se esta existir 2.Se o destino é o próprio equipamento então: 2.1. Adiciona o par (IPA,HwA) à tabela ARP se esta entrada não estiver presente 2.2. Preenche o destino com endereço de hardware 2.3. Troca as entradas de origem e destino 2.4. Muda o campo OPERATION para resposta (2) 2.5. Envia a resposta ARP de volta a origem Características do algoritmo ● Se A envia uma requisição ARP para B, B adiciona informação sobre A (item 2.1.) – ● B provavelmente enviará um pacote para A Se A envia uma requisição ARP para B, outros equipamentos também recebem informação sobre A e podem atualizá-la, mas não a adicionam (item 1.) – Evita que o cache fique “entupido” sem necessidade Encapsulamento ARP ● A mensagem ARP é transportada dentro da parte reservada ao pacote de rede em um quadro, ou seja, sua área de dados Proxy ARP ou promiscuous ARP ● ● ● Usado para que múltiplas redes físicas compartilhem um único prefixo de rede Funcionamento: – Um proxy (geralmente, um roteador) responde aos pedidos ARP em nome de outro equipamento – Utiliza uma tabela especial para encaminhar os pacotes para a rede correta Exemplos de uso: VPN, switches nível-3 e suporte a estações móveis (home agent) Proxy ARP – exemplo ● ● Host A precisa enviar pacotes para host C e D – Seu prefixo de rede indica que esses equipamentos estão na mesma rede física, logo a é uma entrega direta – No entanto, há um roteador separando A de C e D Solução: implementar proxy ARP no roteador ARP Probe ● ● Requisição ARP com configuração especial: – SENDER IP: 0.0.0.0 – SENDER HA: endereço HA do host de origem – TARGET IP: endereço IP do host de origem – TARGET HA: 00:00:00:00:00:00 – Significado da requisição: “Este é o endereço IP que eu desejo utilizar” Útil para verificar se o endereço IP já está em uso, com intuito de escolher outro Gratuitous ARP ou ARP Announcement ● ● ● Requisição ARP com configuração especial: – SENDER IP: endereço IP do host de origem – SENDER HA: endereço HA do host de origem – TARGET IP: endereço IP do host de origem – TARGET HA: 00:00:00:00:00:00 – Significado da requisição: “Este é o endereço IP que eu estou utilizando agora” Útil para verificar se o endereço IP já está em uso, com intuito de indicar um conflito Permite atualizar mais rapidamente tabelas – Por exemplo, se a interface de um host é substituída, o HA muda, mas o IP pode continuar ARP spoofing ou ARP poisoning ● ● Consiste em enviar mensagens ARP falsas, assumindo ser outro host Embora usado para ataques do tipo man-in-themiddle e denial-of-service, tem usos legítimos: – Redirecionamento de hosts para fins de registro ou autenticação/autorização – Serviços de redundância em rede ● Exemplo: um servidor X falha e outro servidor Y assume se anunciando com o mesmo IP, porém com outro HA ARP spoofing – exemplo