MC833A - 2019
Programação de Redes de Computadores

Exercício 5 - Interfaces virtuais (veth,tap,tun), Bridges e Switchs virtuais

Critérios para entrega do exercício
Atividade
Passos:

Vamos utilizar a instância vm-netlabs como "host" para virtualização. Para iniciar o "host" digite em um terminal o seguinte comando: vm-netlabs OBS: Todos os passos a seguir serão executado a partir da vm-netlabs.
  1. Preparando o ambiente:

    Abra um terminal e digite sudo -i para ter privilegios de administrador no ambiente.

    Instale a solução de virtualização (qemu)
    dnf clean all && dnf -y install qemu-kvm

    Crie um diretório para armazenar as imagens das VM (imagens: disco virtual baseado em "arquivo")
    mkdir /vms

    Faça o download de uma imagem pre instalada do Fedora 24.
    cd /vms ; wget www.ic.unicamp.br/~william/vms/fc24.qcow2

  2. Iniciando uma VM:

    Realize a cópia da imagem do disco virtual, que realizamos o download anteriormente para iniciar uma VM, exemplo:
    cp /vms/fc24.qcow2 /vms/novavm.qcow2

    Inicie uma VM utilizando o sistema de virtualização qemu-system (emulação) passando a imagem copiada como disco virtual. qemu-system-x86_64 -m 512 -hda /vms/novavm.qcow2

    Após a VM iniciar, na tela de login entre com o username root e tecle [enter].

    Quantas interfaces possuiamos na instância (VM) ?
    Quais são os endereços IP atribuido em cada interface ?
    A VM possui acesso a internet ?

    OBS: Feche a VM para economizar recurso.

  3. Inicie uma VM, utilizando uma interface virtual tap como enlace entre o host (vm-netlabs) e a sua instância.




    Crie uma interface tipo TAP com o seguinte comando:
    ip tuntap add tap0 mode tap ; ifconfig tap0 up

    Inicie a VM adicionando o seguinte parametro:
    qemu-system-x86_64 -m 512 -hda /vms/novavm.qcow2 -netdev type=tap,ifname=tap0,id=net0,script=no -device virtio-net-pci,netdev=net0,mac=00:16:15:14:13:12

    Verifique as interfaces no sistema com o comando ifconfig -a

    Configure o endereço IP no host na interface (tap0) e dentro da instância (VM), utilizando o seguinte comando:
    ifconfig tap0 10.10.0.1/24 up

    O host consegue se comunicar com a instância (VM) pela rede ?

  4. Inicie outra instância, utilizando uma segunda interface tap (tap1), para realizarmos os seguintes passos.
    (OBS: não esqueça de trocar o endereço MAC "mac=..." e de alterar a interface na linha de comando para iniciar a segunda instância). Descreva os passos necessário em seu relatório.

  5. Realizando a comunicação entre instâncias.


    Para isso será necessario incluir as interfaces no lado do host em uma bridge-linux.

    Crie uma bridge com o nome br0 brctl addbr br0

    Adicione as interfaces na bridge com o seguinte comando brctl addif br0 tap0

    Verifique a bridge criada e suas interfaces com o comando brctl show

    Faça a configuração dos endereço IP nas instância e teste a comunicação entre elas.

    Analise a saida do comando dmesg no host e procure pela as interfaces tap. Baseado na mensagem, o que o kernel fez com a interface ?

    Digite o seguinte comando brctl showmacs br0 e verifique os endereços MAC de cada porta da bridge. De onde são os endereços MAC que estão passando pela bridge ?

  6. Responda:

    O host possui comunicação com as instâncias ? Se não, que configuração precisamos realizar para que o host se comunique com as instâncias ?

    Se as instâncias, necessita-se estar na mesma rede local do host, que configuração o ambiente deveria ter ? Exemplifique.

Instituto de Computação
Universidade Estadual de Campinas
Av Albert Einstein 1251
13083-852 Campinas, SP - Brazil