次の問題があります。OS xUbuntu があり、VirtualBox で仮想マシンを実行しています。VM の OS は Debian Wheezy です。Flask アプリケーションがあります。私がやりたいことは、VM (127.0.0.1:5000 にある) からアプリケーションを起動するときに、ホスト マシン (xUbuntu) からブラウザーで実行することです。
それ、どうやったら出来るの?
次の問題があります。OS xUbuntu があり、VirtualBox で仮想マシンを実行しています。VM の OS は Debian Wheezy です。Flask アプリケーションがあります。私がやりたいことは、VM (127.0.0.1:5000 にある) からアプリケーションを起動するときに、ホスト マシン (xUbuntu) からブラウザーで実行することです。
それ、どうやったら出来るの?
VirtualBox が「ゲスト」VM (この場合は Debian Wheezy VM) が「ホスト」コンピューター (この場合は xUbuntu) のネットワークにアクセスできるようにするために使用するいくつかの戦略があります。最後に、あなたがやろうとしていることを行うにはいくつかの方法があり、どの戦略を使用するかは状況に固有である可能性があるため、それぞれの簡単な概要を説明します.
デフォルトでは、「NAT」 (ネットワーク アドレス変換) を使用します。これは基本的に、ホストをネットワーク スイッチのようにセットアップし、すべてのゲスト イメージを「サブネット」の下に置きます。これにより、ゲストがネットワークやインターネットに簡単にアクセスできるようになりますが、ホストがゲストに簡単にアクセスできるようになるわけではありません (ただし、NAT ポート フォワーディングでは可能です)。つまり、ホスト IP が 192.168.1.9 の場合でも、ゲスト IP は 10.0.2.15 になります。ポート フォワーディングを設定しないと、ホスト コンピューターから 10.0.2.15 に接続できず、ゲストから発信された接続のパケットのみがゲストに戻る方法を見つけることができます。
これにより、さまざまなゲスト VM を、ホストと同じネットワーク上のコンピューターであるかのように見せることができます。つまり、ホストがルーターから 192.168.1.100 の IP を受信した場合、ゲストは 192.168.1.101 を取得する可能性があります。この場合、両方のコンピュータがこれらの IP アドレスを使用して相互に通信できます。ただし、これは、ホストとゲストに IP アドレスを提供するルーターがない場合 (たとえば、ラップトップで実行していて、接続するワイヤレス アクセス ポイントがない場合)、ホストとゲストが通信できないことを意味します。これは、VM が外部トラフィックを受信できることも意味します。これは、セキュリティに影響する可能性があります。最後に、ルーターが DHCP を介して IP を設定している可能性が高いため、VM を起動するたびにゲスト IP が変更される可能性があり、煩わしい場合があります。
したがって、ホスト コンピュータをルーターに接続する必要があり、パケットがルーターを通過するという事実に問題がない限り、このようにシステムを設定することはうまくいく可能性があります。
これは、「内部ネットワーク」として設定されたゲスト VM が、ホストに接続するだけでなく、独自のネットワーク上で相互に通信できることを意味します。ただし、ホストが VM に接続することを許可しないと思われるため、おそらくあなたが望むものではありません。私はこれについてあまり経験がないことに注意してください。
これにより、ホストとゲストの間でパケットを送信するために使用できるホスト コンピューターに新しいインターフェイスが作成されます。これは、IP アドレスを割り当てるためにルーターが必要ないことを意味します。ただし、これは、ゲストがインターネットにアクセスできず、ホストに直接接続するだけであることも意味します。
明らかに、何をすべきかはケースによって異なります。Superuser に関するこの質問に示されているように、適切なオプションが 1 つとは思えない場合があります。答えは回避策を示しています。複数のスタイルのネットワーキングの利点を得るために、ゲストに 2 つの別々のアダプターを使用させます。例として、NAT (ゲストがインターネットに簡単にアクセスできるようにする) 用のアダプターと、ホストオンリー (ホストがゲストに接続できるようにする) 用のアダプターを使用します。
この設定に問題がある場合は、VirtualBox コミュニティまたはスーパーユーザー(StackOverflow よりも VirtualBox 固有の質問に適した場所です) を使用することを検討してください。
ここで説明したように、この問題を解決しました みんなの努力に感謝します!