Habilitar a rede nas máquinas virtuais do Qemu é um processo relativamente simples, mas não muito documentado. Existem diversos métodos, mas o mais eficiente e prático consiste em configurar bridge na máquina hospedeira, criando interfaces virtuais acessíveis pelas máquinas virtuais.
Para demonstrar a configuração da rede na máquina virtual do
Qemu, consideraremos um ambiente virtual com os seguintes dados:
- IP da máquina hospedeira: 10.1.0.192
- IP da máquina virtual: 10.1.0.208
- Gateway padrão: 10.1.0.1
- DNS primário: 10.1.0.6
Nossa configuração começa com a instalação no VDE. Baixe a versão estável mais recente na página do projeto:
Após baixar o arquivo, descompacte-o, acesse o diretório criado e, então, execute o comando:
$ ./configure && make && su -c 'make install'
password:
Após a instalação, execute a seguinte seqüência de comandos:
# vde_switch -sock /tmp/vde.ctl -mod 666 -tap tun0 -daemon
# ifconfig eth0 down
# brctl addbr br0
# ifconfig eth0 0.0.0.0 promisc up
# ifconfig tun0 0.0.0.0 promisc up
# ifconfig br0 10.1.0.192 netmask 255.255.255.0 broadcast 10.1.0.255 up
# brctl stp br0 off
# brctl setfd br0 1
# brctl sethello br0 1
# brctl addif br0 eth0
# brctl addif br0 tun0
# route add default gw 10.1.0.1
O comando brctl está disponível através do pacote bridge-utils. Você pode instalá-lo utilizando o Yum:
$ su -c 'yum install bridge-utils'
password:
A interface br0 passa agora a responder pelo endereço anteriormente atribuído à interface eth0. Para a máquina hospedeira isso não causará nenhuma diferença, ou seja, o sistema vai continuar respondendo pelo mesmo IP na interface eth0. Já a máquina virtual receberá o IP que quisermos atribuir.
Para iniciar uma máquina virtual com suporte a rede, execute o vdeqemu, da seguinte forma:
$ vdeqemu [opções do qemu]
No nosso caso, vamos iniciar a máquina virtual "zimbra" do exemplo anterior com suporte a rede:
$ vdeqemu -hda /home/vm/zimbra -m 256 \
-net nic,vlan=0 -net vde,vlan=0,sock=/tmp/vde.ctl
Após a inicialização da máquina virtual, a interface de rede eth0 será reconhecida, restando apenas configurarmos uma conexão para ela.
Múltiplas interfaces de rede
Se quisermos criar várias máquinas virtuais com suporte a rede ou habilitar várias interface de rede a uma única máquina virtual, precisaremos criar várias interfaces TAP no servidor hospedeiro. Para isso, basta basear-se nos procedimentos anteriores, fazendo as alterações necessárias.
Nesse exemplo, vamos criar 3 interfaces para serem utilizadas por duas máquinas virtuais. Uma dela usará duas interfaces e a outra apenas uma.
# vde_switch -sock /tmp/vde.ctl -mod 666 -tap tun0 -daemon
# vde_switch -sock /tmp/vde.ctl -mod 666 -tap tun1 -daemon
# vde_switch -sock /tmp/vde.ctl -mod 666 -tap tun2 -daemon
# ifconfig eth0 down
# brctl addbr br0
# ifconfig eth0 0.0.0.0 promisc up
# ifconfig tun0 0.0.0.0 promisc up
# ifconfig tun1 0.0.0.0 promisc up
# ifconfig tun2 0.0.0.0 promisc up
# ifconfig br0 10.1.0.192 netmask 255.255.255.0 broadcast 10.1.0.255 up
# brctl stp br0 off
# brctl setfd br0 1
# brctl sethello br0 1
# brctl addif br0 eth0
# brctl addif br0 tun0
# brctl addif br0 tun1
# brctl addif br0 tun2
# route add default gw 10.1.0.1
Como você pode perceber, a única diferença está na criação de mais duas interfaces: tun1 e tun2.
Vamos, agora, iniciar uma máquina virtual utilizando duas interfaces de rede:
$ vdeqemu -hda /home/vm/vms1 -m 160 \
-net nic,vlan=0 -net vde,vlan=0,sock=/tmp/vde.ctl \
-net nic,vlan=1 -net vde,vlan=1,sock=/tmp/vde.ctl
E, então, iniciar outra máquina virtual utilizando a outra interface:
$ vdeqemu -hda /home/vm/vms2 -m 240 \
-net nic,vlan=2 -net vde,vlan=2,sock=/tmp/vde.ctl