3

Я взял небольшой live-диск FreeBSD и QEMU и пытаюсь подключить Wi-Fi-соединение с Mac OS X 10.8, чтобы гостевая ОС была доступна в моей локальной сети. Однако гостевая ОС никогда не получает аренду DHCP.

Это прекрасно работает с VirtualBox в их "мостовом" сетевом режиме, поэтому я знаю, что это можно сделать. Мне нужно, чтобы он работал с QEMU, потому что VirtualBox не поддерживает архитектуру, которая мне нужна для этого проекта.

Вот что я сделал до сих пор, основываясь на часах поиска в Google:

  1. Установленный TUNTAP для OS X

  2. Сказал OS X, чтобы якобы пересылать все пакеты, даже ARP: (ПРИМЕЧАНИЕ: это не похоже на работу.)

    $ 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. Создан мост:

    $ 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. Запустил tcpdump с -I в надежде, что он включит беспорядочный режим на устройстве wifi:

    $ sudo tcpdump -In -i en0
    
  5. Запустите QEMU, используя сетевые инструкции:

    $ 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
    

Но гостевая система никогда не получает аренду DHCP:

FreeBSD

Если я tcpdump -ni tap0 , я вижу много трафика из беспроводной сети. Но если я tcpdump -ni en0 , я не вижу никакого трафика DHCP от гостевой ОС QEMU.

Есть идеи?

Обновление 1: я попытался sudo defaults write "/Library/Preferences/SystemConfiguration/com.apple.Boot" "Kernel Flags" "net.inet.ip.scopedroute=0" и перезагрузите компьютер в соответствии с этим предложением списка рассылки, но это не помогло. Фактически, это заставило режим VirtualBox перестать работать.

Обновление 2: Интересно, что виртуальный интерфейс гостя QEMU получает только широковещательные пакеты. Может мне нужно как-нибудь добавить маршрут? Хм ...

широковещательные пакеты

2 ответа2

1

Как вы указали, программное обеспечение для виртуальных машин, такое как VirtualBox, имеет способы подключения к интерфейсу Wi-Fi. Тем не менее, это, по-видимому, трудно сделать, и это не то же самое, что делает ifconfig. Насколько я понимаю, ifconfig выполняет мостовое соединение Ethernet , то есть он может соединять только комбинации реальных интерфейсов Ethernet или виртуальных интерфейсов "TAP" Ethernet. Так что это включает в себя соединение двух интерфейсов TAP. Я не знаю об интерфейсах TUN.

Проблема, с которой вы столкнулись при работе с QEMU, я недавно решил с помощью эмуляторов Macintosh SheepShaver и Basilisk II, которые также могут загружать свой собственный интерфейс TAP, предоставленный TunTapOSX. Я установил сервер OpenVPN в режиме моста в виртуальной машине Linux на отдельном компьютере, который требует некоторой работы, но является чрезвычайно полезным инструментом. Затем, если вы находитесь в той же локальной сети, что и VPN-сервер, вы можете подключиться к нему через частный IP-адрес сервера. Я отмечаю это в моем руководстве, связанном ниже. Следуйте первому руководству по настройке сервера OpenVPN и второму руководству по подключению эмулятора.

http://www.emaculation.com/doku.php/bridged_openvpn_server_setup http://www.emaculation.com/doku.php/wireless_appletalk_ss_bii_osx

Подвох в том, что компьютер с сервером OpenVPN должен быть подключен к маршрутизатору через Ethernet. Также обратите внимание, что на этом компьютере не может быть запущен эмулятор с использованием мостового соединения Ethernet, поскольку это может помешать мостовому соединению, требуемому в виртуальной машине Linux для OpenVPN, или наоборот.

1

Попробуйте это при создании моста:

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

Я прошел через это с GNS3 и Riverbed Steelhead Lab, так что я сам испытал это.

Это поднимет ваш мост.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .