ホストからVirtualBoxで実行されているサーバーにアクセスするにはどうすればいいですか?

ホストからVirtualBoxで実行されているサーバーにアクセスするにはどうすればいいですか?

VM 上で Web アプリを実行しています。

localhost:8888VM 内からブラウザ経由でアプリを表示できます。

同じ URL のホストからアプリを見ることはできません。それが目標です。

試してみましたVBoxManage modifyvm "VM name" --natdnshostresolver1 onが効果はありませんでした。

私の設定は次のとおりです:

  • ホスト:ウィンドウズ7
  • ゲスト:Ubuntu 16.04.1 LTS
  • バーチャルボックス:5.1.4r110228

ゲスト構成

(ゲスト) ifconfigNATの場合

kirkland@GC:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:d0:fc:0e  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::4c67:70b5:c37b:8fa8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7431 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3587 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7444830 (7.4 MB)  TX bytes:731870 (731.8 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:1566 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1566 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:655936 (655.9 KB)  TX bytes:655936 (655.9 KB)

(ゲスト) /etc/hosts

127.0.0.1   localhost
127.0.1.1   GC

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

答え1

URLは VM 内でのみ有効な URL です。その VM の外部では、 または をlocalhost:8888使用する必要があります。後者の場合、ネットワーク上で に解決されるホスト名への依存関係が導入されます。ip.ad.dr.ess:8888hostname:8888ip.ad.dr.ess

デフォルトでは、VirtualBox で VM を作成すると、ネットワーク アダプタ 1 が NAT に設定されます。これにより、VM に の IP アドレス10.0.2.15/24と のデフォルト ルート10.0.2.2(ホストである必要があります) が与えられます。簡単に言うと、Windows は、最初にさらに多くの手順を踏まなければ、NAT を提供しているアドレスにルーティングしません。

VM をシャットダウンし、VM ネットワーク アダプタ 1 の設定を「ブリッジ」に変更すると、特別なルートを追加したり、複雑な手順を踏んだりすることなく、ホスト (およびローカル ネットワーク上の任意のホスト) がその VM と通信できるようになります。

VM を再起動します。 への接続を確認しますlocalhost:8888。また、hostname:8888(ホスト名がnot/etc/hosts ファイルの loopback/localhost アドレスに追加されたと仮定して) およびへの接続も確認しますip-address:8888。編集: 投稿された /etc/hosts の詳細に基づくと、areVM と Web アプリケーションがループバック ネットワークにバインドされます。この構成は、VM の外部ではまったく使用できません。

Web サーバーとアプリケーションが最初に構成/インストールされた IP に依存せず、LAN 上に DHCP サーバーがある場合、VM に接続するために必要なその他の情報は、DHCP 経由で割り当てられた IP アドレスのみです。

VM の IP アドレスを見つけるには、Ubuntu デスクトップからターミナル/コンソール ウィンドウを開きます (ctrl-alt-T)。hostname、ifconfig、grep/etc/hostsコマンドを使用して、情報をまとめてアドレスを見つけます。開いたターミナルで、hostname次のように入力して Enter キーを押します。これはおそらく gc です。同じターミナルで入力すると、ifconfig eth0 | awk '/Bcast/{print $2}'アドレスが表示されます。/etc/hosts に、アドレスの後にホスト名が続く行があるはずです。 grep [hostname] /etc/hostsまたは、grep [address] /etc/hosts必要な行が見つかるはずです。現在のアドレスの後にホスト名が続く以外のものが表示される場合は、/etc/hosts ファイルを変更して正しい情報を追加する必要があります。

これで、LAN 上のホストは、ポート 8888 で VM の IP に接続できるようになります。これらのホスト/クライアントが Web アプリケーションにアクセスする方法は、hostname:8888クライアント ホスト ファイル、ローカル DNS、または DHCP サーバーで提供される可能性のある mDNS サービスに依存します。

答え2

VMを外部ネットワークに公開したくない場合は、ポート転送を使用した簡単な解決策があります。VMのNAT設定で、以下に示すように、WebとSSHのポート転送プロファイルを作成するだけです。

ここに画像の説明を入力してください

答え3

これを実現するには、ブリッジ モードを使用する方がはるかに良いと思います。それが不可能または望ましくない場合は、ホストに静的ルートが必要になります。

静的ルートを追加するには、次のようにします。ホストのネットワーク プロパティを確認します。VirtualBox Host-Only Network というアダプタが見つかるはずです。その IP アドレスを見つけます。おそらく 192.168.56.1 で、これがデフォルトだと思いますが、他のアドレスである可能性もあります。これを abcd と呼びます。次に、ゲストの IP アドレスを取得します。これを wxyz と呼びます (最初の 3 オクテットは両方のアドレスで同じである必要があります)。取得したら、ホストで DOS プロンプトを開き、次のコマンドを入力します。

route add w.x.y.z mask 255.255.255.0 a.b.c.d

それが機能する場合は、-p スイッチを使用して同じコマンドを実行し、これを永続化できます (そうでない場合は、次にホストを再起動したときに消えます)。

関連情報