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 br0
você 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
.