Mudanças entre as edições de "RDC60807"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 230: Linha 230:
 
=====Etapa 2 -- <span style="color: rgb(0, 128, 0);" data-mce-style="color: #008000;">Tarefa</span>=====
 
=====Etapa 2 -- <span style="color: rgb(0, 128, 0);" data-mce-style="color: #008000;">Tarefa</span>=====
  
# <span style="color: rgb(0, 128, 0);" data-mce-style="color: #008000;">Abra o Wireshark em modo captura, num terminal faça um "ping" para um site conhecido (você pode usar o nome: www.ifsc.edu.br por exemplo). </span>
+
# <span style="color: rgb(0, 128, 0);" data-mce-style="color: #008000;">Abra o Wireshark em modo captura. </span>
 +
##Abra um terminal e faça um "ping" para um site conhecido (você pode usar o nome: www.ifsc.edu.br por exemplo).
 +
##Aguarde duas ou três respostas ao ping.
 
##Pare o ping.
 
##Pare o ping.
 
##Pare a captura de pacotes no Wireshark.
 
##Pare a captura de pacotes no Wireshark.

Edição das 10h31min de 18 de maio de 2021

  • Esta página é dedicada a descrição de roteiros de experimentos que tem por objetivo o fortalecimento de conceitos relacionados à disciplina de Redes de Computadores do curso técnico em Telecomunicações do IFSC.
  • Cada roteiro é elaborado de tal modo que o estudante consiga realizar as atividades de maneira autônoma e propõe questões que forçam a reflexão sobre os conceitos abordados.
  • Para realizar os roteiros em casa deve-se utilizar o VirtualBox e uma máquina virtual pré-configurada com todo o ferramental necessário que pode se baixada aqui:
    1. Baixe e instale o VirtualBox;
    2. Baixe a máquina virtual e salve em um diretório qualquer de sua máquina;
    3. Acesse o diretório onde salvou o arquivo Redes.ova e dê duplo clique sobre o mesmo;
    4. Irá abrir um janela do VirtualBox com a opção de Importar Appliance Virtual, deixe todas as opções padrão e clique em Importar;
    5. Irá abrir outra janela do VirtualBox: Importando Appliance...;
    6. Ao terminar sua máquina virtual estará pronta para uso. Usuário: aluno, senha: aluno.
  • Caso possua o Ubuntu já instalado em sua máquina, instale somente o Imunes com o seguinte procedimento (testado para Ubuntu 18.04 ou 20.04)
    • Abra um terminal de digite, um a um, os seguintes comandos:
      sudo apt install openvswitch-switch docker.io xterm wireshark \
          make imagemagick tk tcllib util-linux
      git clone https://github.com/imunes/imunes.git
      cd imunes
      sudo make install
      sudo imunes -p
      sudo imunes &
      
    • Habilitando o navegador Firefox nas máquinas Imunes:
      sudo apt install socat
      sudo apt-get_imunes install firefox-esr socat
      


Página principal da disciplina

Conceitos Básicos de Rede e Ferramentas Básicas de Trabalho

Objetivos

Após este laboratório o aluno deverá ser capaz de:

  • Verificar a configuração de interfaces de rede de um hospedeiro usando a ferramenta ifconfig, identificando:
    • O endereço de hardware da interface (endereço MAC);
    • O endereço IPv4 e IPv6 da Interface com as suas máscaras de rede;
  • Testar a conectividade entre dois hospedeiros usando a ferramenta ping e ganhar insight em relação aos atrasos na rede;
  • Observar a rota de pacotes IP entre dois hospedeiros usando a ferramenta traceroute;
  • Capturar pacotes de uma interface usando a ferramenta wireshark.
  • Analisar pacotes ICMP gerados pelo ping identificando:
    • o encapsulamento de pacotes,
    • as camadas de protocolos envolvidas
    • os endereços em cada camada;
    • o funcionamento básico de um protocolo (ICMP - echo request/echo reply), ganhando insight em relação as entidades de protocolos comunicantes.

Material e Pré-condições

  • Virtualbox com Máquina Virtual com a Appliance Redes instalado ou Ubuntu instalado em dual-boot.
  • Software para recortar janela da tela do computador.
  • Editor de texto para fazer relatório.

Roteiro de atividades

Você deve fazer um documento no editor de texto com os recortes de tela e comentários conforme a seguir. Anote claramente a PARTE (etapa) e o número da etapa que está sendo documentado.

Parte 1: Observando interfaces do sistema com ifconfig

O aplicativo ifconfig pode ser utilizado para visualizar a configuração ou configurar uma interface de host em redes TCP/IP. Se nenhum argumento for passado na chamada do ifconfig, o comando mostra a configuração atual de cada interface de rede.

NOTA: o ifconfig está sendo substituído pelo comando ip. A última versão do Ubuntu já não traz mais o ifconfig por default.

Consultar as páginas man ifconfig do Linux para maiores detalhes sobre o funcionamento deste aplicativo, o qual permite: *ativar/desativar a interface,

  • configurar o endereço IP,
  • definir o tamanho da MTU,
  • redefinir o endereço de hardware se a interface suporta,
  • redefinir a interrupção utilizada pelo dispositivo, entre outros.

Através do comando ifconfig' pode-se observar os resultados:

 
$ ifconfig 
eth0      Link encap:Ethernet  Endereço de HW 64:51:06:1a:f3:da  
          inet end.: 172.18.18.14  Bcast:172.18.63.255  Masc:255.255.192.0
          inet6 2804:7f5:f380:d3:1df2:5187:d2f7:6f3b  prefixlen 64  scopeid 0x0<global>
          inet6 2804:7f5:f380:d3:6869:8a08:762:83d7  prefixlen 64  scopeid 0x0<global>
          inet6: fe80::6651:6ff:fe1a:f3da/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:415237 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:118109 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:1000 
          RX bytes:364658695 (364.6 MB) TX bytes:18315199 (18.3 MB)
          IRQ:18 

lo        Link encap:Loopback Local  
          inet end.: 127.0.0.1  Masc:255.0.0.0
          inet6: ::1/128 Escopo:Máquina
          UP LOOPBACK RUNNING  MTU:65536  Métrica:1
          pacotes RX:6688 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:6688 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0 
          RX bytes:1057934 (1.0 MB) TX bytes:1057934 (1.0 MB) 
  • O sistema em questão possui duas interfaces de rede: eth0 e lo
  • Link encap:Ethernet: Configuração da interface Ethernet 0 (primeira)
  • Endereço de HW 64:51:06:1a:f3:da: É o endereço da placa de rede, camada 2
  • inet end.: 172.18.18.14 Bcast:172.18.63.255 Masc:255.255.192.0: Endereço IPv4 associado a interface, seu respectivo endereço de broadcast e mascara de rede
  • inet6 2804:7f5:f380:d3:1df2:5187:d2f7:6f3b prefixlen 64 scopeid 0x0<global></global>: Endereço IPv6 de escopo global, ou roteável.
  • inet6 2804:7f5:f380:d3:6869:8a08:762:83d7 prefixlen 64 scopeid 0x0<global></global>: Endereço IPv6 de escopo global, ou roteável.
  • inet6: fe80::6651:6ff:fe1a:f3da/64 Escopo:Link: Endereço IPv6 de escopo local gerado por autoconfiguração
  • UP BROADCAST RUNNING MULTICAST: Significa que a interface está ativa (UP), responde a requisições de broadcast (pode ser desabilitado no kernel) e também pode ser associada a tráfegos multicast
  • MTU: 1500: Maximum Transfer Unit – Tamanho máximo do pacote suportado pelo enlace que é do tipo Ethernet
  • Os demais parâmetros são estatísticas da respectiva interface, como por exemplo, pacotes transmitidos, recebidos etc
  • A interface lo: Qualquer tráfego que um computador envie em uma rede loopback é endereçada ao mesmo computador. O endereço IP mais usado para tal finalidade é 127.0.0.1 no IPv4 e ::1 no IPv6. O nome de domínio padrão para tal endereço é localhost. Em sistemas Unix, a interface loopback é geralmente chamada de lo ou lo0.

TAREFA: Agora utilize o comando ifconfig para verificar o estado de suas interfaces e responda:

  1. Quantas e quais interfaces de rede sua máquina possui? Liste.
  2. Quais são os endereços da camada 2 atribuído as mesmas? De onde o sistema obteve esses endereços?
  3. Quais são os endereços IPv4? De onde o sistema obteve esses endereços?
  4. Suas interfaces tem IPv6 configurado? Qual o endereço e escopo dos mesmos?
  5. Use o link Verificando a estrutura do endereço IP para explorar a estrutura do seu endereço IPv4. Recorte e cole no relatório.

Parte 2: Testando a conectividade com o ping

Aplicativo ping permite a um usuário verificar se um host remoto está ativo. É bastante utilizado para detectar problemas de comunicação na rede. O ping está baseado no envio de mensagens de solicitação de eco (echo request) e de resposta de eco (echo reply). Estas mensagens fazem parte do rol de mensagens do protocolo ICMP, que é um protocolo de reportagem de erros, a ser estudado mais tarde, componente do protocolo IP.

O ping é um dos principais comandos a disposição do administrador de rede no sentido de verificar a conectividade em rede. Por exemplo, se houver resposta de um ping a partir de um servidor remoto, significa que a máquina local está rodando corretamente o TCP/IP, o enlace local está funcionando corretamente, o roteamento entre a origem e o destino está operando, e por fim, a máquina remota também está rodando corretamente o TCP/IP.

Consultar as páginas man do ping para verificar as possibilidades de uso deste aplicativo.

Exemplo 1:

 
ping 191.36.0.94
PING 191.36.0.94 (191.36.0.94) 56(84) bytes of data.
64 bytes from 191.36.0.94: icmp_seq=1 ttl=60 time=2.46 ms
64 bytes from 191.36.0.94: icmp_seq=2 ttl=60 time=0.513 ms
64 bytes from 191.36.0.94: icmp_seq=3 ttl=60 time=0.573 ms
64 bytes from 191.36.0.94: icmp_seq=4 ttl=60 time=0.558 ms
^C
--- 191.36.0.94 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.513/1.026/2.463/0.830 ms
  1. No exemplo foram enviados quatro pacotes ICMP, cada um com um número de seqüência (icmp_seq), os quais foram recebidos com sucesso com o tempo de viagem assinalado (time)
  2. Cada pacote tem ainda um tempo de vida (ttltime to live), o qual é decrementado em cada roteador, sendo o pacote descartado quando chegar a zero; isto evita pacotes perdidos na rede
  3. Quando o ping é interrompido (CRTL-C), uma estatística é apresentada indicando o percentual de pacotes transmitidos, recebidos e perdidos
  4. O tempo de viagem (rttround trip time) mínimo (min), médio (avg) e máximo (max) é calculado, assim como o desvio padrão (mdev)

TAREFA: Como exercício envie ping para diferentes hosts e compare os tempos de resposta (documente recortando e colando as telas). Faça ping:

  1. no endereço local de loopback;
  2. servidores externos:
    www.ifsc.edu.br
    www.uol.com.br
    www.nasa.com
    
    e explique as possíveis diferenças entre os tempos de resposta dos ping realizados.
  3. Consulte as páginas man e teste o ping com os parâmetros abaixo e descreva suas funcionalidades:
    1. -c count
    2. -i intervalo
    3. -s packetsize
    4. -t ttl (para um site distante inicie com 1 e vá incrementando, observe as mensagens)
  4. Observe que também é possível realizar ping em endereços no formato IPv6, por exemplo:
     ping6 tele.sj.ifsc.edu.br
    
  5. Tente o ping6 para outros sites.

Parte 3: Verificando rotas com o traceroute

O traceroute é capaz de traçar uma rota aproximada entre dois hosts. Este comando usa mensagens ICMP. Para determinar o nome e o endereço dos roteadores entre a fonte e o destino, o traceroute na fonte envia uma série de datagramas IP ordinários ao destino. O primeiro datagrama tem o TTL (time to live – tempo de vida) igual a 1, o segundo 2, o terceiro 3, e assim por diante, e inicia temporizadores para cada datagrama. Quando o enésimo datagrama chega ao enésimo roteador, este verifica que o tempo de sobrevida do datagrama acaba de terminar. Pelas regras do IP, o datagrama é então descartado e uma mensagem ICMP de advertência tempo de vida excedido é enviada a fonte com o nome do roteador e seu endereço IP. Quando a resposta chega de volta a fonte, a mesma calcula o tempo de viagem em função dos temporizadores.

O traceroute envia datagramas IP encapsulados em segmentos UDP a um host destino. Todavia escolhe um número de porta destino com um valor desconhecido (maior que 30000), tornando improvável que o host destino esteja usando esta porta. Quando o datagrama chega ao destino uma mensagem ICMP porta inalcançável é gerada e enviada a origem. O programa traceroute precisa saber diferenciar as mensagens ICMP recebidas – tempo excedido e porta inalcançável – para saber quando a rota foi concluída.

  1. Exemplo:
    sudo traceroute -I 200.135.37.65
    traceroute to 200.135.37.65 (200.135.37.65), 30 hops max, 60 byte packets
     1  192.168.1.1 (192.168.1.1)  0.225 ms  0.216 ms  0.368 ms
     2  172.18.0.254 (172.18.0.254)  1.236 ms  1.235 ms  1.343 ms
     3  hendrix.sj.ifsc.edu.br (200.135.37.65)  1.331 ms  1.313 ms  1.414 ms
    

O exemplo mostra a rota dos pacotes entre um computador do Lab. Redes (192.168.1.1) e o servidor hendrix (200.135.37.65). Observe que para cada roteador são realizados três amostras de tempo de ida e volta. Veja pelo mapa da rede do Campus São José que entre estes dois computadores, sistemas finais, existem dois roteadores intermediários, máquina do professor e Switch camada 3 (VLANs).

  1. Tarefa: Traçar a rota dos pacotes entre seu computador (no caso a VM) e diferentes hosts:
    1. servidor tele.sj.ifsc.edu.br do IFSC
    2. outros servidores.
  2. Explique as possíveis diferenças entre os tempos de resposta de cada uma das amostras do traceroute
  3. Explique as linhas com o caractere *.
  4. Observe que também é possível realizar traceroute em endereços no formato IPv6, por exemplo:
     traceroute -I6 ipv6.br
    
  5. Tente o traceroute no IPv6 para outros sites.

Parte 4: Usando as ferramentas ping, ifconfig e traceroute em um cenário com o imunes

Elaborar um cenário com 2 PCs interligados por dois roteadores,: Rede básica

  1. Execute um ifconfig em cada PC e nos roteadores. Discuta os resultados no caso dos roteadores.
  2. Execute um ping do PC1 em direção ao PC2;
  3. Execute um ping modicando o retardo de um dos links para 50ms;
  4. Execute um traceroute entre PC1 e PC2 e explique o resultado obtido quando comparado com a figura.

Wireshark e encapsulamento

Objetivos

Após este laboratório o aluno deverá ser capaz de:

  • utilizar a ferramenta wireshark para captura de pacote:
    • funções básicas de filtragem na captura e no display;
    • verificação de estruturas de pacotes;
  • consolidar o conceito de protocolo e de camadas de protocolos através da análise de troca de pacotes com ping e traceroute usando:
    • as janelas com detalhes dos pacotes e encapsulamentos;
    • a opção de flow graph para visualizar as trocas de mensagens.

Sobre o analisador Wireshark

O analisador de pacotes exibe os conteúdos de todos os campos dentro de uma mensagem de protocolo. Para que isso seja feito, o analisador de pacotes deve “entender” a estrutura de todas as mensagens trocadas pelos protocolos.

Suponha que estamos interessados em mostrar os vários campos nas mensagens trocadas pelo protocolo HTTP na Figura 5. O analisador de pacotes entende o formato dos quadros Ethernet, e desta forma pode identificar o datagrama IP dentro de um quadro. Ele também entende o formato do datagrama IP, para que ele possa extrair o segmento TCP dentro do datagrama IP. Ele entende a estrutura do segmento TCP, para que possa extrair a mensagem HTTP contida no segmento. Finalmente, ele entende o protocolo HTTP e então, por exemplo, sabe que os primeiros bytes de uma mensagem HTTP contém a cadeia “GET”, “POST” ou “HEAD”.

Nós utilizaremos o sniffer Wireshark (http://www.wireshark.org) para estes laboratórios, o que nos permite exibir os conteúdos das mensagens sendo enviadas/recebidas de/por protocolos em diferentes camadas da pilha de protocolos. Tecnicamente falando, Wireshark é um analisador de pacotes que pode ser executado em computadores com Windows, Linux/UNIX e MAC.

É um analisador de pacotes ideal para nossos laboratórios, pois é estável, tem uma grande base de usuários e é bem documentado incluindo um guia de usuário (http://www.wireshark.org/docs/wsug_html/), páginas de manual (http://www.wireshark.org/docs/man-pages/), e uma seção de FAQ detalhada (http://www.wireshark.org/faq.html), funcionalidade rica que inclui a capacidade de analisar mais que 500 protocolos, e uma interface com o usuário bem projetada. Ele funciona em computadores ligados a uma Ethernet para conectar-se à Internet, bem como protocolos ponto a ponto, tal como PPP.

OBS: Se o wireshark estiver instalado em sua máquina, para chamá-lo a partir de um terminal deve fazer:

 sudo wireshark

ETAPA 1: Identificando os campos da interface do Wireshark

Quando você executar o programa Wireshark, a interface com o usuário exibida na Figura abaixo aparecerá. Inicialmente, nenhum dado será apresentado nas janelas. A interface do Wireshark tem seis componentes principais:

  1. Os menus de comandos são localizados no topo da janela. Por enquanto, interessam apenas os menus File e Capture. O menu File permite salvar dados de capturas de pacotes ou abrir um arquivo contendo dados de capturas de pacotes previamente realizadas, e sair da aplicação. O menu Capture permite iniciar uma captura de pacotes;
  2. A barra de ferramentas contém os comandos de menu que são mais frequentemente utilizados. Há atalhos para abrir ou salvar dados de captura de pacotes e para iniciar ou parar uma captura de pacotes;
  3. Abaixo da barra de ferramentas, está o campo de filtragem de pacotes exibidos. Nele podem ser digitados nome de protocolo ou outra informação apresentada na janela de listagem de pacotes. Apenas os pacotes que correspondem ao filtro são exibidos;
  4. A janela de listagem de pacotes apresenta um resumo de uma linha para cada pacote capturado, incluindo o número do pacote (atribuído pelo Wireshark; este não é o número do pacote contido no cabeçalho de qualquer protocolo), o tempo que o pacote foi capturado, os endereços fonte e destino do pacote, o tipo de protocolo, e informação específica do protocolo contida no pacote. A lista de pacotes pode ser ordenada conforme qualquer uma destas categorias clicando no nome de uma coluna correspondente. O campo tipo do protocolo lista o protocolo de mais alto nível que enviou ou recebeu este pacote, i.e., o protocolo que é a fonte ou o último sorvedouro para este pacote;
  5. A janela de detalhes de cabeçalho de pacotes fornece detalhes sobre o pacote selecionado na janela de listagem de pacotes. Para selecionar um pacote, basta clicar sobre ele com o botão esquerdo do mouse na janela de listagem de pacotes. Os detalhes apresentados incluem informações sobre o quadro Ethernet e o datagrama IP que contém o pacote. A quantidade de detalhes exibida pode ser expandida ou contraída. Se o pacote foi carregado sobre TCP ou UDP, detalhes correspondentes também são apresentados, os quais também podem ser contraídos ou expandidos. Finalmente, detalhes sobre o protocolo de mais alto nível que enviou ou recebeu este pacote também são apresentados;
  6. A janela de conteúdo de pacotes mostra o conteúdo inteiro do quadro capturado, nos formatos ASCII e hexadecimal.

Figura 3 - Interface com o usuário do Wireshark

ETAPA 2 - Verificando pacotes do ping (ICMP REQUEST/REPLY)

Etapa 1
  1. Inicie o navegador web;
  2. Inicie o Wireshark. Inicialmente as janelas estarão vazias, pois não há captura de pacotes em progresso;
  3. Para iniciar uma captura de pacotes, selecione o menu Capture e depois Interfaces. Provavelmente sua interface de rede será a eth0.
  4. Isso faz com que a janela de interfaces de rede disponíveis seja apresentada (Figura 4);
    Figura 4 - Interfaces de rede no Wireshark
  5. O botão Start da interface eth0 deve ser selecionado. Na Figura 4, no Wireshark foi selecionada a interface wlan;
  6. Como nada está acontecendo na rede, a janela apresenta o conteúdo vazio;
  7. Execute um comando ping (endereço na saída da nossa rede - ver aula anterior):
      ping 200.237.201.153
    
  8. Ao voltar para a janela do Wireshark, houve a captura de todos os pacotes envolvidos no process;
  9. Antes de continuar, vamos parar a captura de pacotes e trabalhar com o que temos. Basta clicar em Capture e depois em Stop;
  10. Para testar as capacidades de filtragem, vamos inserir a cadeia “icmp” (sem as aspas e em minúsculo) no especificação do filtro de exibição e depois selecionar Apply (ou Aplicar). Observe que somente os pacotes envolvidos no ping estão sendo mostrados. Os resultados obtidos devem ser similar a tela mostrada na Figura 5.
  11. Selecione a primeira mensagem ECHO REQUEST: as informações dos cabeçalhos do quadro Ethernet, do datagrama IP, do pacote ICMP aparecem na janela de cabeçalhos de pacotes. É possível ver os detalhes, expandido ou comprimindo os itens com um clique na seta ao lado deles.
  12. Selecione uma mensagem ECHO REPLY. Analise o pacote: endereço fonte, endereço destino etc;
  13. Saia do Wireshark.

Figura 5 - Tela Wireshark - Ping

Etapa 2 -- Tarefa
  1. Abra o Wireshark em modo captura.
    1. Abra um terminal e faça um "ping" para um site conhecido (você pode usar o nome: www.ifsc.edu.br por exemplo).
    2. Aguarde duas ou três respostas ao ping.
    3. Pare o ping.
    4. Pare a captura de pacotes no Wireshark.
    5. Aplique um filtro icmp no display. Recorte a tela observada e indique os pacotes ICMP ECHO REQUEST. Discuta quem são os endereços IP e MAC que aparecem no pacote IP e Frame Ethernet.
    6. Aplique um comando Flow Graph e mostre a troca de mensagens do ping através de um recorte da tela;
      • Statistics >> Flow Graph >> Abrirá uma nova janela com várias informações >> Aplique o filtro ICMP Flows na base da janela. Salve esta tela no relatório.
      • Feche esta janela.
    7. Crie um filtro para mostrar somente pacotes icmp que saem da sua máquina (ver filtro ip.src). Faça um recorte das telas de criação do filtro (mostrando o filtro).