Laboratório Wireshark – ARP/ICMP1

Propaganda
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.
Download