題 從VirtualBox來賓操作系統連接到主機?


我基本上想從VirtualBox中的訪客訪問我的主機。是否有為我的主機提供的IP地址,我可以從訪客使用?設置它需要額外的步驟嗎?我想訪問我的主機的Apache,FTP和SSH服務。


193
2017-07-14 22:53


起源


沒有任何提示您的客人實際擁有的網絡配置,很難解決。有些人不允許訪問主機。嘗試訪客的默認網關地址。 - Turbo J
結果我可以通過10.0.2.2的默認網關到達它。 - Naftuli Kay
有關: stackoverflow.com/q/19933550/1157054  stackoverflow.com/q/16244601/1157054 - Ajedi32


答案:


這個答案幾乎與VirtualBox中的客戶操作系統設置有關;您只需要使用來賓操作系統上的網絡網關地址從來賓操作系統連接到主機操作系統。

在默認的Vagrant設置中,您應該能夠通過默認網關訪問主機。

在基於Windows的guest虛擬機上,您可以通過運行以下命令輕鬆確定此IP地址:

ipconfig

它應該拋出這樣的東西:

Windows IP Configuration

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 10.0.2.15
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.0.2.2

在此示例中,guest虛擬機可以訪問主機 10.0.2.2


在基於Unix / Linux的guest虛擬機上,使用以下命令:

netstat -rn

它應該拋出這樣的東西:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

在此示例中,guest虛擬機可以訪問主機 192.168.1.1


241
2017-07-15 01:49



根據您的回答使用默認網關連接時,任何想法為什麼連接會非常慢? - Ben Swinburne
這對我來說似乎不起作用(Ubuntu 12.04,Vagrant 1.0)。客人內部的默認網關顯示為 10.0.2.2,該IP的nmap失敗。 192.168.33.1似乎是正確的IP。 (我有 config.vm.network :hostonly, "192.168.33.52" 在我的配置中。) - Ajedi32
其實,沒關係。它確實有效。因為某種原因,nmap無法工作;不知道為什麼。我仍然可以從該IP連接到主機上運行的服務,即使nmap沒有顯示它們。 - Ajedi32
netstat -rn 在CentOS 7.2上,Docker 1.11顯示了一個 172.17 地址作為我的網關,但IP與我的主機不匹配。事實證明 10.0.2.2 沒有。 - Spencer Williams


從訪客訪問主機的Web服務器很容易。這可以使用兩種方法輕鬆完成。首先執行以下操作

  • 設備 並選擇 網絡適配器... 
  • 在適配器設置中,檢查 附上
  • 如果值是 NAT,做以下

  • 設置虛擬框時的默認網關通常是 10.0.2.2 作為默認值。如果你沒有改變任何東西,這將有效。但是如果你改變了它並且客人機器你 正在運行 視窗 運行以下命令並找到默認值 網關

    ipconfig /all

    如果你在 Linux,Unix或Mac OS, 運行以下命令 得到它

    netstat -rn | grep 'default' | awk '{print $2}'

  • 轉到Web瀏覽器並鍵入此默認網關,然後按Enter鍵。可以訪問Web服務器。

  • 如果值是 橋接適配器,做以下
    • 找到主機和來賓的IP地址
      • 如果你在Windows上,請運行 ipconfig 並獲取IP地址
      • 如果您使用的是Linux,Unix或Mac OS,請運行 ifconfig | grep 'inet' 並獲取IP地址
      • ip地址類似於192.168.1.1
    • 如果要訪問主機,請在guest虛擬機中運行瀏覽器並輸入主機的ip地址
    • 如果要訪問guest,請在主機中運行瀏覽器並輸入guest的ip地址

31
2017-07-14 12:27





另一種方法是使用“主機”類型的虛擬網絡。這為客戶操作系統中的接口提供了本地子網上的地址 不同 來自您的主機所在的“外部世界”子網。要做到這一點,你必須確保一些事情:

  • 您的VM配置了“僅主機”適配器;
  • 您的主機服務需要監聽所有本地適配器,或者至少是您希望能夠聯繫的適配器;
  • 您的主機將獲得自己的虛擬適配器,您將需要找出其IP地址並將其添加到客戶操作系統中的“主機”文件中(但這適用於客戶操作系統;在Windows XP上,它只是“ hosts“文件埋在C:/ WINDOWS / system32 / drivers / etc中”。為其指定要用於主機主機名的名稱。

完成此操作後,您應該能夠通過您編碼到主機文件中的名稱從VM中“查看”主機。

例如,在我的Ubuntu 11.04主機上,我在192.168.56.1上獲得了一個“vboxnet0”虛擬接口。機器中的適配器出現類似192.168.56.101的東西。我不需要去  到我的虛擬機,但我認為通過對主機主機文件的對稱更改是可能的。我加

192.168.56.1 mymachine

客戶操作系統主機文件,他們可以(例如)看到我的主機的Web服務器

http://mymachine/whatever

您當然可以設置橋接和僅主機適配器。


8
2017-07-17 18:37





您可以在VirtualBox中創建共享文件夾。這將在Virtual Box中自動創建“網絡共享”以訪問主機操作系統中的文件夾。

在Windows XP客戶操作系統中,這是一個不錯的步驟:

http://www.giannistsakiris.com/index.php/2007/09/28/virtualbox-access-shared-folders-from-windows-xp-guest-os/


0
2017-07-14 23:08



所以我可以在/ vboxsvr / ShareName訪問我的主機? - Naftuli Kay
是的,您可以設置一個像C:\ STUFF這樣的文件夾與VirtualBox共享。在VirtualBox Guest OS中,您可以轉到該vboxserver並訪問共享文件夾。 - kobaltz
我實際上不想要共享文件夾。我想要一台主機的IP地址。當我得到它時,我想用它在我的主機上使用服務,即: echo "GET /\r\n\r\n" | nc 192.168.100.100 80 (從guest虛擬機向我的主機發送HTTP GET請求。) - Naftuli Kay
在這種情況下,您可能需要將Guest OS網絡適配器設置為Bridge。這將從您的DHCP或路由器中提取IP地址。然後,您可以通過IP地址而不是VBox共享文件夾本機訪問主機。 - kobaltz


這是另一種解決方案 通過使用額外的網絡接口並設置發往主機的流量通過其他接口進行路由來解決此問題。


0
2018-03-28 15:12



歡迎來到超級用戶! 這會很好 在此處包含答案的基本部分,並提供僅供將來參考的鏈接。 - slhck