如何從主機存取 VirtualBox 中執行的伺服器?

如何從主機存取 VirtualBox 中執行的伺服器?

我正在虛擬機器上運行一個網路應用程式。

localhost:8888我可以透過虛擬機器內的瀏覽器查看該應用程式。

我無法從同一 URL 的主機看到該應用程式。這就是目標。

我嘗試過VBoxManage modifyvm "VM name" --natdnshostresolver1 on,但沒有產生影響。

我的配置是:

  • 主持人:Windows 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

localhost:8888URL 僅是您虛擬機器內的有效 URL。在該虛擬機器之外,您將必須使用ip.ad.dr.ess:8888hostname:8888。在後一種情況下,ip.ad.dr.ess會引入對解析到網路上的主機名稱的依賴性。

預設情況下,當您在 VirtualBox 中建立虛擬機器時,網路介面卡 1 設定為 NAT。這將為虛擬機器提供一個 IP 位址10.0.2.15/24和一個預設路由10.0.2.2(應該是您的主機)。長話短說,如果不先跳過更多的環節,Windows 就不會路由到它為其提供 NAT 的位址。

關閉虛擬機器並將虛擬機網路適配器1設定更改為「橋接」將允許您的主機(以及本地網路上的任何主機)與該虛擬機器進行通信,而無需添加任何特殊路由或跳過任何環。

重新啟動虛擬機器。驗證您與 的連線localhost:8888。也要驗證您與hostname:8888(假設主機名稱已not新增至 /etc/hosts 檔案中的 Loopback/localhost 位址)和ip-address:8888.編輯:根據發布的 /etc/hosts 詳細信息,您are將 VM 以及 Web 應用程式綁定到環回網路。此配置在虛擬機器之外根本不可用。

如果您的 Web 伺服器和應用程式不依賴首次設定/安裝的 IP,且 LAN 上有 DHCP 伺服器,則連接到 VM 所需的唯一其他資訊就是最初設定/安裝的 IP 位址。

要查找虛擬機器的 IP 位址:從 Ubuntu 桌面 (ctrl-alt-T) 打開終端機/控制台窗口,我們使用主機名稱、ifconfig 和 grep/etc/hosts命令將各個部分組合在一起並找到您的位址。在開啟的終端機中,鍵入hostname然後按 Enter 鍵。這可能是gc。在同一終端機中,鍵入ifconfig eth0 | awk '/Bcast/{print $2}'將顯示位址。 /etc/hosts 中應該有一行,其中包含位址,後面跟著主機名稱。 grep [hostname] /etc/hostsgrep [address] /etc/hosts應該找到您需要的線路。如果您提出的不是目前位址後面跟著主機名稱以外的任何內容,則需要修改 /etc/hosts 檔案以新增正確的資訊。

LAN 上的主機現在應該能夠透過連接埠 8888 連接到 VM 的 IP hostname:8888。 mDNS 服務。

答案2

如果您不希望虛擬機器暴露於外部網絡,這裡有一個使用連接埠轉送的快速解決方案。只需在虛擬機器的 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 開關運行相同的命令以使其永久化(否則下次重新啟動主機時它將消失)。

相關內容