Laboratório Wireshark – ARP/ICMP1 Neste laboratório, vamos explorar aspectos do protocolo ICMP e do ARP: As mensagens ICMP geradas pelo programa Ping; As mensagens ICMP geradas pelo programa traceroute; O formato e conteúdo de uma mensagem ICMP; As mensagens de requisição e resposta do protocolo ARP. Antes de realizar este laboratório, caso deseje, você pode consultar o material ICMP na seção 4.4.3 do livro (Kurose). Nós apresentamos este laboratório no contexto do sistema operacional Linux. No entanto, é muito simples para traduzir o laboratório para um ambiente Windows. 1. ARP, ICMP e Ping Vamos começar a nossa aventura ICMP, capturando os pacotes gerados pelo programa Ping. Você deve se lembrar de que o programa Ping é uma ferramenta simples que permite que qualquer pessoa (por exemplo, um administrador de rede) verigique se um host está “vivo” ou não. O programa Ping no host de origem envia um pacote para o endereço IP de destino; se o alvo está ativo, o programa Ping no host de destino responde enviando um pacote de volta para o host de origem. Como você deve ter adivinhado (Este laboratório é sobre ICMP), ambos os pacotes de Ping são pacotes ICMP. Com o mesmo tráfego gerado, vamos investigar o protocolo ARP. O Address Resolution Protocol é usado para fazer um mapeamento entre um endereço IP e o endereço físico (MAC) da interface associada ao endereço IP de interesse. Esse endereço físico é usado para preencher o campo ‘Destino’ na camada de enlace. Faça o seguinte: • • • • • 1 Vamos começar, abrindo um terminal. Inicie o sniffer Wireshark, e inicie captura de pacotes (para facilitar a atividade, é interessante não usar outros aplicativos que gerem tráfego na rede). Execute o comando ‘ip neighbour flush all’ para limpar o cache da tabela ARP do seu computador. Para certificar que a operação foi bem sucedida, verifique com o comando ‘ip neighbour show’ se a tabela ARP está vazia. Execute o comando ping ‐c 10 www.ust.hk (um servidor Web em Hong Kong University of Science and Technology). O argumento "-c 10" indica que 10 mensagens de Ping devem ser enviadas. Quando o programa Ping terminar, pare a captura de pacotes no Wireshark. Baseado em “Supplement to Computer Networking: A Top-Down Approach, 6th ed., J.F. Kurose and K.W. Ross” e na sua versão em português obtida em http://www.quixada.ufc.br/atslands/attachments/redes/ICMP.pdf No final do experimento, seu terminal deve ficar parecida com a Figura 1. Neste exemplo, a origem estava em Goiânia e o host de destino está em Hong Kong. A partir desta janela, vemos que o programa Ping fonte enviou 10 pacotes de consulta e recebeu 10 respostas. Note também que, para cada resposta, a fonte calcula o tempo de ida e volta (RTT), que para os 10 pacotes é, em média, 369 ms. Figura 1: Saída no terminal após executar o comando Ping A Figura 2 apresenta uma imagem da saída no Wireshark, depois que o filtro "icmp" foi aplicado. Note que a lista de pacotes mostra 20 pacotes: as 10 consultas Ping enviados pela fonte e as 10 respostas Ping recebidos pela fonte. Observe também que o endereço IP da fonte é um endereço privado (atrás de um NAT); o endereço IP do destino é o do servidor Web em HKUST. Figura 2: Saída Wireshark para o programa de Ping com IP expandido. A Figura 3 mostra a mesma mensagem ICMP mas ampliou as informações de protocolo ICMP na janela do conteúdo do pacote. Observa-se que este pacote ICMP é do tipo 8 e Código 0: o chamado pacote ICMP "echo request". Além disso, note que este pacote ICMP contém um checksum, um identificador, e um número de sequência. Figura 3: Captura Wireshark do pacote ping com o protocolo ICMP expandido. Para o relatório: Você deve entregar uma captura de tela da janela do terminal semelhante ao da Figura 1. No relatório, sempre que relevante, ao responder uma pergunta, você deve inserir uma figura mostrando o pacote(s) dentro do trace que você usou para responder a pergunta. Na figura, destaque a informação relevante para a pergunta. Você deve responder às seguintes perguntas: 1. Qual é o endereço IP de sua máquina? Qual é o endereço IP do host de destino? 2. Procure a requisição ARP enviada pelo seu computador. Explique o endereço MAC de destino no cabeçalho Ethernet. 3. Ainda na primeira requisição ARP, o endereço IP de interesse é o mesmo do endereço IP de destino informado na questão 1? Explique. 4. Encontre a resposta ARP para a sua requisição. Quais os endereços MAC de origem e destino no cabeçalho Ethernet? 5.Nos pacotes de resposta ping (Echo reply), qual é o endereço de origem no cabeçalho Ethernet? Ele muda ou não? Explique. 6. Examine um dos pacotes de solicitação de ping enviados pelo seu host. Quais são os números de tipo ICMP e de código? Que outros campos que este pacote ICMP tem? Quantos bytes estão nos campos de soma de verificação, número sequencial e identificador? 7. Examine o correspondente pacote de Ping resposta. Quais são os números de tipo ICMP e de código? Que outros campos que este pacote ICMP tem? Quantos bytes estão nos campos de soma de verificação, número sequencial e identificador? 2. ICMP e Traceroute Vamos agora continuar a nossa investigação ICMP, capturando os pacotes gerados pelo programa traceroute . Você deve se lembrar que o programa traceroute pode ser usado para descobrir o caminho que um pacote leva da fonte ao destino. Traceroute é implementado de diferentes maneiras em Unix/Linux/ MacOS e no Windows . No laboratório, usaremos o ambiente Linux. No Linux, a fonte envia uma série de pacotes UDP para o destino pretendido, utilizando um número de porta de destino improvável. Para ambos os sistemas operacionais, o programa envia as três primeiras requisições com TTL = 1 , as três seguintes com TTL = 2, e assim por diante . Lembre‐se que um roteador irá diminuir o valor TTL de um pacote que passa pelo roteador. Quando um pacote chega a um roteador com TTL = 1, o roteador envia um pacote de erro ICMP de volta para a fonte. O que devemos fazer: • • • • Vamos começar por abrir um terminal. Inicie o sniffer Wireshark, e comece Wireshark captura de pacotes. Execute o comando traceroute www.inria.fr Quando o programa traceroute terminar pare a captura de pacotes no Wireshark. Perecebemos que, para cada valor de TTL, o programa de origem envia três pacotes de teste. Traceroute mostra o RTT para cada um dos pacotes de teste, bem como o endereço IP (e possivelmente o nome) do roteador que retornou a mensagem excedeu TTL ICMP. Verifique um pacote retornado por um roteador. Note que este pacote de erro ICMP contém muitos mais campos do que as mensagens Ping ICMP. Para o relatório Para esta parte do laboratório, você deve entregar uma captura de tela do terminal com a saída do comando traceroute. No relatório, sempre que relevante, ao responder uma pergunta, você deve inserir uma figura mostrando o pacote(s) dentro do trace que você usou para responder a pergunta. Na figura, destaque a informação relevante para a pergunta. Responda às seguintes perguntas: 8. Qual é o endereço IP do host de destino alvo? 9. Examine o pacote com mensagem de erro ICMP. Ele tem mais campos do que o pacote de eco ICMP. O que está incluído nesses campos? 10. Consulte a saída do comando traceroute. Há um link cujo atraso é significativamente maior do que os outros? Na base dos nomes dos roteadores, pode supor a localização dos dois roteadores no final desta ligação? 11. Examine os últimos três pacotes ICMP recebidos pelo host de origem. Esses pacotes são diferentes dos pacotes de erro ICMP? Por que são diferentes? Obs: essa questão é válida se os três últimos pacotes forem respondidos pelo host de destino alvo. Caso o host indicado no roteiro não tenha sido alcançado com traceroute, tente com outro servidor mais próximo (e.g. sites institucionais no Brasil) até que tenha êxito. Divirta-se Acesse os sites http://traceroute.monitis.com/ e http://www.yougetsignal.com/tools/visualtracert/ . Tente vários destinos (Europa, Ásia e etc.) e verifique que, ocasionalmente, o caminho entre dois pontos é bem menos lógico que o esperado.