Instalação do LXC sem NAT em uma VM VirtualBox

O Linux Containers (LXC) é uma alternativa de virtualização no nível do SO, diminuindo o overhead do host em que está como convidado quando comparada a alternativas de hypervisors convencionais. O LXC cria containers, que compartilham diretamente o processador e a memória com o host.

O LXC muitas vezes é estudado instalando-o em VMs, uma vez que é executado apenas em distribuições Linux e evita problemas no host caso seja feito algo que não era esperado. Neste tutorial informamos como deve ser feita a instalação do LXC em uma VM VirtualBox, de modo que o container não tenha o IP fornecido pelo NAT da bridge criada pelo LXC (lxcbr), mas receba o IP fornecido da própria rede em que se encontra.

Este tutorial é feito em uma VM Ubuntu 14.04, mas pode ser feita em outras distribuições do Linux. Primeiro, vamos instalar o LXC. Para instalá-lo é necessário adicionar o ppa da distribuição:

sudo add apt-repository ppa:ubuntu-lxc/stable

Após adicionar o ppa, execute o update:

sudo apt-get update

E após o update, instale o pacote lxc:

sudo apt-get install lxc

Após a instalação, iremos criar nosso primeiro container. Para criá-lo, iremos executar o seguinte comando:

sudo lxc-create -t ubuntu -n u1

Onde o -t indica qual distribuição Linux será o container, e o -n indica o nome do container. Caso queira mudar o u1 para outro nome que achar melhor, não há problema!

Após a criação do container, é possível iniciá-lo pelo comando:

sudo lxc-start -n u1

Caso você execute o comando sudo lxc-ls –fancy, verá a seguinte tabela:

Captura de tela de 2015-11-29 17:04:11

No campo IPV4 está um IP provido pela lxcbr, de rede 10.0.3.0. Entretanto, precisamos que o container receba um IP da rede local que estamos. Para isso, algumas mudanças precisam ser feitas, como criar uma bridge e alterar a configuração do container.

Para criar a bridge edite o arquivo /etc/network/interfaces, adicionando as seguintes linhas:

auto br0

iface br0 intet dhcp

bridge_ports eth0

e na eth0 altere a segunda linha, colocando para a interface ser manual:

auto eth0

iface eth0 inet manual

Nós também devemos alterar a configuração do container, passando como bridge a br0 criada. Vamos alterar o arquivo /var/lib/lxc/u1/config (se mudou o nome do container, mude de u1 para o nome alterado), com permissões de super usuário. Nele, altere o lxc.network.link de lxcbr0 para br0.


#mude o network.link de lxcbr0 para br0

lxc.network.type = veth
lxc.network.link = br0

Desligue a VM e realize uma importantíssima mudança: No VirtualBox, clique na VM e vá para Configurações, para alterar as preferências da VM. Em Rede, altere o Modo Promíscuo de “Recusar ” para “Permitir tudo” na interface em que está a eth0 da VM. Caso tenha dúvidas de qual interface a eth0 está, altere em todas elas. Desta forma, a placa de rede não recusará pacotes que são de IPs diferentes do IP desta interface, e o container poderá recebê-los caso o destino seja seu IP.

Captura de tela de 2015-11-29 17:12:51

Quando iniciarmos o container na VM pelo lxc-start, o container já terá o IP da rede em que estamos conectados:

Captura de tela de 2015-11-29 18:51:52.png

Esperamos que este tutorial tenha sido útil para configurar containers em VMs com IPs da rede local, sem a presença do NAT da lxcbr.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s