web-dev-qa-db-ja.com

ブリッジネットワーク:ゲストOSにIPアドレスがありません

欲しいもの:

さまざまなWeb開発テストサーバー用に(VirtualBox上で)Ubuntuを実行している仮想マシンゲストが必要です(たとえば、Grunt.jsがポート9000で実行されているなど、さまざまなポートで実行されています)。

  • これらのサーバーで実行されているWebアプリケーションをテストしたいa)ゲスト内からb)ホスト内から(Windows 7を実行中)、c)WiFi経由で接続された同じネットワーク内の他のデバイス(モバイルデバイスなど)から
    • ゲストの中からインターネットにアクセスできるようにしたい

私は最初、NATとホスト専用アダプターの両方をVirtualBoxで構成したソリューションを実行していました。これは、ホストからゲストにアクセスしたり、ゲスト内からインターネットにアクセスしたりするのに適していました。 。

他のデバイスが仮想マシンにアクセスできるようにしたいので、このソリューションは機能しなくなりました。私はこの数年前にブリッジネットワークアダプタを使用して実行できましたが、ここでは機能しないようです。

私がしたこと:

ブリッジネットワークをVirtualBoxの唯一のネットワークアダプターとして設定し、デフォルト設定のままにしました。ゲストを起動すると、右上のWiFi記号が点滅し続けます。つまり、矢印が表示されません。しばらくすると、「切断されました-現在オフラインです」と表示されます。これはifconfigの出力です。

eth0      Link encap:Ethernet  HWaddr 08:00:27:71:92:9c  
          inet6 addr: fe80::a00:27ff:fe71:929c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:233 errors:0 dropped:0 overruns:0 frame:0
          TX packets:103 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:16083 (16.0 KB)  TX bytes:22280 (22.2 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2624 (2.6 KB)  TX bytes:2624 (2.6 KB)

ご覧のとおり、inet4アドレスはありません。したがって、ゲスト内からホストにpingを実行することはできません。その逆も同様です。

私も試しました this 、つまりMACアドレスを変更して実行しました

Sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

Sudo reboot

何も変更しませんでした。

これをデバッグするために他に何ができますか? DHCPの問題だと思います。ホストやネットワーク内の他のマシンでIPを簡単に取得できますが、ゲストでは取得できません。

1
wnstnsmth

これはVirtualBoxで実行できます。最近、同じ構成を実行しています。Windows7ホスト、Arch Linuxゲスト、wifi付きのラップトップです。あなたが言ったように、それはゲストにブリッジネットワークを与えるときです。仮想カードにもvirtioドライバーを選択しましたが、それが目前のトピックに関連しているとは思えません。

ゲストは、ホストがたまたま接続しているルーターからIPを取得し、シームレスに機能していて、非常に印象的だと思います。 Xen Hostで同じことを達成しようとしましたが、できませんでした。つまり、これはVirtualBoxドライバーの魔法によるものであり、唯一の公開説明はここにあります: http://www.virtualbox.org/manual/ch06.html#network_bridged

ほとんどのワイヤレスアダプタはプロミスキャスモードをサポートしていないため、ワイヤレスインターフェイスへのブリッジングは有線インターフェイスへのブリッジングとは異なる方法で行われます。すべてのトラフィックはホストのワイヤレスアダプターのMACアドレスを使用する必要があるため、VirtualBoxは、応答がホストインターフェイスに送信されるように、発信パケットのイーサネットヘッダーの送信元MACアドレスを置き換える必要があります。 [...]VirtualBoxは、仮想マシンのIPアドレスを学習するためにARPパケットとDHCPパケットを調べます。

このドライバ拡張機能は、「Oracle VM VirtualBox Extension Pack」に記載されていないため、オープンソースである必要がありますが、ドキュメントを見つけるのはかなり困難です。残念ながら、トラブルシューティングの方法がわかりません。 、しかし私はしようとします:

  1. ホストワイヤレスカードのプロパティを見て、そこにvirtualboxのものが表示されるかどうかを確認します(それ以来、マシンを再インストールしたので、追加の項目が正確に何であるかを確認できません)
  2. ワイヤレスカードをアンインストールして再インストールします。追加のアイテムが削除される可能性が高いため、VMプロパティでブリッジネットワークを非アクティブ化/再アクティブ化すると、その部分が再インストールされると思います。

また、ルーターが自分のものである場合は、そのログを見て、少なくともゲストから一時的な接続を取得しているかどうかを確認できます。


編集:あなたはそれが別のルーター/アクセスポイントで動作しているとコメントしましたか?この場合、一部のルーターが同じMACアドレスに複数のIPを割り当てることを拒否する可能性があります。ルーターの各IPのMACが同じであるかどうかを確認するために、マシンがもうないのは残念ですが、そうなるはずです。

4
bonob

IEEE 802.11標準では、APが不明なMACアドレスからのパケットを拒否する必要があります。 APがクライアントからのデータパケットを受け入れる前に、クライアントは最初に802.11認証と関連付けを行う必要があります。したがって、「ブリッジモード」がVMまたはゲストOSが同じ無線カードを介して2番目のMACアドレスを使用しようとしていることを意味する場合、2番目のMACアドレスが802.11認証および関連付けを取得していることを確認する必要があります。それ以外の場合、APは2番目のMACアドレスからのパケットを無視する必要があります。

VirtualBoxがこの問題をどのように処理するかについてのドキュメントはありますか?これは、解決された(そして、それがどのように対処されたかについての文書が必要である)よく知られた問題であるか、「Wi-Fiを介したブリッジモードはサポートされていない」ことを十分に文書化する必要があります。

1
Spiff