Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 系統工具 >> 詳解VMware虛擬機的組網模式

詳解VMware虛擬機的組網模式

日期:2017/2/8 9:03:22      編輯:系統工具

大家都知道VMWare的三種組網模式,分別為Bridge,NAT,Host-Only。VMWare認為使用這三種組網模式則可以搭建出任意的網絡拓撲了,事實上也正是如此。如果你對網絡很精通,那麼應該很容易就可以理解VMWare的網絡配置模式,然而即使如此,VMWare由於只是一個虛擬機,沒有形象的拓撲展示出來。本文簡單的給出三種組網模式的形象化的圖示,另外,VMWare的幫助文檔中也有相當詳細的介紹VMNet的章節。
 

一.Bridge模式

顧名思義,Bridge模式就是橋接模式,虛擬機裡面的網卡直接橋接在宿主機的某一個物理網卡所在的網段。示意圖如下:

詳解VMware虛擬機的組網模式

這種方式很多時候是為像我這樣的懶人提供的,然而在非DHCP的情況下,很容易造成IP地址沖突,因此如果不是非要將虛擬機配置在一個網段,就不要用Bridge模式。Bridge模式的組網拓撲如下:

詳解VMware虛擬機的組網模式
 

二.NAT模式

所謂NAT模式就是將虛擬機網卡隱藏在了一個NAT設備之後,在外界看來,只能看到宿主機物理網卡,甚至連NAT設備都看不到,NAT設備默默地轉換著虛擬機內部出來的連接的源地址,如下圖所示:

詳解VMware虛擬機的組網模式

然而,有一個細節,那就是上圖中的菱形到底是如何實現的,VMWare到底如何在不同的宿主操作系統下模擬出一個一致的NAT設備的。為了實現的一致和簡單,VMWare使用了用戶態連接代理的方式來實現NAT設備,因此NAT設備其實就是一個用戶態進程,它來執行地址轉換,如下圖所示:

詳解VMware虛擬機的組網模式

所謂的地址轉換其實不是真正的IP網絡意義上的地址轉換,而是一個代理。虛擬機裡面發起的連接在宿主機的NAT進程中完全被截獲,然後NAT進程偷梁換柱代替虛擬機裡面的連接單獨向目的地發起一個連接,隨後和目的地通信,然後將數據轉發給虛擬機。我們可以通過一個簡單試驗來說明這一點:
 

1.只允許本地的TCP syn包發出去,禁止任何回包

iptables -A OUTPUT -p tcp --tcp-flags SYN SYN -j ACCEPT
iptables -A OUTPUT -j DROP
iptables -A INPUT -j DROP

 

2.在虛擬機中建立到百度的tcp連接

telnet 74.125.128.94 80
 

3.查看宿主機上的用戶態nat進程的文件描述符

lsof -p 271 -n
...
vmnet-nat 271 root    7u    IPv4 0xffffff8017b62160       0t0    TCP 192.168.1.101:49256->74.125.128.94:http (ESTABLISHED)
...

 

4.結論

虛擬機裡面只能發出syn包,然而宿主機裡面到74.125.128.94的連接已經建立,說明nat進程是一個用戶態的連接代理。同樣的結論還可以通過tcp抓包來觀測到,怎麼觀測呢?很簡單,查看序列號即可,虛擬機裡面抓取的數據包的序列號和確認號和宿主機上抓取的“同樣連接”(實際上不是一個連接,而是被代理的)的序列號以及確認號不是一致的,而我們知道,常規的NAT只修改五元素,不會修改序列號。
        可見,由於NAT是一個代理,NAT模式可能會造成目的主機TCP連接統計的不准確,比如上述實驗中,虛擬機明明沒有連接成功目的地,然而宿主機的NAT進程卻已經建立了一個TCP連接。使用NAT模式,就需要知道它所帶來的一切副作用。最後NAT模式的組網拓撲如下:

詳解VMware虛擬機的組網模式
 

三.Host-Only模式

這種模式其實是最純粹的了,虛擬機和宿主機的一塊網卡(虛擬網卡)直連,僅此而已,如下圖所示:

詳解VMware虛擬機的組網模式

可是Host-Only模式的虛擬機如何連接外網呢?虛擬機可以將宿主機作為一台路由器來看待,如此一來,剩下的問題就是如何來配置這個路由器了。以下步驟是必須的:
 

1.在虛擬機中將默認網關指向宿主機的虛擬網卡vmnet1,如果你不嫌麻煩也可以配置主機路由

2.打開宿主機的路由功能

Linux:sysctl -w net.ipv4.ip_forward=1
Mac OS:sysctl -w net.inet.ip.forwarding=1
Windows:打開Tcpip的IPEnableRouter注冊表項

 

3.以下方法選其一

3.1.配置SNAT。Linux使用iptables配置出口網卡的SNAT;Mac OS使用natd以及ipfw配置;Windows使用網卡的“共享”上網來配置

3.2.配置純路由,主要是解決回程路由的問題,然而很多外網服務器的路由我們沒法配置,因此這個只適用於實驗環境

Host-Only模式的組網拓撲如下所示:

詳解VMware虛擬機的組網模式
 

四.vnnetX的含義

VMWare在宿主機中虛擬了幾塊網卡,這些網卡實際上都是一些帶有多個port的二層或者三層網絡設備。本文到此為止沒有談到DHCP,實際上每種組網模式都可以有一台DHCP服務器插入這些虛擬設備的port,為虛擬機裡面的網卡分配IP地址。
        默認情況下,VMWare提供了vmnet0/1/8三塊虛擬網卡,vmnet0外界看不到,它實際上是一個純鏈路層Bridge,該Bridge設備沒有任何三層功能,該Bridge的其中一個port就是宿主機的某一塊物理網卡。vmnet1專門給Host-Only來使用,vmnet8專門用於NAT,這兩個虛擬網卡都有三層的功能,都可以配置IP地址,實實在在是一塊宿主機上可見的網卡啊,除此之外,這兩塊網卡同時也是Bridge設備,只是該Brdige並沒有橋接任何宿主機上的任何物理網卡。

Copyright © Windows教程網 All Rights Reserved