Kathara: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
(58 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.
 
<!--==Instalação do Kathara==
 
O '''Kathara''' depende do '''[[Docker]]''' para rodar, portanto, instalar o Docker primeiro.


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 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 13: Linha 27:
Cada contêiner pode ser configurado como um '''dispositivo de rede''' específico e pode desempenhar diferentes papeis, como '''''host''''', '''roteador''', '''''switch''''' etc.
Cada contêiner pode ser configurado como um '''dispositivo de rede''' específico e pode desempenhar diferentes papeis, como '''''host''''', '''roteador''', '''''switch''''' etc.


Cada '''dispositivo de rede''' emulado possui um '''console''', '''memória''', '''sistema de arquivos''' e '''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.
===Dispositivos de rede===


O '''Kathará''' apresenta três tipos de '''comandos''':
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.
*'''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.
*'''l-commands''': permite criar um ambiente com vários dispositivos conectados em rede através de um script.
*'''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


;Compartilhamento de arquivos entre dispositivos e o hospedeiro: Há duas maneiras de compartilhar arquivos entre dispositivos e o hospedeiro:
===Compartilhamento de arquivos===
:*O diretório '''/shared''' em um dispositivo aponta para o diretório /shared de todos os dispositivos do laboratório (habilitado por ''default'').
O Kathará permite o '''compartilhamento de arquivos''' entre dispositivos e o hospedeiro.
:*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:
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
  kathara settings


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


Exemplo de '''rede básica''' construída com comandos '''Kathará 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:
===Procedimentos práticos===


*Comando para checar se ambiente Kathará está operando corretamente:
*Comandos para '''iniciar os dispositivos''' pc1 e pc2, ambos com a interface eth0 conectada ao domínio de colisão A:
kathara check
 
*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 pc1 --eth 0:A
  kathara vstart --name pc2 --eth 0:A
  kathara vstart --name pc2 --eth 0:A
::Cada comando ativará a console do respectivo dispositivo.
::Cada comando ativará a console do respectivo dispositivo.
   
   
*Configuração das interfaces de rede dos dispositivos com '''ifconfig''':
*'''Configuração das interfaces de rede''' dos dispositivos com '''ifconfig''':
::Acessar a console de cada dispositivo para configurar as interfaces de rede:
::Acessar a console de cada dispositivo para configurar as interfaces de rede:
:*pc1:
:*pc1:
Linha 54: Linha 82:
  ifconfig
  ifconfig


*Teste de conectividade com '''ping''':
*'''Teste de conectividade''' com '''ping''':
:*pc1 -> pc2:
:*pc1 -> pc2:
  ping 192.168.0.2
  ping 192.168.0.2


*Captura de pacotes com '''tcpdump''':
*'''Captura de pacotes''' com '''tcpdump''':
:*pc2:
:*pc2:
  tcpdump icmp
  tcpdump icmp
Linha 70: Linha 98:
:*Abrir arquivo no hospedeiro com wireshark.
:*Abrir arquivo no hospedeiro com wireshark.


*Remover dispositivos:
*'''Remover dispositivos''':
  kathara vclean pc1
  kathara vclean --name pc1
  kathara vclean pc2
  kathara vclean --name pc2


*Limpar todos os dispositivos e domínios de colisão:
*'''Limpar todos os dispositivos e domínios de colisão''':
  kathara wipe
  kathara wipe


==Laboratório: Rede Básica==
==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''':
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]]


;Hierarquia de arquivos e diretórios para os scripts do laboratório:
;Hierarquia de '''arquivos''' e '''diretórios''' para configuração do laboratório:


  lab.conf
  lab.conf     #Configura a estrutura de rede
  pc1.startup
  pc1.startup   #Configura dispositivo pc1
  pc2.startup
  pc2.startup   #Configura dispositivo pc2
  pc1/
  pc1/         #Diretório com arquivos de configuração para pc1
  pc2/
  pc2/         #Diretório com arquivos de configuração para pc2


Conteúdo dos arquivos:
;Conteúdo dos arquivos:


  lab.conf
  lab.conf    
   pc1[0]=A
   pc1[0]=A
   pc2[0]=A
   pc2[0]=A
:Configura rede simples com domínio de colisão A


  pc1.startup
  pc1.startup  
   ifconfig eth0 192.168.0.1/24 up
   ifconfig eth0 192.168.0.1/24 up
:Configura pc1 e seu endereço IP


  pc2.startup
  pc2.startup  
   ifconfig eth0 192.168.0.2/24 up
   ifconfig eth0 192.168.0.2/24 up
:Configura pc2 e seu endereço IP


Iniciar rede do laboratório:
  pc1/         
  kathara lstart
  pc2/
 
:Diretórios que permitem passar arquivos de configuração para a estrutura de diretórios dos dispositivos.
Remover rede do laboratório:
  kathara lclean
 
==Laboratório: Redes interligadas por roteador==
 
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/pc1.startup
pc2/pc2.startup
r1/r1.startup
 
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:
;Comando para iniciar e parar rede do laboratório:
  kathara lstart
  kathara lstart
:Inicia rede


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
  kathara lclean
:Pára rede


==Arquivos Kathara com exemplos prontos==
[https://drive.google.com/drive/folders/1u7MdyU2C48c-DuyVy_dYRYpPsn9o3W21?usp=drive_link Exemplos prontos]


==Laboratório: Roteamento estático e dinâmico==
==Outros exemplos de laboratórios==
 
Exemplo de '''rede de computadores''' com '''roteamento estático e dinâmico''' construída com comandos '''Kathará l-commands''':
 
[[Arquivo:Kathara-lab3.png]]
 
;Hierarquia de arquivos e diretórios para os scripts do laboratório:
 
lab.conf
pc1/pc1.startup
pc2/pc2.startup
pc3/pc3.startup
r1/r1.startup
r2/r2.startup
r3/r3.startup
 
Conteúdo dos arquivos:
 
lab.conf
  pc1[0]=A
  r1[0]=A
  r1[1]=AB
  r1[2]=AC
  pc2[0]=B
  r2[0]=B
  r2[1]=AB
  r2[2]=BC
  pc3[0]=C
  r3[0]=C
  r3[1]=BC
  r3[2]=AC
 
pc1.startup
  ifconfig eth0 192.168.1.1/24 up
  route add default gw 192.168.1.2 dev eth0
 
pc2.startup
  ifconfig eth0 192.168.2.1/24 up
  route add default gw 192.168.2.2 dev eth0
 
pc3.startup
  ifconfig eth0 192.168.3.1/24 up
  route add default gw 192.168.3.2 dev eth0
 
r1.startup
  ifconfig eth0 192.168.1.2/24 up
  ifconfig eth1 10.0.1.1/24 up
  ifconfig eth2 10.0.2.1/24 up
 
r2.startup
  ifconfig eth0 192.168.2.2/24 up
  ifconfig eth1 10.0.1.2/24 up
  ifconfig eth2 10.0.3.1/24 up
 
r3.startup
  ifconfig eth0 192.168.3.2/24 up
  ifconfig eth1 10.0.3.2/24 up
  ifconfig eth2 10.0.2.2/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''':
*'''[[Kathara: Protocolo ARP|Protocolo ARP]]'''
*pc1 -> pc2:
*'''[[Kathara: Servidor Web|Servidor Web]]'''
ping 192.169.1.2
*'''[[Kathara: Roteamento|Roteamento estático e dinâmico]]'''
*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


==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)