深入理解NAT模式

首先說明一下我所遇到的具體情況:本人在主機上安裝的是VMware Workstation,在虛擬機中安裝了Ubuntu 8.10。主機上網方式是學校校園網,固定IP,綁定MAC,使用的是銳捷客戶端。安裝VM後生成了2個虛擬網卡,分別爲VMware Virtual Ethernet Adapter for VMnet1和VMware Virtual Ethernet Adapter for VMnet8,分別簡稱爲VMnet1虛擬網卡和VMnet8虛擬網卡算了。由於官方銳捷會檢測到多網卡,會每隔一段時間自動斷網,提示我禁用掉多餘的網卡,無奈只好禁用掉了那兩個虛擬網卡。過了一段時間,我們學習Linux,所以在虛擬機中安裝了Ubuntu 8.10,想讓Ubuntu也上網。瞭解到NAT模式配置最簡單,所以就用它了,在Ubuntu中設置IP、DNS都爲自動獲取的方式,也就是DHCP吧,由於銳捷會檢測到多網卡,會每隔一段時間自動斷網,所以我很快啓用那個VMnet8虛擬網卡,可以在Ubuntu中上網了,可是一會兒就斷了,就是因爲銳捷原因啊!因此一直以來,我總是BS銳捷,不讓我用虛擬網卡,不能在虛擬機中上網。可是又發生了一個情況讓我稍微改變了對銳捷的態度,就是寢室的一個哥們他禁用了那兩個虛擬網卡還能在虛擬機中上網,當時我很驚奇啊,爲什麼呢?我一直以來認爲只有啓用那兩個虛擬網卡,虛擬機才能上網,看來不是的啊,上網查資料吧,大概知道了,其實這裏面大有學問的,自己有好多都不知道啊,到現在還是有些疑問,就是我現在爲什麼禁用了那兩個虛擬網卡,Ubuntu設置爲DHCP就能上網了,當然了,VMware的網絡連接模式應該用NAT的啊。

下面是網上的一些資料,裏面有一些本人的PS,現在主要來談談這NAT模式:

在NAT網絡中,會用到VMware Network Adapter VMnet8虛擬網卡,主機上的VMware Network Adapter VMnet8虛擬網卡被直接連接到VMnet8虛擬交換機上與虛擬網卡進行通信。

20091005235538274.jpg

我認爲上面的這個圖沒有畫出VMnet8虛擬網卡,

再來兩個圖,便於理解:

image

image

 

使用NAT模式的虛擬系統和宿主計算機的關係:宿主計算機就相當於是開啓了DHCP功能的路由器,虛擬系統就是內網中的一臺實際的機器,通過路由器的DHCP服務獲得網絡參數。

虛擬系統可以訪問宿主計算機所在網絡的其他計算機(反之不行),可以與宿主計算機互訪。

 

VMware Network Adapter VMnet8虛擬網卡的作用僅限於和VMnet8網段進行通信,它不給VMnet8網段提供路由功能,所以虛擬機虛擬一個NAT服務器,使虛擬網卡可以連接到Internet。在這種情況下,我們就可以使用端口映射功能,讓訪問主機80端口的請求映射到虛擬機的80端口上。

VMware Network Adepter VMnet8虛擬網卡的IP地址是在安裝VMware時由系統指定生成的,我們不要修改這個數值,否則會使主機和虛擬機無法通信。

 

20091005235540832.jpg

NAT虛擬網卡IP地址

 

 

20091005235540617.jpg

物理網卡IP地址

 

虛擬出來的網段和NAT模式虛擬網卡的網段是一樣的,都爲192.168.111.X,包括NAT服務器的IP地址也是這個網段。在安裝VMware之後同樣會生成一個虛擬DHCP服務器(它的IP地址也應該是在這個網段的吧,虛擬交換機連接的是同一個網段的機器),爲NAT服務器分配IP地址。

當主機和虛擬機進行通信的時候就會調用VMware Network Adapter VMnet8虛擬網卡(這個時候當然要啓用VMnet8虛擬網卡,我先還以爲主機與虛擬機通信是通過本地連接的那個網卡,囧,不然幹嘛要虛擬個網卡出來),因爲他們都在一個網段,所以通信就不成問題了。

實際上,VMware Network Adapter VMnet8虛擬網卡的作用就是爲主機和虛擬機的通信提供一個接口(我這樣理解:主機通過VMnet8虛擬網卡與虛擬機通信,在默認情況下,如果在虛擬機中ping本地連接的那個網卡IP,肯定ping不通的,因爲它們不在1個網段,它們之間也沒有路由器或具有路由功能的設備,但可以ping通VMnet8虛擬網卡的IP,因爲它們都在VMnet8這個網段中,我剛纔又有這樣1個想法:虛擬機既然能上網,那我通過互聯網爲什麼不能ping通本地連接的IP呢,剛纔查了資料:使用NAT協議,局域網內的計算機可以訪問Internet上的計算機,但Internet上的計算機無法訪問局域網內的計算機,現在虛擬機就像是VMnet8這個局域網內的計算機,但主機也是校園網這個局域網裏的計算機,所以通過Internet還是不能相互ping通,綜上所述,只能通過VMnet8虛擬網卡實現主機與虛擬機的通信,不知道我理解得正不正確),即使主機的物理網卡(我認爲這裏寫錯了,應該是VMnet8虛擬網卡,主機的物理網卡都關閉了,虛擬機怎麼可能上網呢,虛擬機不管用什麼方式上網都得通過主機的物理網卡吧,但如果關閉主機的物理網卡,VMnet8虛擬網卡啓用,主機和虛擬機之間還能互訪,主機當然不能上網了啊)被關閉,虛擬機仍然可以連接到Internet,但是主機和虛擬機之間就不能互訪了。這上面的應該就是我禁用VMntet8虛擬網卡,虛擬機還能上網的原因吧,這裏面涉及到了好多的網絡知識啊。寫這篇文章花了我將近2個多小時的時間,把裏面的一些疑問稍微理清了一些,不過還不是很晰,因爲有好多網絡知識沒有學習啊!以後還要來仔細體會體會。

看完這篇文章,你是被我弄糊塗了,還是有所收穫呢?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章