平常工做中,經常會用虛擬機,在裏面安裝Server,搭建服務端環境供開發調試,這種使用場景通常都須要虛擬機可以正常訪問外部網絡,同時宿主機必須能夠訪問虛擬機。在Virtualbox中,虛擬機訪問外部網絡通常是使用配置起來最簡單的NAT模式,但純NAT模式下,宿主機不能訪問虛擬機,必須使用Bridged或者Host-only模式才能夠。在這兩個模式下,虛擬機均可以得到一個可用的IP地址,宿主機經過該IP地址便可訪問虛擬機。網絡
關於Virtualbox的網絡接入模式,不瞭解的同窗能夠自行Google一下,這部分資料其實都挺齊全的,這篇文章主要是簡單的介紹(記錄)一下在Virtualbox虛擬機中使用NAT模式訪問外部公共網絡(互聯網),再結合Host-only模式,令宿主機同時能夠用虛擬機的靜態IP地址訪問虛擬機的配置實現。該配置相對於單純使用Bridged模式的好處在於:即便沒有外部公用網絡,宿主機也能夠無障礙的訪問虛擬機,不會影響使用。oop
在Bridged模式下,虛擬機和宿主機處於同等地位,就像是一臺真實主機同樣存在於局域網中,能夠分配到一個網絡中獨立的IP,全部網絡功能都和在網絡中的真實機器同樣,網絡中的其它機器(包括宿主機)也能夠訪問到這臺虛擬機。同時,若是網絡斷開,即使虛擬機和宿主機實際上是在一臺物理機器上,宿主機也不可以訪問虛擬機。而Host-only模式,能夠理解爲Virtualbox在宿主機中模擬出一張專供虛擬機使用的網卡,全部虛擬機都是鏈接到該網卡上的,虛擬機能夠經過該網卡IP訪問宿主機,同時Virtualbox提供一個DHCP服務,虛擬機能夠得到一個內部網IP,宿主機能夠經過該IP訪問虛擬機。若是單純使用Host-only模式,則虛擬機不能鏈接外部公共網絡。測試
在有外部網絡的狀況下,假如須要將虛擬機開放給網絡中的其它機器訪問,好比讓同事連上虛擬機作開發測試等工做,那麼就能夠直接使用Bridged模式,該模式也僅須要佔用公共網絡中的一個IP地址,但平常使用環境中,有時候不必定有公共網絡能夠用,假如使用Bridged模式,則虛擬機連不上,開發工做也作不了,此時Host-only模式就是一個不錯的選擇,如果再配合NAT模式,則外部公共網絡可用時,虛擬機也能夠訪問外部公共網絡。spa
下面簡單介紹下使用這幾個模式時須要作的相關配置。3d
首先在Virtualbox中的全局配置(呼出快捷鍵ctrl+g)界面的網絡配置中,點擊右側添加按鈕,增長一個Host-only網絡。查看該網絡的詳情,能夠看到:調試
能夠看出,該網絡是192.168.56.0,可供分配使用的IP地址是192.168.56.101 - 192.168.56.254。rest
打開虛擬機的網絡配置,將網卡1的鏈接方式選爲「網絡地址轉換(NAT)」,網卡2的鏈接方式選爲「僅主機(Host-only)適配器」,以下圖所示:code
假如使用Bridged模式,則須要將鏈接方式選爲「橋接網卡」。orm
保存後,啓動虛擬機,虛擬機以Ubuntu server 12.04爲例,打開配置文件 /etc/network/interfaces 加入以下配置:server
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp # Virtualbox Host-only modeauto eth1 iface eth1 inet static address 192.168.56.190 netmask 255.255.255.0 network 192.168.56.0 # Virtualbox Bridged mode#auto eth1#iface eth1 inet static #address 192.168.0.190 #netmask 255.255.255.0 #gateway 192.168.0.1
該配置將虛擬機在內部網絡中的IP地址設置爲靜態分配(192.168.56.190),方便宿主機在hosts中綁定該IP訪問虛擬機。保存配置後,執行以下命令重啓網絡服務:
$ sudo /etc/init.d/networking restart
便可實現虛擬機使用NAT經過宿主機來正常訪問外部網絡,同時由於使用了Host-only模式,宿主機能夠經過虛擬機在內部網絡的IP地址訪問虛擬機,即便外部網絡不可用也不影響宿主機對虛擬機的訪問。