VMWare Workstation聯網模式

2021-06-21 14:18:01 字數 3983 閱讀 9422

在使用vmware workstation時,虛擬機器聯網有三種模式可以選擇:橋接模式(bridged)、僅主機模式(host-only)和nat模式。三種聯網模式分別適用於不同的應用場景,那麼這三種聯網模式究竟有什麼區別,以及它們的工作原理分別是什麼呢?接下來,我將對這些問題進行乙個詳細的解答。

在介紹vmware workstation的聯網模式之前,必須首先明確虛擬交換機的概念。虛擬交換機,有時也叫虛擬網橋,是一種通過軟體實現的交換機,它的工作方式和物理交換機類似,用於做區域網中鏈路層幀的**,但虛擬交換機主要用於虛擬化計算中,它連線的是虛擬裝置上的虛擬網絡卡。

在vmware workstation的安裝過程中,它會在使用者的主機上預設建立三個虛擬交換機:vmnet0(預設虛擬交換機)、vmnet1(host-only模式使用)和vmnet8(nat模式使用)。除此之外,使用者還可以新增額外的虛擬交換機,如vmnet2、vmnet3等,根據所安裝的vmware workstation的版本,使用者可以新增不同數量的虛擬交換機。

除了建立虛擬交換機之外,vmware workstation在安裝時,還會預設新增幾個服務,如nat服務用於做網路位址轉換,dhcp服務用於做動態ip位址分配。

vmware workstation橋接模式用到了虛擬交換機vmnet0,它的聯網方式如圖1所示。

圖1 橋接模式

從上圖可以看出,通過橋接模式聯網,虛擬機器和host主機處於同等的地位,它們都直接連線在虛擬交換機vmnet0上,那麼這時虛擬機器的ip位址從何而來呢?答案是host主機的ip位址從**來,它的ip位址就從**來。因此,通過這種聯網方式,使用者建立一台虛擬機器就相當於在區域網裡面新增了一台物理機,它可以和區域網裡面的其他機器互ping。

對於圖1所示的網路結構,有很多值得**的地方,其中乙個最大的問題就是:從使用者角度來看,明明是主機連線著區域網交換機,而在這裡為什麼變成vmnet0連線到區域網交換機了呢。

其實,這裡涉及到了乙個虛擬交換機連線物理網路的過程。下面我通過講述openvswitch(鼎鼎大名的linux上的虛擬交換機軟體,以下簡稱ovs)連線物理網路的方式來講述這個過程,vmnet0的工作方式和ovs大同小異,只是ovs使用起來更直觀。

使用ovs連線物理網路主要分為以下幾步:

第一步,使用者首先通過命令ovs-vsctl add-br br0在主機上建立乙個虛擬交換機br0。在建立br0的同時,會自動在主機上建立一塊虛擬網絡卡(名字和虛擬交換機一樣也叫br0),這個網絡卡就像物理交換機的管理介面一樣,使用者可給該網絡卡配置ip位址,然後telnet到交換機上對該交換機進行管理。

第二步,通過命令ovs-vsctl add-port br0 eth0把主機的外網介面eth0新增到br0上作為br0的乙個埠,並把eth0設定為混雜模式(linux下的概念?其實就是設定為可以接收所有到達的資料報),這一步是br0連線物理網路的關鍵。借由這一步,br0就通過埠eth0實現了和區域網物理交換機的級聯,從而區域網的資料幀能夠到達br0。

好了,級聯是成功了,但是更大的問題出現了!主機上不了外網了!這是為什麼呢?因為在上面的第二步中,已經把主機的外網介面eth0作為虛擬交換機的乙個埠了,很明顯交換機的埠是不會有ip位址的(就算設了ip位址也沒用!),所以主機沒有ip了!那麼現在怎麼解決這個問題呢?這就需要接下來的第三步。

第三步,通過命令ip address add $host_ip dev br0把原本分配給eth0的ip位址分配給虛擬交換機br0的管理網絡卡br0(名字和虛擬交換機一樣)。這樣主機通過該虛擬網絡卡br0就可以連線外網了。

這三個步驟的結果可以通過圖2所示的平面結構圖表示。

圖2 br0平面結構圖

從上述分析可以得出,當在主機上安裝了ovs/vmnet0之後,使用者的主機其實已經變成了一台交換機,而主機作業系統其實就變成了公升級版的交換機管理系統(除了管理交換機,還有很多其它的程式)。所以,從這個角度來看,就很容易理解為什麼是vmnet0連線到區域網交換機了,橋接模式的原理也很好理解了。

vmware workstation聯網的第二種模式為僅主機模式,它主要用到虛擬交換機vmnet1,它的聯網方式如圖3所示。

圖3  host-only模式

在host-only模式下,主機同樣通過vmnet0橋接上網,但是其它的虛擬機器已經不再連線到vmnet0上面了,而是連線在虛擬交換機vmnet1上。從圖3可以看出,vmnet1並沒有與外部區域網連線,它通過自己的dhcp為虛擬機器分配ip位址,因此在host-only模式下,虛擬機器是不能上外網的(除非你把主機作為虛擬機器的閘道器,並做nat轉換),但是虛擬機器、主機和vmnet1其實構成了乙個小型區域網,因此它們互相之間可以ping通。

這裡有乙個有趣的問題,主機(host)和vmnet1是怎麼連線起來的呢?顯然它不是通過主機的外網網絡卡(在vmnet0上呢),而是通過vmware workstation安裝過程中在主機上建立的兩張網絡卡之一:vmware network adapter vmnet1(win7系統在網路和共享中心可以看到它)。如果把這張網絡卡禁掉,虛擬機器和主機之間就不能互ping了,而且上面所說的虛擬機器ping通主機也只是ping通這張網絡卡的位址而已。

vmware workstation nat模式主要用到vmnet8虛擬交換機,該模式可以用圖4所示的結構來表示。

圖4 nat模式

從圖4中可以看出,nat模式比起host-only模式在元件上有兩處區別:1)多了乙個叫vnat的路由器;2)vmnet1虛擬交換機被vmnet8替換了,因此這次是通過vmnet8構建了乙個小型區域網來實現虛擬機器和主機之間的互ping。

vnat,它其實是vmware workstation在安裝時建立在主機上的nat服務,它已被vmware自動關聯到vmnet0和vmnet8虛擬交換機之上(使用者建立的虛擬機器可以直接使用了)。正是因為有了nat,所以vmnet8上橋接的虛擬機器可以訪問外網了(但這時外網還不能訪問虛擬機器,除非使用者在主機上做了埠對映),所以如果哪天使用者發現自己虛擬機器的網路配置都正確,但就是上不了外網,首先就應該看nat服務是否正常工作。

從圖4中可以看出vmnet8上還連線了其它兩個非虛擬機器元件,第乙個為vdhcp,它是用來為虛擬機器分配ip位址用的,它其實是主機上的dhcp服務。在通過vdhcp為虛擬機器分配ip時,有乙個很重要的資訊需要分配給虛擬機器,那就是閘道器位址(在這裡其實可以理解為vnat的位址),如果沒有該位址,那麼虛擬機會找不到vnat路由器,從而不能訪問外網。所以,在手動為虛擬機器配置靜態ip時,一定要指定閘道器位址,否則會上不了外網。

vmnet8上連線的另乙個非虛擬機器元件為主機,這時主機連線vmnet8顯然也不是通過外網網絡卡,而是通過vmware workstation安裝過程中在主機上建立的另一張網絡卡:vmware network adapter vmnet8,因此如果禁掉該網絡卡,相當於斷掉主機與vmnet8的連線,主機將ping不通虛擬機器了。但是這時虛擬機器可以ping通主機的外網位址,因為虛擬機器的資料報可以先通過vnat,再通過vmnet0,最後到達主機。

根據vmwareworkstation三種模式的聯網原理,以及每種模式下虛擬機器和物理主機的網路連通性,總結一下這三種聯網模式的應用場景。

bridged模式:由於在這種模式下,虛擬機器就相當於區域網裡面的一台物理主機,因此,如果使用者的虛擬機器能從區域網獲取ip,並且使用者想在自己的主機上架設很多臺可被區域網內其它主機訪問的虛擬主機(如虛擬伺服器),可以考慮使用這種模式。

host-only模式:由於在這種模式下,虛擬機器只能和其它虛擬機器以及物理主機通訊,不能訪問外部網路,外部網路也不能訪問虛擬機器,所以這種模式多用於需要乙個隔離網路的實驗場景。

nat模式:這種模式應該是使用最多的一種模式了。如果使用者想要快速搭建一些能夠上網,但是又不想被外部主機訪問的虛擬機器,就可以採用這種模式(筆者還用這種模式做過虛擬桌面)。

參考文章:

VMware workstation 錯誤解決

1 在開啟電源的時候出現內部錯誤,如圖所示 有人說是沒有許可權,使用管理員執行即可 還有人說是vm服務沒有啟動,一共五個 我按照上邊的兩個處理了都不行。最後,我刪除了.lck檔案,就沒有這個錯誤了,這個檔案在centos下。2 處理了上邊的錯誤後,我這裡出現了新的錯誤 vmx 檔案,搜尋 vmci0...

讓VMWare Workstation成為服務

讓vmware workstation實現服務自啟動的做法.讓vmware workstation成為服務 讓vmware成為服務,目的是讓虛擬機器和宿主主機同時啟動,以便宿主主機可以登入到域控制器 1.所需的工具 instsrv.exe和srvany.exe 這兩個工具在windows 2003 ...

VMware Workstation下網路設定問題

1 虛擬機器的設定 一 般情況下,直接選擇nat模式,與主機共享ip,設定如下 如果需要更改ip,需要,更改如下3處 此處設定,確定後,安裝linux系統的ip,會在192.168.133.128 192.168.133.254之間。2 關於linux網路設定 一般來說,剛安裝好的linux系統,i...