
VM 上で Web アプリを実行しています。
localhost:8888
VM 内からブラウザ経由でアプリを表示できます。
同じ URL のホストからアプリを見ることはできません。それが目標です。
試してみましたVBoxManage modifyvm "VM name" --natdnshostresolver1 on
が効果はありませんでした。
私の設定は次のとおりです:
- ホスト:ウィンドウズ7
- ゲスト:Ubuntu 16.04.1 LTS
- バーチャルボックス:5.1.4r110228
(ゲスト) ifconfig
NATの場合
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:8888
hostname:8888
ip.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 の詳細に基づくと、are
VM と 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
答え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 スイッチを使用して同じコマンドを実行し、これを永続化できます (そうでない場合は、次にホストを再起動したときに消えます)。