Kathara: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
(24 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
=Kathará=
=Kathará=


O '''[https://www.kathara.org/ Kathará]''' é um ambiente para '''emulação''' de '''redes de computadores''' virtuais, disponível para ambientes Linux, Windows ou MacOS. O download da ferramenta pode ser obtido na página Web do Kathará.
O '''[https://www.kathara.org/ Kathará]''' é um ambiente para '''emulação''' de '''redes de computadores''' virtuais, baseado no uso de contêineres '''[https://www.docker.com/ Docker]'''.  


O '''Kathará''' é uma implementação em '''Python''' do '''[http://wiki.netkit.org/index.php/Main_Page Netkit]''' (descontinuado) e faz uso de contêineres '''[https://www.docker.com/ Docker]'''.
A página '''[https://github.com/KatharaFramework/Kathara/wiki Wiki do Kathará]''' apresenta vários exemplos ilustrativos, alguns dos quais descritos na sequência.


A página '''[https://github.com/KatharaFramework/Kathara/wiki Wiki do Kathará]''' apresenta vários exemplos ilustrativos, alguns dos quais descritos na sequência.
<!--==Instalação do Kathara==
 
O '''Kathara''' depende do '''[[Docker]]''' para rodar, portanto, instalar o Docker primeiro.
 
Instalação no '''Ubuntu'''<ref>https://github.com/KatharaFramework/Kathara/wiki/Linux</ref>:
*Adicionar a chave pública para obter o Kathará:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 21805A48E6CBBA6B991ABE76646193862B759810
*Adicionar o repositório do Kathará:
sudo add-apt-repository ppa:katharaframework/kathara
*Atualizar o acesso aos repositórios:
sudo apt update
*Instalar o Kathará:
sudo apt install kathara-->


==Introdução ao Kathará==
==Introdução ao Kathará==
Referência: <ref>https://github.com/KatharaFramework/Kathara-Labs/blob/master/001-kathara-introduction.pdf</ref>.
   
   
O '''Kathará''' é um ambiente para '''emulação''' de '''redes de computadores''' através da criação de '''contêineres''' '''Docker''' em uma máquina hospedeira.  
O '''Kathará''' é um ambiente para '''emulação''' de '''redes de computadores''' através da criação de '''contêineres''' '''Docker''' em uma máquina hospedeira.  
Linha 28: Linha 42:
*'''global-commands''': comandos de gerenciamento global.
*'''global-commands''': comandos de gerenciamento global.


Ver comandos em:
Comando para '''checar''' se ambiente Kathará está operando corretamente:
kathara check
 
Ver demais comandos em:
  man kathara
  man kathara


Linha 37: Linha 54:
*O diretório '''/shared''' em um dispositivo aponta para o diretório /shared de todos os dispositivos do laboratório (habilitado por ''default'').
*O diretório '''/shared''' em um dispositivo aponta para o diretório /shared de todos os dispositivos do laboratório (habilitado por ''default'').
*O diretório '''/hosthome''' em um dispositivo aponta para o diretório /home no hospedeiro (desabilitado por ''default'').
*O diretório '''/hosthome''' em um dispositivo aponta para o diretório /home no hospedeiro (desabilitado por ''default'').
Para modificar os compartilhamentos utilizar o comando:
Para modificar os compartilhamentos utilizar o comando:
  kathara settings
  kathara settings


==Rede Básica - Dispositivos criados manualmente==
:*Habilitar o compartilhamento do diretório '''/hosthome'''.


Exemplo de '''rede básica''' com dispositivos criados manualmente via terminal a partir de comandos '''v-commands''':
==Rede com dispositivos criados manualmente==
 
Exemplo de '''rede básica''' com dispositivos criados manualmente via terminal a partir de comandos '''v-commands''' <ref>https://github.com/KatharaFramework/Kathara-Labs/blob/master/Basic%20Topics/Two%20hosts/003-kathara-lab_two-hosts.pdf</ref>:


[[Arquivo:Netkit-lab1.png]]
[[Arquivo:Netkit-lab1.png]]


===Procedimentos práticos===
===Procedimentos práticos===
*Comando para '''checar''' se ambiente Kathará está operando corretamente:
kathara check


*Comandos para '''iniciar os dispositivos''' pc1 e pc2, ambos com a interface eth0 conectada ao domínio de colisão A:
*Comandos para '''iniciar os dispositivos''' pc1 e pc2, ambos com a interface eth0 conectada ao domínio de colisão A:
Linha 88: Linha 105:
  kathara wipe
  kathara wipe


==Laboratório: Rede Básica - Rede criada por arquivos de configuração==
==Rede criada com arquivos de configuração==


O Kathará permite a construção de '''estruturas de rede''' com diferentes tipos de '''dispositivos''', como '''''hosts''''', '''roteadores''' e outros, os quais são configurados por meio de '''arquivos de configuração''' e '''diretórios'''.
O Kathará permite a construção de '''estruturas de rede''' com diferentes tipos de '''dispositivos''', como '''''hosts''''', '''roteadores''' e outros, os quais são configurados por meio de '''arquivos de configuração''' e '''diretórios'''.


Exemplo de '''rede básica''' construída com comandos '''Kathará l-commands''':
Exemplo de '''rede básica''' construída com comandos '''Kathará l-commands''' <ref>https://github.com/KatharaFramework/Kathara-Labs/blob/master/Basic%20Topics/Static%20routing/004-kathara-lab_static-routing.pdf</ref>:


[[Arquivo:Netkit-lab1.png]]
[[Arquivo:Netkit-lab1.png]]
Linha 130: Linha 147:
:Pára rede
:Pára rede


==Laboratório: Redes interligadas por roteador==
==Arquivos Kathara com exemplos prontos==
 
[https://drive.google.com/drive/folders/1u7MdyU2C48c-DuyVy_dYRYpPsn9o3W21?usp=drive_link Exemplos prontos]
Exemplo de '''redes interligadas por roteador''' construída com comandos '''Kathará l-commands''':
 
[[Arquivo:Kathara-lab2.png]]
 
;Hierarquia de arquivos e diretórios para os scripts do laboratório:
 
lab.conf
pc1.startup
pc2.startup
r1.startup
pc1/
pc2/
r1/
 
Conteúdo dos arquivos:
 
lab.conf
  pc1[0]=A
  r1[0]=A
  r1[1]=B
  pc2[0]=B
 
pc1.startup
  ifconfig eth0 192.168.0.1/24 up
 
pc2.startup
  ifconfig eth0 192.168.1.2/24 up
 
r1.startup
  ifconfig eth0 192.168.0.2/24 up
  ifconfig eth1 192.168.1.1/24 up
 
Iniciar rede do laboratório:
kathara lstart
 
Verificar '''tabelas de roteamento''' com '''route''':
*pc1, pc2 e r1:
route
 
Definir '''roteador default''' com '''route add''' manualmente em cada dispositivo:
*pc1:
route add default gw 192.168.0.2 dev eth0
*pc2:
route add default gw 192.168.1.1 dev eth0
:Verificar novamente as '''tabelas de roteamento''' .
:Obs: Rotas estáticas e o roteador padrão podem ser incluídas nos arquivos .startup.
 
Testar conectividade com '''ping''':
*pc1 -> pc2:
ping 192.169.1.2
*pc2 -> pc1:
ping 192.169.0.1
 
Verificar rota com '''traceroute''':
*pc1 -> pc2:
traceroute 192.169.1.2
 
Remover rede do laboratório:
kathara lclean
 
==Laboratório: Protocolo ARP==
 
Laboratório para verificação do funcionamento do protocolo ARP utilizando de '''redes interligadas por roteador''':
 
[[Arquivo:Kathara-ARP.png]]
 
;Hierarquia de arquivos e diretórios para os scripts do laboratório:
 
lab.conf
pc1.startup
pc2.startup
r1.startup
pc1/
pc2/
r1/
 
Conteúdo dos arquivos:
 
lab.conf
  pc1[0]=A
  pc2[0]=A
  r1[0]=A
  r1[1]=B
  pc3[0]=B
 
pc1.startup
  ifconfig eth0 192.168.0.1/24 up
  route add default gw 192.168.0.3 dev eth0
 
pc2.startup
  ifconfig eth0 192.168.0.2/24 up
  route add default gw 192.168.0.3 dev eth0
 
pc3.startup
  ifconfig eth0 192.168.1.10/24 up
  route add default gw 192.168.0.20 dev eth0
 
r1.startup
  ifconfig eth0 192.168.0.20/24 up
  ifconfig eth1 192.168.1.1/24 up
 
Iniciar rede do laboratório:
kathara lstart
 
===Protocolo ARP===
 
O '''protocolo ARP''', permite encontrar o endereço físico a partir do endereço IP da máquina alvo. Para tal, o protocolo usa um mecanismo de difusão (''broadcast'') na rede local, enviando uma solicitação a todas as máquinas da rede, sendo que a máquina alvo responde indicando o par '''endereço IP/endereço físico'''.
 
;Memória ''cache'': Para melhorar a performance do protocolo ARP, cada máquina possui uma '''memória ''cache''''' com as últimas consultas realizadas, evitando múltiplos ''broadcasts''.
 
Verificação da tabela '''arp''' (memória ''cache'') no pc1:
arp
 
'''Ping''' em dispositivo da mesma rede:
ping 192.168.0.2
 
Verificação da tabela '''arp''' no pc1:
arp
 
'''Ping''' em dispositivo da outra rede:
ping 192.168.2.10
 
Verificação da tabela '''arp''' no pc1:
arp
 
===Captura de pacotes ARP===
 
Reiniciar a rede para limpar as tabelas ARP:
kathara lclean
kathara lstart
 
Inicie captura de '''pacotes arp''' no pc2 usando '''tcpdump''':
tcpdump arp -e -i eth0
:arp: captura somente pacotes arp
:-e: mostra endereço físico do enlace
 
Teste a conectividade com '''ping''' pc1 -> pc2 (mesma rede):
:No pc1 execute:
ping 192.168.0.2
:Verifique no pc2 as mensagens arp trocadas e as correspondências entre endereços IP e endereços físicos.
 
Teste a conectividade com '''ping''' pc1 -> pc3 (outra rede):
:No pc1 execute:
ping 192.168.1.10
:Verifique no pc2 as mensagens arp trocadas e as correspondências entre endereços IP e endereços físicos.
 
Verifique no roteador r1 e nos demais dispositivos as tabelas '''arp'''.


==Laboratórios: Roteamento Estático e Dinâmico==
==Outros exemplos de laboratórios==


Veja exemplos de redes com '''roteamento estático e dinâmico''' em '''[[Kathara: Roteamento|Kathará: Roteamento]]'''.
*'''[[Kathara: Protocolo ARP|Protocolo ARP]]'''
*'''[[Kathara: Servidor Web|Servidor Web]]'''
*'''[[Kathara: Roteamento|Roteamento estático e dinâmico]]'''


==Referências==
==Referências==

Edição das 19h17min de 21 de novembro de 2024

Kathará

O Kathará é um ambiente para emulação de redes de computadores virtuais, baseado no uso de contêineres Docker.

A página Wiki do Kathará apresenta vários exemplos ilustrativos, alguns dos quais descritos na sequência.


Introdução ao Kathará

Referência: [1].

O Kathará é um ambiente para emulação de redes de computadores através da criação de contêineres Docker em uma máquina hospedeira.

Cada contêiner pode ser configurado como um dispositivo de rede específico e pode desempenhar diferentes papeis, como host, roteador, switch etc.

Dispositivos de rede

Cada dispositivo de rede emulado possui um as seguintes características:

  • console,
  • memória,
  • sistema de arquivos,
  • interfaces de rede.

Através das interfaces de rede os dispositivos são conectados a um domínio de colisão virtual e podem se comunicar com outros dispositivos.

Comandos

O Kathará apresenta três tipos de comandos, utilizados em um terminal:

  • v-commands: permitem criar e configurar um dispositivo via terminal.
  • l-commands: permite criar um ambiente com vários dispositivos conectados em rede através de um script.
  • global-commands: comandos de gerenciamento global.

Comando para checar se ambiente Kathará está operando corretamente:

kathara check

Ver demais comandos em:

man kathara

Compartilhamento de arquivos

O Kathará permite o compartilhamento de arquivos entre dispositivos e o hospedeiro.

Há duas maneiras de compartilhar arquivos entre dispositivos e o hospedeiro:

  • O diretório /shared em um dispositivo aponta para o diretório /shared de todos os dispositivos do laboratório (habilitado por default).
  • O diretório /hosthome em um dispositivo aponta para o diretório /home no hospedeiro (desabilitado por default).

Para modificar os compartilhamentos utilizar o comando:

kathara settings
  • Habilitar o compartilhamento do diretório /hosthome.

Rede com dispositivos criados manualmente

Exemplo de rede básica com dispositivos criados manualmente via terminal a partir de comandos v-commands [2]:

Procedimentos práticos

  • Comandos para iniciar os dispositivos pc1 e pc2, ambos com a interface eth0 conectada ao domínio de colisão A:
kathara vstart --name pc1 --eth 0:A
kathara vstart --name pc2 --eth 0:A
Cada comando ativará a console do respectivo dispositivo.
  • Configuração das interfaces de rede dos dispositivos com ifconfig:
Acessar a console de cada dispositivo para configurar as interfaces de rede:
  • pc1:
ifconfig eth0 192.168.0.1/24 up
  • pc2:
ifconfig eth0 192.168.0.2/24 up
Verificar as configurações em cada dispositivo:
ifconfig
  • Teste de conectividade com ping:
  • pc1 -> pc2:
ping 192.168.0.2
  • Captura de pacotes com tcpdump:
  • pc2:
tcpdump icmp
Captura pacotes icmp (ping) na interface eth0 (default).
  • Visualizar a captura de forma gráfica com wireshark no hospedeiro:
  • Ativar o compartilhamento do /hosthome com o comando:
kathara settings
  • Capturar no pc2 pacote e gravar saída em arquivo:
tcpdump icmp -w /hosthome/cap1.ncap
  • Abrir arquivo no hospedeiro com wireshark.
  • Remover dispositivos:
kathara vclean --name pc1
kathara vclean --name pc2
  • Limpar todos os dispositivos e domínios de colisão:
kathara wipe

Rede criada com arquivos de configuração

O Kathará permite a construção de estruturas de rede com diferentes tipos de dispositivos, como hosts, roteadores e outros, os quais são configurados por meio de arquivos de configuração e diretórios.

Exemplo de rede básica construída com comandos Kathará l-commands [3]:

Hierarquia de arquivos e diretórios para configuração do laboratório
lab.conf      #Configura a estrutura de rede
pc1.startup   #Configura dispositivo pc1
pc2.startup   #Configura dispositivo pc2
pc1/          #Diretório com arquivos de configuração para pc1
pc2/          #Diretório com arquivos de configuração para pc2
Conteúdo dos arquivos
lab.conf      
  pc1[0]=A
  pc2[0]=A
Configura rede simples com domínio de colisão A
pc1.startup   
  ifconfig eth0 192.168.0.1/24 up
Configura pc1 e seu endereço IP
pc2.startup   
  ifconfig eth0 192.168.0.2/24 up
Configura pc2 e seu endereço IP
pc1/          
pc2/
Diretórios que permitem passar arquivos de configuração para a estrutura de diretórios dos dispositivos.
Comando para iniciar e parar rede do laboratório
kathara lstart
Inicia rede
kathara lclean
Pára rede

Arquivos Kathara com exemplos prontos

Exemplos prontos

Outros exemplos de laboratórios

Referências


Evandro.cantu (discussão) 17h07min de 25 de janeiro de 2021 (-03)