日常工作中,常常會用虛擬機,在里面安裝Server,搭建服務端環(huán)境供開發(fā)調(diào)試,這種使用場景一般都需要虛擬機能夠正常訪問外部網(wǎng)絡,同時宿主機必須可以訪問虛擬機。在Virtualbox中,虛擬機訪問外部網(wǎng)絡一般是使用配置起來最簡單的NAT模式,但純NAT模式下,宿主機不能訪問虛擬機,必須使用Bridged或者Host-only模式才可以。在這兩個模式下,虛擬機都可以獲得一個可用的IP地址,宿主機通過該IP地址即可訪問虛擬機。
關于Virtualbox的網(wǎng)絡接入模式,不了解的同學可以自行Google一下,這部分資料其實都挺齊全的,這篇文章主要是簡單的介紹(記錄)一下在Virtualbox虛擬機中使用NAT模式訪問外部公共網(wǎng)絡(互聯(lián)網(wǎng)),再結合Host-only模式,令宿主機同時可以用虛擬機的靜態(tài)IP地址訪問虛擬機的配置實現(xiàn)。該配置相對于單純使用Bridged模式的好處在于:即使沒有外部公用網(wǎng)絡,宿主機也可以無障礙的訪問虛擬機,不會影響使用。
在Bridged模式下,虛擬機和宿主機處于同等地位,就像是一臺真實主機一樣存在于局域網(wǎng)中,可以分配到一個網(wǎng)絡中獨立的IP,所有網(wǎng)絡功能都和在網(wǎng)絡中的真實機器一樣,網(wǎng)絡中的其它機器(包括宿主機)也可以訪問到這臺虛擬機。同時,如果網(wǎng)絡斷開,即便虛擬機和宿主機其實是在一臺物理機器上,宿主機也不能夠訪問虛擬機。而Host-only模式,可以理解為Virtualbox在宿主機中模擬出一張專供虛擬機使用的網(wǎng)卡,所有虛擬機都是連接到該網(wǎng)卡上的,虛擬機可以通過該網(wǎng)卡IP訪問宿主機,同時Virtualbox提供一個DHCP服務,虛擬機可以獲得一個內(nèi)部網(wǎng)IP,宿主機可以通過該IP訪問虛擬機。如果單純使用Host-only模式,則虛擬機不能連接外部公共網(wǎng)絡。
在有外部網(wǎng)絡的情況下,假如需要將虛擬機開放給網(wǎng)絡中的其它機器訪問,比如讓同事連上虛擬機做開發(fā)測試等工作,那么就可以直接使用Bridged模式,該模式也僅需要占用公共網(wǎng)絡中的一個IP地址,但日常使用環(huán)境中,有時候不一定有公共網(wǎng)絡可以用,假如使用Bridged模式,則虛擬機連不上,開發(fā)工作也做不了,此時Host-only模式就是一個不錯的選擇,若是再配合NAT模式,則外部公共網(wǎng)絡可用時,虛擬機也可以訪問外部公共網(wǎng)絡。
下面簡單介紹下使用這幾個模式時需要做的相關配置。
首先在Virtualbox中的全局配置(呼出快捷鍵ctrl+g)界面的網(wǎng)絡配置中,點擊右側添加按鈕,增加一個Host-only網(wǎng)絡。查看該網(wǎng)絡的詳情,可以看到:
可以看出,該網(wǎng)絡是192.168.56.0,可供分配使用的IP地址是192.168.56.101 - 192.168.56.254。
打開虛擬機的網(wǎng)絡配置,將網(wǎng)卡1的連接方式選為“網(wǎng)絡地址轉換(NAT)”,網(wǎng)卡2的連接方式選為“僅主機(Host-only)適配器”,如下圖所示:
假如使用Bridged模式,則需要將連接方式選為“橋接網(wǎng)卡”。
保存后,啟動虛擬機,虛擬機以Ubuntu server 12.04為例,打開配置文件 /etc/network/interfaces 加入如下配置:
# 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
該配置將虛擬機在內(nèi)部網(wǎng)絡中的IP地址設置為靜態(tài)分配(192.168.56.190),方便宿主機在hosts中綁定該IP訪問虛擬機。保存配置后,執(zhí)行如下命令重啟網(wǎng)絡服務:
$ sudo /etc/init.d/networking restart
即可實現(xiàn)虛擬機使用NAT通過宿主機來正常訪問外部網(wǎng)絡,同時因為使用了Host-only模式,宿主機可以通過虛擬機在內(nèi)部網(wǎng)絡的IP地址訪問虛擬機,即使外部網(wǎng)絡不可用也不影響宿主機對虛擬機的訪問。