QEMU dentro do VirtualBox e conexões em ponte todo o caminho

6

Estou tentando obter um sistema ARM QEMU na minha LAN. Tentei executar o QEMU diretamente do Windows (Windows 7 x64), com sucesso, exceto que não consegui um adaptador TAP para fazer a ponte com a minha conexão sem fio. Especificamente, o Windows recusou-se a colmatar qualquer um dos meus adaptadores de rede.

Então, eu tentei usar o QEMU dentro de uma máquina virtual Ubuntu (que, surpreendentemente, acaba sendo um pouco mais rápida, e é por isso que eu gostaria de continuar com ela). A VM Ubuntu é conectada à minha conexão sem fio e funciona bem. Eu configurei uma ponte dentro do Ubuntu usando um dispositivo TAP, e acredito que ela esteja configurada corretamente, mas economize para obter um endereço DHCP da minha LAN, isso não funcionará.

  • Host do Windows 7 x64
    • Ubuntu 12.04 32-bit VM
      • QEMU ARM executando o Debian Squeeze

Acredito que exista um problema de roteamento, mas não consigo identificá-lo.

  • Minha LAN está configurada para DHCP em 1.1.1.0/24 e o gateway é 1.1.1.1 (sim, isso é burro, mas não é o problema)
  • O Ubuntu tem a seguinte configuração:

[Precisa de uma linha não tão em branco aqui para que a tag pre trabalhe abaixo ...]

br0 Link encap:Ethernet  HWaddr 08:00:27:74:6b:ec  
inet addr:1.1.1.16  Bcast:1.1.1.255  Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe74:6bec/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:3135 errors:0 dropped:0 overruns:0 frame:0
TX packets:967 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:681918 (681.9 KB)  TX bytes:79747 (79.7 KB)

eth1 Link encap:Ethernet  HWaddr 08:00:27:74:6b:ec  
inet6 addr: fe80::a00:27ff:fe74:6bec/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
RX packets:14249 errors:0 dropped:0 overruns:0 frame:0
TX packets:5850 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:15166414 (15.1 MB)  TX bytes:431255 (431.2 KB)

tap1 Link encap:Ethernet  HWaddr 96:f3:2d:ae:c8:08  
inet6 addr: fe80::94f3:2dff:feae:c808/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:161 errors:0 dropped:0 overruns:0 frame:0
TX packets:2262 errors:0 dropped:3 overruns:0 carrier:0
collisions:0 txqueuelen:500 
RX bytes:12144 (12.1 KB)  TX bytes:262799 (262.7 KB)

O QEMU é o seguinte:

E meu servidor confirma isso:

tail /var/log/dnsmasq.leases
1341855255 52:54:00:12:34:56 1.1.1.144 * *

Portanto, o QEMU está recebendo um endereço IP, mas, por outro lado, parece não estar conectado:

root@arm-emu:~# ping google.com
ping: unknown host google.com

root@arm-emu:~# ping 1.1.1.1
From 1.1.1.144 Destination Host Unreachable

Isto é o que eu usei para configurar a bridge - no Ubuntu:

tunctl -t tap1 -u root
brctl addbr br0
ifconfig eth1 0.0.0.0 promisc
brctl addif br0 eth1
dhclient br0
brctl addif br0 tap1
ifconfig tap1 up

No QEMU, estou usando apenas o DHCP para eth0, nenhuma configuração especial.

Estou fazendo isso errado, com minha conexão de bridge em ponte?

    
por Nick 06.07.2012 / 21:38

1 resposta

2

Eu sei que estou atrasado, mas encontrei o mesmo problema recentemente.

Encontre principalmente a solução aqui:

link

As principais etapas são ativar o encaminhamento de IP e configurar o MASQUERADING na interface de ponte:

$ echo "1" > /proc/sys/net/ipv4/ip_forward
$ sudo iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE

Agora o QEMU pode acessar a Internet e pode ser acessado pelo VirtualBox e pelo host.

Mas não é possível acessar outros computadores na mesma LAN.

Como o inglês é meu segundo idioma, qualquer pessoa que queira melhorar essa resposta será apreciada.

    
por 28.04.2016 / 19:26