Como permitir que o sistema operacional convidado acesse a Internet no qemu?

Como permitir que o sistema operacional convidado acesse a Internet no qemu?

Criei uma imagem do Windows XP e estou inicializando com qemu. Ao usar "rede em modo de usuário" via -net user, meu sistema operacional convidado (windows xp) recebe o IP 10.0.2.15 atribuído e posso executar ping em 10.0.2.2 para que os drivers do Windows sejam instalados corretamente.

Infelizmente não consigo acessar mais nada. Eu li tutoriais e descobri que a "rede em modo de usuário" não encaminha conexões para a Internet e tenho que usar um dispositivo TAP ou um dispositivo Bridge.

Não estou familiarizado com esses dispositivos e os tutoriais são muito confusos e complicados.

Um dos tutoriais sugeriu que eu usasse o qemu-bridge-helper. Eu configurei /etc/qemu/bridge.conf para permitir o dispositivo bridge br0 e criei o dispositivo br0 via brctl addbr br0.

Segui os tutoriais e inicializei meu winxp desta forma:

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 não recebo um endereço IP. O motivo é que o Windows está configurado para usar DHCP, mas "br0" não fornece um endereço DHCP, pois é apenas uma interface de ponte (de alguma forma ligada a tap0, mas não tenho certeza do que isso significa).

Minha pergunta é: como configuro o "br0" para fornecer endereços ao winxp por DHCP? Devo executar um servidor DHCP na interface tap0? Como br0, tap0 e eth0 estão relacionados? (eth0 é minha interface IP estática, a única interface de internet.)

Minha segunda pergunta é: existe uma maneira mais fácil de configurar tudo isso para permitir acesso simples à Internet para sistemas operacionais convidados?

Responder1

Minha segunda pergunta é: existe uma maneira mais fácil de configurar tudo isso para permitir acesso simples à Internet para sistemas operacionais convidados?

Você não precisa (ou, pelo menos, não deveria) precisar configurar nada manualmente para um simples acesso à Internet; QEMU lida com isso automaticamente. Possui algumas limitações, como não suportar o protocolo ICMP (usado por ping), não ser visível para a rede externa, nem poder se comunicar com outras máquinas virtuais executadas da mesma forma, mas funciona bem para uso simples. Veja oArco WikiPara maiores informações.

Responder2

Após o seu comando brctl addbr br0você precisa conectar uma nova ponte à interface de rede real, por exemplo eth0, que está conectada à Internet. Use para isso o próximo comando brctl addif br0 eth0.

informação relacionada