J'ai attrapé un petit CD live FreeBSD et QEMU , et j'essaie de créer un pont entre ma connexion Wi-Fi Mac OS X 10.8 afin que le système d'exploitation invité soit disponible sur mon réseau local. Cependant, le système d'exploitation invité ne reçoit jamais de bail DHCP.
Cela fonctionne parfaitement avec VirtualBox en mode réseau "ponté", je sais donc que cela peut être fait. Je dois le faire fonctionner avec QEMU car VirtualBox ne prend pas en charge l'architecture dont j'ai besoin pour ce projet.
Voici ce que j'ai fait jusqu'à présent, basé sur des heures passées à googler:
A demandé à OS X de transférer soi-disant tous les paquets, même ARP: ( NOTE: cela ne semble pas fonctionner.)
$ 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
Créé un pont:
$ 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)
Commencé
tcpdump
avec-I
l'espoir d' activer le mode promiscuous sur le périphérique wifi :$ sudo tcpdump -In -i en0
Exécutez QEMU en utilisant les instructions réseau pontées :
$ 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
Mais le système invité n’obtient jamais de bail DHCP:
Si je tcpdump -ni tap0
, je vois beaucoup de trafic du réseau sans fil. Mais si je tcpdump -ni en0
, je ne vois aucun trafic DHCP du système d'exploitation invité QEMU.
Des idées?
Mise à jour 1: J'ai essayé de sudo defaults write "/Library/Preferences/SystemConfiguration/com.apple.Boot" "Kernel Flags" "net.inet.ip.scopedroute=0"
redémarrer en suivant cette suggestion de la liste de diffusion , mais cela n'a pas aidé. En fait, le mode ponté de VirtualBox a cessé de fonctionner.
Mise à jour 2: il est intéressant de noter que l’interface virtuelle de l’invité QEMU n’obtient que des paquets de diffusion. Peut-être que je dois ajouter un itinéraire en quelque sorte? Hmm ...
la source
tcpdump -ni tap0
montre DHCP d'invité? Avez-vous essayé de jouer avec le filtre de paquets?Réponses:
Comme vous l'avez souligné, les logiciels de machine virtuelle tels que VirtualBox ont des moyens de passer à une interface Wi-Fi. Cependant, c'est apparemment difficile à faire et ce n'est pas la même chose que ifconfig. Autant que je sache, ifconfig effectue un pont Ethernet , c'est-à-dire qu'il ne peut ponter que des combinaisons d'interfaces Ethernet réelles ou d'interfaces Ethernet "TAP" virtuelles. Cela inclut donc la transition entre deux interfaces TAP. Je ne sais pas sur les interfaces TUN.
Le problème que vous rencontrez avec QEMU est un problème que j'ai résolu récemment avec les émulateurs Macintosh SheepShaver et Basilisk II, qui peuvent également charger leur propre interface TAP fournie par TunTapOSX. Ce que j'ai fait était de configurer un serveur OpenVPN en mode pont dans une machine virtuelle Linux sur un ordinateur séparé, ce qui prend un certain travail, mais constitue un outil extrêmement utile. Ensuite, si vous êtes sur le même réseau local que le serveur VPN, vous pouvez vous y connecter via l'adresse IP privée du serveur. Je le note dans mon guide, lié ci-dessous. Suivez le premier guide pour configurer le serveur OpenVPN et le deuxième guide pour connecter l’émulateur.
http://www.emaculation.com/doku.php/bridged_openvpn_server_setup http://www.emaculation.com/doku.php/wireless_appletalk_ss_bii_osx
Le problème est que l'ordinateur exécutant le serveur OpenVPN doit être connecté au routeur via Ethernet. Notez également que cet ordinateur ne peut pas exécuter un émulateur utilisant un pont Ethernet, car cela pourrait interférer avec le pontage requis dans la machine virtuelle Linux pour OpenVPN, ou inversement.
la source
Essayez ceci lorsque vous créez un pont:
Je suis passé par là avec GNS3 et un laboratoire Riverbed Steelhead. Je l’ai donc expérimenté moi-même.
Cela amènera votre pont.
la source