小さなFreeBSDライブCD と [〜#〜] qemu [〜#〜] を取得し、Mac OS X 10.8Wi-Fi接続をブリッジしようとしています。ゲストOSは私のLANで利用できます。ただし、ゲストOSがDHCPリースを取得することはありません。
これは、「ブリッジ」ネットワークモードのVirtualBoxで完全に機能するため、実行できることはわかっています。 VirtualBoxはこのプロジェクトに必要なアーキテクチャをサポートしていないため、QEMUで動作させる必要があります。
グーグルの時間に基づいてこれまでに行ったことは次のとおりです。
インストール済み TUNTAP for OS X
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
ブリッジを作成しました:
$ 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)
tcpdump
を-I
で開始し、 wifiデバイスでプロミスキャスモードを有効にする :
$ Sudo tcpdump -In -i en0
ブリッジネットワーク命令 を使用して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リースを取得することはありません。
tcpdump -ni tap0
の場合、ワイヤレスネットワークからのトラフィックがたくさんあります。しかし、私がtcpdump -ni en0
の場合、QEMUゲストOSからのDHCPトラフィックは表示されません。
何か案は?
更新1:Sudo defaults write "/Library/Preferences/SystemConfiguration/com.Apple.Boot" "Kernel Flags" "net.inet.ip.scopedroute=0"
を試し、 このメーリングリストの提案 ごとに再起動しましたが、役に立ちませんでした。実際、VirtualBoxブリッジモードが機能しなくなりました。
更新2:興味深いことに、QEMUゲストの仮想インターフェイスはブロードキャストパケットのみを取得します。どういうわけかルートを追加する必要がありますか?うーん...
ブリッジを作成するときにこれを試してください。
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とRiverbedSteelhead Labでこれを経験したので、私はこれを自分で経験しました。
これはあなたの橋を持ち上げます。
ご指摘のとおり、VM VirtualBoxなどのソフトウェアにはWi-Fiインターフェイスにブリッジする方法があります。ただし、これは明らかに困難であり、ifconfigと同じではありません。私の知る限り、ifconfigはethernetブリッジングを実行します。つまり、実際のイーサネットインターフェイスまたは仮想「TAP」イーサネットインターフェイスの組み合わせのみをブリッジできます。 2つのTAPインターフェイスのブリッジングが含まれます。TUNインターフェイスについてはわかりません。
QEMUで発生している問題は、MacintoshエミュレーターのSheepShaverとBasilisk IIで最近解決した問題です。これらは、TunTapOSXが提供する独自のTAPインターフェイスもロードできます。私がやったことは、Linux VMの別のコンピューターにブリッジモードのOpenVPNサーバーをセットアップすることでした。これには多少の手間がかかりますが、非常に便利なツールです。 VPNサーバーと同じLANで、サーバーのプライベートIPアドレスを介して接続できます。これは以下にリンクされているガイドに記載されています。OpenVPNサーバーのセットアップに関する最初のガイドと、エミュレーターの接続に関する2番目のガイドに従ってください。
http://www.emaculation.com/doku.php/bridged_openvpn_server_setuphttp://www.emaculation.com/doku.php/wireless_appletalk_ss_bii_osx
問題は、OpenVPNサーバーを実行しているコンピューターがイーサネットでルーターに接続されている必要があることです。また、イーサネットブリッジングを使用してエミュレーターを実行することはできません。これは、Linux VM for OpenVPN、またはその逆)で必要なブリッジングに干渉する可能性があるためです。