VMWare網絡連接透析

轉自:http://blog.csdn.net/struggleyb/archive/2006/08/21/1102214.aspx

 

以前在學校,VMWare裏面的Gentoo Linux是採用network bridge 的方式和windows共享一個物理網卡上網,這次回家,將電腦搬了回來,改成了adsl上網,結果發現Linux居然無法訪問網絡了,我的Gentoo Linux如果沒有網絡那就等於廢了,不能emerge,Gentoo的優勢何在啊?逼的我瘋狂google,查閱了不少VMWare的文檔,終 VMWare的網絡問題搞定了。其實,這已經是一個月前的事情了,直到現在才找了點時間,把它寫出來:

三種網絡方式

BRIDGED: 


bridge就是“橋”的意思,說起橋接,就不能不說局域網。比如我們有兩個局域網絡,他們的ip段都處於192.168.0.*,同時,我們希望把這兩個網絡鏈接起來,這中情況下,我們就可以採用橋接。這個時候,“橋”就是一個主機,這個機器擁有兩塊網卡,分別處於兩個局域網中,同時在“橋”上,運行着程序,讓局域網A中的所有數據包原封不動的流入B,反之亦然。這樣,局域網A和B就無縫的在鏈路層連接起來了(當然要保證兩個局域網沒有衝突的 IP)。這就是橋的作用,在鏈路層無縫的溝通兩個局域網。

而VMWare的橋也是同樣的道理,只不過,本來作爲硬件的一塊網卡,現在由VMWare軟件虛擬而來罷了!當採用橋接時,VMWare會虛擬一塊網卡和真正的物理網卡就行橋接,這樣,發到物理網卡的所有數據包就到了VMWare虛擬機,而由VMWare發出的數據包也會通過橋從物理網卡的那端發出,這樣,如果物理網卡可以上網,那麼橋接的軟網卡也沒有問題了,這就是橋接上網的原理了。

在橋接時,VMWare網卡和物理網卡應該處於同意ip網段,所以在虛擬機中ping物理網卡ip,或者在主機總ping虛擬機網卡ip,都可以ping通。

NAT:

nat就是network address translate的簡稱。網絡地址轉換,這個技術是爲了讓象192.168.*.*這樣的私有ip段能夠訪問internet而開發的。私有ip段,可以由任何公司和個人使用,所以世界上有無數電腦使用了192.168.0.111這樣的地址,而這個地址絕對不能出現在internet上,因爲這肯定會造成路由的失敗。但是,ip地址的稀缺讓我們必須採用這種共享ip的方案,同時還要允許這些機器訪問internet。這樣的前提下,NAT就應運而生了。

NAT技術應用在internet網關和路由器上,比如192.168.0.111這個地址要訪問internet,它的數據包就要通過一個網關或者路由器,而網關或者路由器擁有一個能訪問internet的ip地址,這樣的網關和路由器就要在收發數據包時,對數據包的IP協議層數據進行更改(即 NAT),以使私有網段的主機能夠順利訪問internet。

我想到的一個最典型的例子,就要算我的大學宿舍了。宿舍內部網段192.168.1.× ,通過路由器進入校園局域網10.10.110.×,然後通過學校網關,進入internet。這個過程中,宿舍的路由器做了一次NAT,而學校的網關又做了一次NAT。

VMWare的NAT上網採用的技術是一樣的,它在主機和虛擬機之間用軟件僞造出一塊網卡,這塊網卡和虛擬機的ip處於一個地址段。同時,在這塊網卡和主機的網絡接口之間進行NAT。虛擬機發出的每一塊數據包都會經過虛擬網卡,然後nat,然後由主機的接口發出。

由於在這種條件下,虛擬機和主機不在同一個ip段,但是主機相當於虛擬機的網關,所以虛擬機能ping到主機的ip,但是主機ping不到虛擬機的ip。

Host-only:

顧名思義,這種技術提供的是主機和虛擬機之間的網絡互訪,而不是虛擬機訪問internet的技術。如果,你只想讓虛擬機和主機之間有數據交換,而不想讓虛擬機訪問internet,就要採用這個設置了。

Host-only的條件下,VMWare在真正的Windows系統中,建立一塊軟網卡。這塊網卡可以在網絡連接中看到,這塊網卡的作用就是使windows看到虛擬機的IP。

由於,這種技術就是將主機和虛擬機通過一個ip段的網卡聯繫起來,所以雙方都可以ping到對方。


實際問題

想明白了以上問題後,再去觀察實際中出現的問題,就很好理解了。在學校時候,我採用bridge技術使虛擬機訪問internet,而到家之後,採用了adsl上網,卻行不通了。

問題就在於,bridge是通過橋接虛擬機的網卡和物理網卡來實現虛擬機訪問internet的,這要求實際的物理網卡必須能訪問internet。學校採用的是局域網,這一點可以滿足,但是家裏採用的adsl。adsl上網,採用的pppoe技術,就是在網卡之上建立起一個ppp連接。這種條件下,所有數據包是通過ppp封裝之後發出的,雖然也是從網卡發出,但是包的形式就和普通的internet數據包不一樣了。也就是說,實際的物理網卡已經沒有直接訪問internet的能力了。而必須通過ppp接口封裝的數據包,才能訪問internet。

爲了使虛擬機能夠訪問internet,我們必須使虛擬機的數據包從ppp接口發出去,也就是從adsl的連接發出去。這個時候,NAT技術就可以派上用場了。只要採用NAT,讓虛擬機的數據包經由adsl連接來收發,就可以解決上網問題了。理論如此,實際操作如下:



如上圖,選擇一塊虛擬網卡,作爲NAT使用的網卡。並且,設置好虛擬網段(要和虛擬機裏系統的ip處於一個網段)。




如上圖,將設置好的用於NAT的網卡和虛擬機的虛擬網卡綁定。

然後,進入虛擬機,設置IP,就可以上網了。

其實,無論在什麼條件下,只要主機能上網,才用NAT技術,都可以使虛擬機訪問internet;只有在主機網卡處在一個可以訪問internet的局域網中的時候,虛擬機才能通過bridge訪問internet;Host-only技術只用於主機和虛擬機互訪,於訪問internet無關。
發佈了10 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章