Como eu crio uma ponte de rede wifi com o qemu no OS X?

3

Eu peguei um pequeno live CD do FreeBSD e QEMU , e estou tentando conectar minha conexão Wi-Fi do Mac OS X 10.8 para que o sistema operacional convidado esteja disponível na minha LAN. No entanto, o sistema operacional convidado nunca recebe uma concessão de DHCP.

Isso funciona perfeitamente com o VirtualBox em seu modo de rede "em ponte", então sei que isso pode ser feito. Eu preciso fazê-lo funcionar com o QEMU porque o VirtualBox não suporta a arquitetura que eu preciso para este projeto.

Aqui está o que eu fiz até agora com base em horas de pesquisa:

  1. Instalado TUNTAP para o OS X

  2. Disse ao OS X para supostamente encaminhar todos os pacotes, até mesmo o ARP: ( NOTA: Isto parece não funcionar.)

    $ sudo sysctl -w net.inet.ip.forwarding=1
    $ sudo sysctl -w net.link.ether.inet.proxyall=1
    $ sudo sysctl -w net.inet.ip.fw.enable=1
    
  3. Criado uma ponte:

    $ sudo ifconfig bridge0 create
    $ sudo ifconfig bridge0 addm en0 addm tap0
    $ sudo ifconfig bridge0 up
    $ ifconfig
    bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether ac:de:xx:xx:xx:xx
        Configuration:
            priority 0 hellotime 0 fwddelay 0 maxage 0
            ipfilter disabled flags 0x2
        member: en0 flags=3<LEARNING,DISCOVER>
                 port 4 priority 0 path cost 0
        member: tap0 flags=3<LEARNING,DISCOVER>
                 port 8 priority 0 path cost 0
    tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        ether ca:3d:xx:xx:xx:xx
        open (pid 88244)
    
  4. Iniciado tcpdump com -I na esperança de que ele promísse promíscuos modo no dispositivo wifi :

    $ sudo tcpdump -In -i en0
    
  5. Execute o QEMU usando as instruções de rede em ponte :

    $ qemu-system-x86_64 -cdrom mfsbsd-9.2-RELEASE-amd64.iso -m 1024 \
      -boot d -net nic -net tap,ifname=tap0,script=no,downscript=no
    

Mas o sistema convidado nunca recebe uma concessão de DHCP:

Seeutcpdump-nitap0,vejomuitotráfegodaredesemfio.Masseeutcpdump-nien0,eunãovejoqualquertráfegoDHCPdosistemaoperacionalconvidadodoQEMU.

Algumaidéia?

Atualização1:tenteisudodefaultswrite"/Library/Preferences/SystemConfiguration/com.apple.Boot" "Kernel Flags" "net.inet.ip.scopedroute=0" e reinicialize por esta lista de e-mails sugestão , mas isso não ajudou. Na verdade, isso fez com que o modo em ponte do VirtualBox parasse de funcionar.

Atualização 2: Curiosamente, a interface virtual no convidado do QEMU recebe apenas pacotes de difusão. Talvez eu precise adicionar uma rota de alguma forma? Hmm ...

    
por a paid nerd 06.11.2013 / 20:44

2 respostas

1

Como você apontou, o software de VM, como o VirtualBox, tem maneiras de se unir a uma interface Wi-Fi. No entanto, isso é aparentemente difícil de fazer, e não é a mesma coisa que o ifconfig faz. Tanto quanto eu entendo, ifconfig executa ponte ethernet , isto é, pode unir apenas combinações de interfaces de ethernet reais ou interfaces ethernet "TAP" virtuais. Então, isso inclui a ponte de duas interfaces TAP. Eu não sei sobre as interfaces do TUN.

O problema que você está tendo com o QEMU é um problema que resolvi recentemente com os emuladores Macintosh SheepShaver e Basilisk II, que também podem carregar sua própria interface TAP fornecida pelo TunTapOSX. O que fiz foi configurar um servidor OpenVPN em modo de ponte em uma VM Linux em um computador separado, o que requer algum trabalho, mas é uma ferramenta extremamente útil. Então, se você estiver na mesma LAN que o servidor VPN, poderá se conectar a ele por meio do endereço IP privado do servidor. Observo isso no meu guia, vinculado abaixo. Siga o primeiro guia para configurar o servidor OpenVPN e o segundo guia para conectar o emulador.

link link

O problema é que o computador que executa o servidor OpenVPN deve estar conectado ao roteador pela ethernet. Observe também que esse computador não pode estar executando um emulador usando a ponte Ethernet, pois isso pode interferir na ponte necessária na VM do Linux para o OpenVPN, ou vice-versa.

    
por 26.04.2014 / 17:34
1

Tente isso quando você criar uma ponte:

sudo ifconfig en0 down ####Shut Down the interface #####
sudo ifconfig en0 inet delete ####To clean out the old sys hooks. Don't worry you did uninstall the driver ##### Then:

sudo ifconfig bridge0 create
$ sudo ifconfig bridge0 addm en0 addm tap0
$ sudo ifconfig bridge0 up

Eu passei por isso com o GNS3 e um Laboratório Steelhead da Riverbed Então, eu mesmo experimentei isso.

Isso trará sua ponte para cima.

    
por 01.11.2015 / 20:39