layout: "post"
title: "橋接、NAT、Host-only上網(wǎng)方式的區(qū)別"
category: "問題總結(jié)"
tags: 問題總結(jié)
date: "2016-07-25 13:53"
經(jīng)常使用虛擬機的小伙伴們都遇到過網(wǎng)絡鏈接過程中的各種問題,仔細查看設置會發(fā)現(xiàn)有:橋接、NAT、Host-only 等設置,vmware 等虛擬機后還會自動生成vmnet1和vmnet8,初學者可能會一頭霧水,為啥只有兩個?不是三種模式嗎?另外每個模式代表什么?他們又有什么區(qū)別?無論是 vmware 還是 vitualbox 這些內(nèi)容都大同小異,而 vmware 中看起來可能會更加直觀些,這邊以windows下的安裝使用為例,進行深入的詳解。

本文會盡可能詳細地總結(jié)和羅列出三者的含義和區(qū)別,以及虛擬機中該如何配置他們更加合適。
橋接:
簡而言之橋接就是指:就是通過一臺設備(可能不止一個)把幾個網(wǎng)絡串起來形成的連接。這邊主要介紹虛擬機所采用的橋接方式,虛擬出來的操作系統(tǒng)就像是局域網(wǎng)中的一獨立的主機,它可以通過路由器網(wǎng)線訪問網(wǎng)內(nèi)任何一臺機器。不過虛擬機需要占用你同一個網(wǎng)段的一個 IP 地址,當且僅當虛擬機和實體機在同一個網(wǎng)段,兩者才可以進行通信,如:虛擬機 IP:192.168.1.101,實體機 IP:192.168.1.100。
在橋接模式下,例如在 windows 下使用 vmware 時,明顯看到會生成多個虛擬網(wǎng)卡出來,但卻沒有一個網(wǎng)卡是屬于橋接的,原因是虛擬機采用橋接方式時,是不需要虛擬網(wǎng)卡的,這時候虛擬機操作系統(tǒng)和實體機操作系統(tǒng)同時使用真實網(wǎng)卡工作,然后真是網(wǎng)卡發(fā)送數(shù)據(jù)出去,而如果虛擬機發(fā)送數(shù)據(jù)給真實機,則數(shù)據(jù)流向是:虛擬機系統(tǒng)->真實網(wǎng)卡->路由器->真實網(wǎng)卡->實體機系統(tǒng),不難看出同一個數(shù)據(jù)經(jīng)過網(wǎng)卡在路由器上面繞了一圈又回到了網(wǎng)卡。
通過上述內(nèi)容發(fā)現(xiàn),橋接必須經(jīng)過真實網(wǎng)卡和路由器,因此當你的電腦沒有鏈接有線網(wǎng)或者無線網(wǎng)的話,你的實體機是無法和虛擬機進行交互的,即便看起來兩者很近也不行。而選用橋接還是 NAT 等方式是在虛擬機軟件中選定,進入虛擬的操作系統(tǒng)后,所有的設置和真實電腦沒有本質(zhì)區(qū)別,如果路由器允許自動分配 IP 地址,則操作系統(tǒng)設置為自動獲取 IP 即可,如果不能自動分配,也可以在操作系統(tǒng)中手動分配 IP 地址。另外值得注意的是某些公司路由器綁定了電腦 mac 地址和 IP 地址,這時候虛擬機中的橋接也相當于一個真實電腦,也需要完成相關(guān)的綁定才可以訪問網(wǎng)絡。*
可以看出:如果你想利用VMware在局域網(wǎng)內(nèi)新建一個虛擬服務器,為局域網(wǎng)用戶提供網(wǎng)絡服務,就應該選擇橋接模式。下面舉個栗子:
例如大學宿舍里有一個路由器,宿舍里四個人連接這個路由器,路由器的 wanip 就不理會了,這個 ip 是動態(tài)獲取的,而一般lanip默認是192.168.1.1,子網(wǎng)掩碼是255.255.255.0。而其他四個人是自動獲取ip,假設四個人的 ip 是:
A: 192.168.1.100/255.255.255.0, B: 192.168.1.101/255.255.255.0, C: 192.168.1.102/255.255.255.0, D: 192.168.1.103/255.255.255.0
那么虛擬機的 ip 可以設置的 ip 地址是 192.168.1.2-192.168.1.99, 192.168.1.104-192.168.1.254 (網(wǎng)絡地址 0 和 1 的除外,再除去 ABCD 四個人的 ip 地址)
那么虛擬機的 ip 地址可以設置為 192.168.1.98/255.255.255.0,設置了這個 ip 地址,ABCD 這四個人就可以通過 192.168.1.98 訪問虛擬機了,如果虛擬機需要上外網(wǎng),那么還需要配置虛擬機的路由地址,就是 192.168.1.1 了,這樣,虛擬機就可以上外網(wǎng)了,但是,上網(wǎng)我們一般是通過域名去訪問外網(wǎng)的,所以我們還需要為虛擬機配置一個 dns 服務器,我們可以簡單點,把 dns 服務器地址配置為 google 的 dns 服務器 :8.8.8.8,到此,虛擬機就可以上網(wǎng)了。
綜上所述,同一個數(shù)據(jù)經(jīng)過網(wǎng)卡在路由器上面繞了一圈又回到了網(wǎng)卡。而虛擬機的橋接也只在其他電腦需要訪問你電腦的虛擬機時,或者你虛擬機需要訪問其他外部設備時才有相關(guān)需求*,一般情況還是建議配置成操作方便使用簡單的 NAT 方式。

NAT:
NAT模式實際是虛擬了一個網(wǎng)卡出來,虛擬機直接使用鏈接這個虛擬網(wǎng)卡,每次訪問和交互通過這個虛擬網(wǎng)卡交換數(shù)據(jù)。虛擬機發(fā)送數(shù)據(jù)給實體機:虛擬機系統(tǒng)->虛擬網(wǎng)卡->實體機系統(tǒng)(可以發(fā)現(xiàn)是不經(jīng)過真實網(wǎng)卡的流程簡單很多);虛擬機訪問外網(wǎng):虛擬機系統(tǒng)->虛擬網(wǎng)卡->實體機系統(tǒng)->真實網(wǎng)卡->路由器->外網(wǎng)* 。*
虛擬機借助 NAT (網(wǎng)絡地址轉(zhuǎn)換)功能,通過宿主機器所在的網(wǎng)絡來訪問公網(wǎng)。 NAT 模式中,虛擬機的網(wǎng)卡和真實網(wǎng)卡的網(wǎng)絡,不需要在同一個網(wǎng)絡,虛擬機的網(wǎng)卡的網(wǎng)段可以理解:路由器所在網(wǎng)段之下的一個子網(wǎng)段。
采用NAT模式最大的優(yōu)勢是虛擬系統(tǒng)接入互聯(lián)網(wǎng)非常簡單,你不需要進行任何其他的配置,只需要宿主機器能訪問互聯(lián)網(wǎng)即可。如果你想利用VMWare安裝一個新的虛擬系統(tǒng),在虛擬系統(tǒng)中不用進行任何手工配置就能直接訪問互聯(lián)網(wǎng),建議你采用NAT模式。而缺點是: NAT 模式下,虛擬機僅僅可以同路由器下網(wǎng)段中的一臺真實機通訊,而這臺真實機就是安裝虛擬機的這臺電腦,之所以可以通訊是因為這臺電腦本身充當了虛擬機的路由器,相當于路由器的 192.168.1.1 這個地址,而你在 vmware 下的網(wǎng)卡管理中是可以看到這個地址的。這邊再補充一點:采用NAT模式時,虛擬機和實體機交互并不是直接進行的,首先虛擬機操作系統(tǒng)訪問虛擬網(wǎng)卡 VMnet8 (地址如: 192.188.1.33),然后這個虛擬網(wǎng)卡會再將數(shù)據(jù)提交給真實機操作系統(tǒng)VMware Network Adapter VMnet8(地址: 192.188.1.1)而地址(192.188.1.33 和 192.188.1.1)實際都是由虛擬機軟件 vmware 提供的,具體的交互細節(jié)不作研究。

Host-only:
在 Host-Only 模式下,虛擬網(wǎng)絡是一個全封閉的網(wǎng)絡,它唯一能夠訪問的就是主機。其實 Host-Only 網(wǎng)絡和 NAT 網(wǎng)絡很相似,不同的地方就是 Host-Only 網(wǎng)絡沒有 NAT 服務,所以虛擬網(wǎng)絡不能連接到 Internet 。主機和虛擬機之間的通信是通過 VMware Network Adepter VMnet1 虛擬網(wǎng)卡來實現(xiàn)的。
Host-Only 的宗旨就是建立一個與外界隔絕的內(nèi)部網(wǎng)絡,來提高內(nèi)網(wǎng)的安全性。這個功能或許對普通用戶來說沒有多大意義,但大型服務商會常常利用這個功能。如果你想為 VMnet1 網(wǎng)段提供路由功能,那就需要使用RRAS,而不能使用 XP 或 2000 的 ICS,因為 ICS 會把內(nèi)網(wǎng)的 IP 地址改為 192.168.0.1,但虛擬機是不會給 VMnet1 虛擬網(wǎng)卡分配這個地址的,那么主機和虛擬機之間就不能通信了。

windows下的vmware:
VMware 的幾個虛擬設備:
- VMnet0:這是 VMware 用于虛擬橋接網(wǎng)絡下的虛擬交換機,一般是不可見的,因為橋接一般直接使用真實網(wǎng)卡;
- VMnet1:這是 VMware 用于虛擬Host-Only網(wǎng)絡下的虛擬交換機;
- VMnet8:這是 VMware 用于虛擬NAT網(wǎng)絡下的虛擬交換機;
- VMware Network Adapter VMnet1:這是 Host 用于與 Host-Only 虛擬網(wǎng)絡進行通信的虛擬網(wǎng)卡;
- VMware Network Adapter VMnet8:這是 Host 用于與 NAT 虛擬網(wǎng)絡進行通信的虛擬網(wǎng)卡;

事實上,根據(jù)上面對三種常見模式的詳細,基本上應該已經(jīng)有了清晰的認識,知道如何配置虛擬機網(wǎng)卡了。
配置建議:
在普通常規(guī)虛擬機聯(lián)網(wǎng)時,采用 NAT 的模式,一般 virtualbox 中默認就為該模式,也默認就幫設置好了網(wǎng)絡,用戶直接安裝完虛擬機操作系統(tǒng)即可上網(wǎng),如果不行通過安裝相關(guān)擴展工具即可。如果不小心將如上圖所示的Virtual Network Editor 中的內(nèi)容或者第一張圖所示中的網(wǎng)卡配置改亂了,則可以點擊上圖左下角的 Restore Default 恢復網(wǎng)絡設置。
需要特殊使用情況,虛擬機需要連接其他實體設備時,采用橋接模式,需要注意的是:如果路由器無法自動分配IP地址,橋接需要配置 IP 地址,先查看網(wǎng)關(guān)地址,然后找一個無法 ping 通的 IP 地址,設置成靜態(tài) IP。
Host-only 模式暫時沒有怎么用過,一般而言就是為了只讓虛擬機和實體機鏈接使用,也為了屏蔽外部網(wǎng)絡的干擾,創(chuàng)建一個純凈的內(nèi)部實驗環(huán)境,如果你需要在虛擬機中構(gòu)建一臺服務器,實驗搭建服務環(huán)境的話,可以先設置成這種模式。
To be continued...
參考鏈接:
http://blog.csdn.net/bloghome/article/details/4487497
http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646007.html
http://os.51cto.com/art/201003/186914.htm
http://www.cnblogs.com/rainman/archive/2013/05/06/3063925.html