¿Cómo permitir que el sistema operativo invitado acceda a Internet en qemu?

¿Cómo permitir que el sistema operativo invitado acceda a Internet en qemu?

Creé una imagen de Windows XP y la estoy iniciando con qemu. Cuando utilizo "redes en modo usuario" a través de -net user, mi sistema operativo invitado (Windows XP) obtiene la IP 10.0.2.15 asignada y puedo hacer ping a 10.0.2.2 para que los controladores de Windows se instalen correctamente.

Lamentablemente no puedo acceder a nada más. Leí tutoriales y descubrí que la "red en modo de usuario" no reenvía conexiones a Internet y tengo que usar un dispositivo TAP o un dispositivo Bridge.

No estoy familiarizado con estos dispositivos y los tutoriales son muy confusos y complicados.

Uno de los tutoriales sugirió que usara qemu-bridge-helper. Configuré /etc/qemu/bridge.conf para permitir el dispositivo puente br0 y creé el dispositivo br0 a través de brctl addbr br0.

Seguí los tutoriales e inicié mi winxp de esta manera:

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

La imagen arranca muy bien pero no obtengo una dirección IP. La razón es que Windows está configurado para usar DHCP pero "br0" no proporciona una dirección DHCP ya que es solo una interfaz puente (de alguna manera vinculada con tap0, pero no estoy seguro de lo que eso significa).

Mi pregunta es: ¿cómo configuro "br0" para proporcionar direcciones a winxp a través de DHCP? ¿Tengo que ejecutar un servidor dhcp en la interfaz tap0? ¿Cómo se relacionan br0, tap0 y eth0? (eth0 es mi interfaz IP estática, la única interfaz de Internet).

Mi segunda pregunta es: ¿existe una forma más sencilla de configurar todo esto para permitir un acceso sencillo a Internet al sistema operativo invitado?

Respuesta1

Mi segunda pregunta es: ¿existe una forma más sencilla de configurar todo esto para permitir un acceso sencillo a Internet al sistema operativo invitado?

No es necesario (o al menos no debería) configurar nada manualmente para un acceso sencillo a Internet; QEMU lo maneja automáticamente. Tiene algunas limitaciones, como no soportar el protocolo ICMP (utilizado porping ), no ser visible para la red externa ni poder hablar con otras máquinas virtuales que se ejecuten de la misma manera, pero funciona bien para un uso simple. Ver elWiki Arcopara más información.

Respuesta2

Después de su comando, brctl addbr br0debe conectar un nuevo puente a la interfaz de red real, por ejemplo eth0, la que está conectada a Internet. Utilice para ello el siguiente comando brctl addif br0 eth0.

información relacionada