
我正在虛擬機器上運行一個網路應用程式。
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:8888
URL 僅是您虛擬機器內的有效 URL。在該虛擬機器之外,您將必須使用ip.ad.dr.ess:8888
或hostname: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/hosts
或grep [address] /etc/hosts
應該找到您需要的線路。如果您提出的不是目前位址後面跟著主機名稱以外的任何內容,則需要修改 /etc/hosts 檔案以新增正確的資訊。
LAN 上的主機現在應該能夠透過連接埠 8888 連接到 VM 的 IP hostname:8888
。 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 開關運行相同的命令以使其永久化(否則下次重新啟動主機時它將消失)。