web-dev-qa-db-ja.com

ホストからVirtualBoxで実行されているサーバーにアクセスする方法

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

VM内からブラウザーを介してlocalhost:8888でアプリを表示できます。

同じURLのホストからアプリを表示できません。それが目標です。

VBoxManage modifyvm "VM name" --natdnshostresolver1 onを試しましたが、影響はありませんでした。

私の設定は:

  • ホスト:Windows 7
  • ゲスト:Ubuntu 16.04.1 LTS
  • VirtualBox:5.1.4r110228

Guest Configuration

(ゲスト)NATの場合はifconfig

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
4
Kirkland

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

デフォルトでは、VirtualBoxでVMを作成すると、ネットワークアダプター1はNATに設定されます。これにより、VMに10.0.2.15/24のIPアドレスと10.0.2.2(ホストである必要があります)のデフォルトルートが付与されます。要するに、ウィンドウは、最初に追加のフープをジャンプすることなく、提供しているアドレスNATにルーティングしません。

VMをシャットダウンし、VMネットワークアダプター1の設定を「ブリッジ」に変更すると、特別なルートを追加せずにホスト(およびローカルネットワーク上のすべてのホスト)がそのVMと通信できるようになりますまたはジャンプしてフープ。

VMを再起動します。 localhost:8888への接続を確認してください。また、hostname:8888(/ etc/hostsファイルのループバック/ localhostアドレスにホスト名がnotが追加されていると想定)およびip-address:8888への接続を確認します。編集:投稿された/ etc/hostsの詳細に基づいて、VMをareにバインドし、したがって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に接続できるはずです。これらのホスト/クライアントがhostname:8888を介してwebappにアクセスするには、クライアントのホストファイル、ローカルDNS、またはDHCPサーバーで提供されている可能性のあるmDNSサービスも。

4
Daniel Liston

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

静的ルートを追加するには、次の操作を行います。ホストのネットワークプロパティを確認します。 VirtualBox Host-Only Networkと呼ばれるアダプタが見つかります。そのIPアドレスを見つけます。おそらく192.168.56.1です。これがデフォルトだと思いますが、別の値にすることもできます。それをa.b.c.dと呼びます。次に、ゲストのIPアドレスを取得します。それをw.x.y.zと呼びます。 (最初の3つのオクテットは両方のアドレスで同じである必要があります。)それができたら、ホストでDOSプロンプトを開き、次のコマンドを入力します。

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

それが機能する場合は、-pスイッチを指定して同じコマンドを実行し、それを永続的にすることができます(それ以外の場合は、次にホストを再起動するときにこのコマンドは消えます)。

0
Charles Burge