
我想要的是:
我想要一個運行 Ubuntu(在 VirtualBox 上)的虛擬機器來用於各種 Web 開發測試伺服器(在不同連接埠上運行,例如 Grunt.js 在連接埠 9000 上運行)。
我想測試在這些伺服器上運行的 Web 應用程式 a) 從來賓內部 b) 從主機內部(運行 Windows 7,順便說一句),c) 從同一網路中透過 WiFi 連接的其他裝置(例如行動裝置)
我希望能夠從訪客內部上網
我首先運行一個解決方案,在 VirtualBox 中配置了 NAT 和僅主機適配器,這對於從主機訪問來賓以及從來賓內部訪問 Internet 來說都很好。
現在我希望其他設備能夠存取虛擬機,這個解決方案就不再運作了。幾年前我可以使用橋接網路適配器來做到這一點,但這似乎在這裡不起作用,因為我在公司網路中。
我做了什麼:
因此,我在 VirtualBox 中使用預設設定設定了橋接網路適配器。當啟動虛擬機器時,我第一次看到我沒有網路連線,運行ifconfig
給出:
eth0 Link encap:Ethernet HWaddr 08:00:27:d1:1f:98
inet6 addr: fe80::a00:27ff:fed1:1f98/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:139 errors:0 dropped:0 overruns:0 frame:0
TX packets:658 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11274 (11.2 KB) TX bytes:140266 (140.2 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:1728 errors:0 dropped:0 overruns:0 frame:0
TX packets:1728 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1001564 (1.0 MB) TX bytes:1001564 (1.0 MB)
如您所見,沒有可用的 ipv4,而且我無法 ping 或向訪客外部要求任何內容。我不完全確定是因為某些配置錯誤還是因為公司網路不允許這樣的事情 - 我也沒有從 IT 部門得到任何幫助...
編輯:我發現橋接連接在使用另一個網路(而不是公司網路)時有效。我還可以從其他裝置存取訪客伺服器。
我怎樣才能進一步調試這個?這種行為的原因可能是什麼?
答案1
遺憾的是,我對 IPv6 不太熟悉,無法判斷您的虛擬機器是否正在獲取它自己的 IP,所以我只想說橋接連接的工作方式是虛擬機器請求它自己的 IP,本質上是這樣您的實體機在網路上有2 個IP。如果企業網路像大多數情況一樣停用了 DHCP,或以其他方式限制了 IP,則您必須讓虛擬機器擁有自己的 IP,才能按照您想要的方式運作。
也就是說,可以在 VirtualBox 中為 NAT 網路模式設定「連接埠轉送」。這樣,當您的實體電腦在您指定的連接埠收到請求時,您的電腦會將其傳遞到您的虛擬機器。
由於虛擬機器連接到 VirtualBox 內部的專用網路且對主機不可見,因此主機或同一網路上的其他電腦無法存取來賓上的網路服務。然而,與實體路由器一樣,VirtualBox 可以透過連接埠轉送為訪客以外的世界提供選定的服務。這表示 VirtualBox 偵聽主機上的某些端口,並在相同或不同的連接埠上將到達該處的所有資料包重新傳送給來賓。
如果您想了解更多詳細信息,請參閱 VirtualBox 說明文件中「虛擬網路」下的「網路位址轉換 (NAT)」部分。在虛擬機器的高級網路設定下,有一個漂亮的小 GUI 可以幫助您完成此操作。