Como ativar o DHCP para o dispositivo “br0” para o qemu?

2

Eu criei uma imagem do Windows XP e estou inicializando com o qemu. Estou usando qemu-bridge-helper para configurar a rede. Seguindo o qemu totorials, eu configurei o /etc/qemu/bridge.conf para permitir br0 bridge device.

É assim que inicializo o Windows XP com o qemu:

qemu-system-x86_64 --enable-kvm -m 2048 \
  -drive file=winxp.img,if=virtio \
  -net nic,model=virtio \
  -net bridge,br=br0

A imagem inicializa bem, mas eu não recebo um endereço IP. O motivo é que o Windows está configurado para usar o DHCP, mas "br0" não está fornecendo um endereço DHCP, pois é apenas uma interface de ponte.

A minha pergunta é - como configuro "br0" para fornecer endereços para o winxp através do DHCP?

(Ao usar a "rede do modo de usuário" via -net user , o Windows obtém um IP atribuído para que os drivers do Windows sejam instalados corretamente.)

    
por Boda Cydo 26.10.2016 / 01:49

1 resposta

2

br0 é apenas uma abstração de rede da camada 2 - um comutador virtual, essencialmente. Se você tiver um servidor DHCP em execução em seu hipervisor, tenha um endereço IP atribuído à interface br0 para o qual o servidor DHCP está apontado (no próprio hipervisor) e faça com que o servidor DHCP defina uma sub-rede correspondente à rede de sua camada 3 endereço com um intervalo apropriado, então isso funcionará sem outros dispositivos.

No entanto, na maioria dos casos, ao usar uma interface em ponte, já existe um servidor DHCP no domínio de broadcast ao qual você está anexando. br0 atua como um switch, para que o tráfego seja passado para seus convidados. A partir da descrição dos seus problemas, posso oferecer uma configuração de exemplo que resolverá a maioria dos seus problemas.

Lembre-se de que você deve respeitar o modelo OSI ao empilhar interfaces. O que isso significa é que, ao criar uma abstração de camada 2, como uma ponte, você não pode ter nenhuma camada 3 endereçada abaixo dela. Simplesmente não vai funcionar. Como um breidge funciona como um comutador, você estará dando à própria ponte um endereço IP e anexando outras interfaces apenas na capacidade da camada de enlace. Isso inclui interfaces virtuais para VMs e interfaces físicas para vincular a rede externa às referidas VMs e ao hipervisor.

Nesta configuração, eth0 é anexado a br0, e br0 recebe seu endereçamento. As VMs são conectadas a br0 e os serviços DHCP (estejam no hypervisor ou externos a ele no mesmo domínio da camada 2) fornecerão endereços às suas VMs.

# cat /etc/network/interfaces

auto eth0
    iface eth0 inet manual

auto br0
    iface br0 inet dhcp
    bridge_ports eth0

Isso pressupõe que você está usando o DHCP para obter seu endereço para br0. Caso contrário, você precisará aplicar o endereçamento estático à interface br0.

Quando isso for feito, você precisará reiniciar a rede ( # systemctl stop networking && systemctl start networking ). Isto irá quebrar o seu link, então você precisará ter um método OOB para entrar em sua máquina se sua configuração falhar. Se estiver correto, você poderá se reconectar via SSH depois que os serviços forem iniciados. É muito importante poder acessar a máquina via OOB para esse tipo de tarefa, pois é muito fácil ficar bloqueado.

Como alternativa e recomendado

Este é realmente um trabalho para o libvirt manipular. Usando a libvirt, você pode facilmente usar a rede NAT integrada para VMs que não precisam ser acessadas de fora, mas que precisam de acesso à Internet. Também é mais fácil definir VMs, criar configurações consistentes e, geralmente, gerenciar recursos.

Você pode usar uma combinação de virsh , virt-install e qemu-img para gerenciar isso por meio do cli. Sheer são muitas outras interfaces gráficas que você pode usar alternativamente para gerenciar o libvirt, como oVirt ou o Virtual Machine Manager ( virt-manager )

    
por 26.10.2016 / 02:26