rede host-guest usando o qemu

0

Estou tentando fazer com que o host (arch linux) e o qemu guest (busybox initramfs linux) se conectem uns com os outros. Não é necessário um acesso mais amplo à LAN no convidado - apenas a rede de host-convidado. O problema é que apenas a interface de loopback aparece dentro do qemu guest.

A seguir, o comando básico que estou usando. Eu tentei suas diferentes variações.

qemu-system-x86_64 -enable-kvm -m 1024 -kernel ./vmlinuz -initrd ./initramfs.igz -append "console=ttyS0" -nographic -net nic,vlan=0 -net tap,ifname=tap0,script=no,downscript=no

Antes de executar isso, no host, criei uma interface de toque tap0 e configurei seu usuário para meu usuário conectado ( whoami ). Trouxe a interface no modo promisc.

O QEMU começou com um aviso sobre -net depreciado em favor do netdev. Mas só mostra interface de loopback. Pode haver problemas em torno do dhcp que não está configurado ou de algum outro problema. Mas não consigo encontrar uma maneira de ver qual é o problema. Há um switch -d para logs do qemu, mas isso tem muitas opções e não tenho certeza qual delas usar para os tipos de logs que eu quero.

Além disso, posso configurar uma interface bridge br0 no host e escravizar tap0 para br0, mas isso, para mim, parece inútil porque não há mais nada escravizado em br0. No meu laptop, há o wlan0, mas ele não será masterizado para uma ponte - ele falha com a Operação não suportada. Além disso, eu não estou interessado em um acesso mais amplo à LAN de qualquer maneira.

    
por bytefire 05.07.2017 / 07:27

1 resposta

0

Resolvido em este tópico do fórum . A seguir está a essência disso.

A principal coisa que faltava era que o kernel guest não tinha módulos de virtio . Com isso, existem algumas maneiras de alcançar essa rede. Aqui está um:

brctl addbr brkvm
ip addr add 192.168.56.101/24 dev brkvm
ip link set brkvm up
mkdir /etc/qemu
touch /etc/qemu/bridge.conf
echo "allow brkvm" >> /etc/qemu/bridge.conf
qemu-system-x86_64 -enable-kvm -m 1024 -kernel ./vmlinuz -initrd ./initramfs.igz -append "console=ttyS0" -nographic -netdev bridge,id=bridge,br=brkvm -device virtio net-pci,netdev=bridge

Depois disso, eth0 aparecerá como uma interface dentro do convidado. Definir seu endereço IP para, digamos, 192.168.56.102/24 e trazê-lo para cima é o suficiente. Em seguida, o ping do convidado para o brkvm no lado do host e do host para o eth0 no lado do convidado funciona bem.

    
por 07.07.2017 / 12:16