本文參考《Vmware虛擬機三種網絡模式詳解》、《網絡原理,以及對VMware Workstation虛擬網絡VMnet0、VMnet1、VMnet8的圖解》
一.VMware的網絡的網絡環境
1-1 VMware的網絡環境
VMware提供了3種網絡工作模式:Bridged(橋接模式),NAT(網絡地址裝換模式),Host-Only(僅主機模式)。
VMware管理了3個特殊的虛擬交換機:VMnet0(用於橋接模式),VMnet8(用於NAT模式),VMnet1(用於僅主機模式)。打開VMware虛擬機,在頂部選項欄-[編輯]-[虛擬網絡編輯器]-[更改設置]后即可看到3個虛擬交換機,如圖1-1.1所示。
圖1-1.1 在虛擬網絡編輯器中查看3個特殊的虛擬交換機
1-2 VMware安裝后宿主機的網絡環境
VMware安裝完成后會在宿主機上生成兩塊虛擬網卡,這兩塊網卡與虛擬機管理的兩個虛擬交換機相連。如圖1-2.1所示。
圖 1-2.1 宿主機的網絡環境
如果將宿主機上的這兩塊虛擬網卡卸載了,可通過VMware的頂部選項欄-[編輯]-[虛擬網絡編輯器]-[還原默認設置],重新將虛擬網卡還原。
二.三種網絡模式
2-1 Bridged(橋接模式)
原理
橋接模式:把宿主機的網卡通過虛擬網橋與VMware管理的虛擬交換機VMnet0相連,所有網絡連接設置為橋接模式(如圖2-1.1所示)的虛擬機都會連接到虛擬交換機VMnet0上,網絡結構如圖2-1.2所示。這樣所有的虛擬機與宿主機以及與宿主機在同一個局域網下的主機之間都是可以相互訪問的,其網絡結構可邏輯理解為如圖2-1.3所示的網絡結構。在橋接模式下,虛擬機IP地址需要與宿主機在同一個網段,如果需要聯網,則虛擬機的網關和DNS也需要與宿主機被橋接的網卡一致。
圖2-1.1 網絡連接設置為橋接模式
圖2-1.2 橋接模式網絡結構圖
圖 2-1.3 橋接模式邏輯網絡結構圖
注意:
- 虛擬網橋會轉發宿主機網卡接收到的廣播和組播信息,以及目標為虛擬交換機網段的單播。所以,與虛擬交換機機連接的虛擬網卡(如: eth0、ens33等〉能接收到路由器發出的DHCP信息及路由更新。
- 橋接模式是通過虛擬網橋將主機上的網卡與虛擬交換機VMnet0連接在一起,虛擬機上的虛擬網卡都連接在虛擬交換機VMnet0上,所以橋接模式下,虛擬機IP必須與宿主機的IP在同一網段且子網掩碼、網關與DNS也要與宿主機網卡的一致。
- 如圖2-1.3中所示,橋接模式的虛擬機會占用宿主機所在局域網內的IP地址資源。同時,如果宿主機所在局域網中做了IP地址管理,比如IP地址需要公司網絡部門審批通過后才能使用,那么虛擬機的IP地址也會受此管理規則的約束。
實際操作
1.進入VMware主頁,選中安裝完成的虛擬機。如圖2-1.4所示。
圖2-1.4 VMware主頁
2.在開啟系統之前,點擊[編輯虛擬機設置]來設置虛擬機網卡的網絡連接模式。如圖2-1.5所示。
圖2-1.5 虛擬機設置頁
3.點擊[網絡適配器],選擇[網絡連接]為[橋接模式(B)]。如圖2-1.6所示。
圖2-1.6 設置網絡連接為橋接模式
4.在開啟虛擬機之前,先確認宿主機聯網的網卡的IP地址、子網掩碼、默認網關和DNS服務器信息。同時按住Win+R鍵-輸入cmd-回車-輸入ipconfig /all-回車。如圖2-1.7所示。
圖2-1.7 宿主機的網絡信息
5.開啟虛擬機進入系統,查看虛擬機的網卡接口的配置文件。命令為:
cd /etc/sysconfig/network-scripts
ls
如圖2-1.8所示。
圖2-1.8 查看網卡接口配置文件
網卡接口的配置文件是以ifcfg開頭的,ifcfg-lo為回環接口,不必關注。只需關注ifcfg-ens33。
6.編輯ifcfg-ens33文件,命令為:
vi ifcfg-ens33
初始內容如圖2-1.9所示。
圖2-1.9 ifcfg-ens33文件初始內容
7.修改ifcfg-ens33文件。如圖2-1.10所示。
圖2-1.10 ifcfg-ens33文件修改后的內容
注意:
- IPADDR的值需要與宿主機的IPv4地址在同一個網段內,且要避免IPADDR設置的IP已經被其他主機使用。
8.編輯完成后,保存退出,重啟虛擬機網卡,重啟命令為
systemctl restart network.service
9.使用ping命令分ping宿主機的IP 192.168.1.6,測試虛擬機和宿主機是否聯通,如圖2-1.11所示;ping www.baidu.con,測試虛擬機和公網是否聯通,如圖2-1.12所示。
圖2-1.11 測試虛擬機和宿主機是否聯通
圖2-1.12 測試虛擬機和公網是否聯通
由圖2-1.11和2-1.12可知,虛擬機通宿主機以及公網。
問題總結
1.虛擬機ping不通宿主機。
①可能是宿主機防火牆的入站規則中未啟用虛擬機監控(回顯請求-ICMPv4-In)規則。通過[Windows安全中心]-[防火牆和網絡保護]-[高級設置]-[入站規則] 找到虛擬機監控(回顯請求-ICMPv4-In)規則,點擊[右鍵]-[啟用規則]。如圖2-1.13所示。
圖2-1.13 Windows防火牆入站規則
2.ping不通公網。
①檢查[VMware主頁]-[頂部標簽欄]-[編輯]-[虛擬網絡編輯器]中的虛擬交換機VMnet0橋接到的宿主機網卡是否為宿主機聯網的網卡。比如我現在宿主機聯網的網卡為Intel(R) Wireless-AC 9560 160MHz(如圖2-1.14所示),那么虛擬交換機VMnet0就應該橋接到這個網卡上(或者為[自動])。如圖2-1.15所示。如果選中的是[自動],那么在排查問題的過程中可將其修改為具體的網卡。
圖2-1.14 宿主機聯網的網卡
圖2-1.15 虛擬交換機橋接到宿主機聯網的網卡上
②使用橋接模式虛擬出來的虛擬機,像是宿主機所在局域網內的一台真實機器,它會占用真實的IP資源,並受此局域網絡的管理規則約束。虛擬機ping不通公網可能就是因為虛擬機的IP可能需要通過你公司網絡管理員的審批或者使用相關的網絡訪問軟件后才可使用。
3.其他問題
可參考《設置虛擬機橋接模式以及解決橋接模式上不了網以及ping不通主機的問題》。
2-2 NAT(地址轉換模式)
原理
如2-1中所提到的:使用橋接模式虛擬出來的虛擬機,像是宿主機所在局域網內的一台真實機器,它會占用真實的IP資源,並受此局域網絡的管理規則約束。如果你網絡中的IP資源緊缺,或者是使用新的IP需要通過層層審批以滿足管理規則,那么NAT模式就是更合適的選擇,這種模式可以避免這些問題帶來的困擾。
NAT模式借助虛擬NAT設備和虛擬DHCP服務器,使得虛擬機可以聯網,其網絡結構如圖2-2.1所示。
圖2-2.1 地址轉換模式網絡結構圖
注意:
- 在虛擬機連接Vmnet8虛擬交換機時,虛擬機會將虛擬NAT設備及虛擬DHCP服務器連接到Vmnet8虛擬交換機上。依靠虛擬的NAT設備及虛擬的DHCP設備,如果你的宿主機已經聯網了,那么你的虛擬機也就可以聯網。
- 同時宿主機上的虛擬網卡VMwareNetwork Adapter VMnet8也會連接到Vmnet8虛擬交換機上,用於宿主機和虛擬機的通信。
- 虛擬網卡VMwareNetwork Adapter VMnet8只是作為主機與虛擬機通信的接口,虛擬機並不是依靠虛擬網卡VMware Network Adapter VMnet8來聯網的。如果禁用掉宿主機上的虛擬網卡VMwareNetwork Adapter VMnet8,虛擬機仍然是可以上網的,只是宿主無法再訪問VMnet8網段下的虛擬機了(但虛擬機仍然可以訪問宿主機)。
- 使用NAT模式,就是讓虛擬機借助NAT(網絡地址轉換功能),通過宿主機所在的網絡來訪問互聯網。
- 也就是說,使用NAT模式可以實現虛擬機訪問互聯網;
- 但由於NAT服務協議對外部網絡隱蔽內部網絡,因此虛擬機可以通過NAT服務器訪問宿主機所在局域網內的其他真實主機,但這些真實主機且不能反過來訪問虛擬機。即宿主機、宿主機所在局域網內的其他主機以及互聯網中的其他主機都不能通過NAT服務器訪問虛擬機(宿主機可以通過虛擬網卡VMware Network Adapter VMnet8來訪問虛擬機),但是虛擬機能通過NAT服務器訪問宿主機、宿主機所在局域網的其他主機以及互聯網中的其他主機。
- 使用NAT模式最大的優勢是接入互聯網十分簡單,你不需要進行其他的配置(BOOTPROTO選擇為dhcp的情況下),只要宿主機能訪問互聯網,虛擬機就能訪問互聯網。
實際操作
1.進入VMware主頁,選中安裝完成的虛擬機。如圖2-2.2所示。
圖2-2.2 VMware主頁
2.查看NAT模式下的NAT設置和DHCP設置的參數。如圖2-2.3所示。
圖2-2.3 NAT設置和DHCP設置
3.在開啟系統之前,點擊[編輯虛擬機設置]來設置虛擬機網卡的網絡連接模式,選擇網絡連接模式為[NAT模式(N)]。如圖2-2.4所示。
圖2-2.4 虛擬機設置頁
4.開啟虛擬機進入系統,查看虛擬機的網卡接口的配置文件。命令為:
cd /etc/sysconfig/network-scripts
ls
如圖2-2.5所示。
圖2-2.5 查看網卡接口配置文件
網卡接口的配置文件是以ifcfg開頭的,ifcfg-lo為回環接口,不必關注。只需關注ifcfg-ens33。
5.編輯ifcfg-ens33文件,命令為:
vi ifcfg-ens33
初始內容如圖2-2.6所示。
圖2-2.6 ifcfg-ens33文件初始內容
6.修改ifcfg-ens33文件。如圖2-2.7所示。
圖2-2.7 ifcfg-ens33的設置
注意:
- 將BOOTPROTO即系統啟動地址協議設置為static,那么每次虛擬機關機再啟動后IP地址都不會改變,但是需要設置黃色框中的內容。
- IPADDR需要在圖2-2.3所示DHCP設置中的起始IP地址和結束IP地址的范圍內(192.168.113.128-192.168.113.254);
- NETMASK需要與圖2-2.3所示DHCP設置中的子網掩碼(255.255.255.0)一致;
- GATEWAY需要圖2-2.3所示NAT設置中的網關(192.168.113.2)一致;
- DNS1用於指定域名解析服務器的地址,一般使用國內的免費DNS服務器114.114.114.114;
- 如果將BOOTPROTO設置為dhcp,虛擬機就會被動態的分配IP地址,每次虛擬機關機再啟動后IP地址可能會變化,但是就不需要設置黃色框中的內容。如圖2-2.8所示。
圖2-2.8 BOOTPROTO設置為dhcp
7.編輯完成后,保存退出,重啟虛擬機網卡,重啟命令為
systemctl restart network.service
8.使用ping命令分ping宿主機的IP 192.168.1.6,測試虛擬機和宿主機是否聯通,如圖2-2.9所示;ping www.baidu.con,測試虛擬機和公網是否聯通,如圖2-2.10所示。
圖2-2.9 測試虛擬機和宿主機是否聯通
圖2-2.10 測試虛擬機和公網是否聯通
由圖2-2.9和圖2-2.10可知,NAT模式下的虛擬機可以聯通宿主機和公網的。
9.在圖2-2.1下注意的第3點中提到過宿主機的虛擬網卡VMware Network Adapter VMnet8僅僅是用來宿主機和虛擬機通信的,如果禁用宿主機的這張虛擬網卡,不影響虛擬機訪問公網、虛擬機訪問宿主機,只影響宿主機訪問虛擬機。網絡邏輯圖如圖2-2.11所示。
圖2-2.11 禁用宿主機虛擬網卡前后的網絡邏輯圖
在未禁用宿主機虛擬網卡VMware Network Adapter VMnet8時:
- 虛擬機ping公網以及宿主機都能通
- 宿主機ping虛擬機能ping通
在禁用宿主機虛擬網卡VMware Network Adapter VMnet8后:
- 虛擬機ping公網以及宿主機都能通
- 宿主機ping虛擬機ping不通
2-3 Host-Only(僅主機模式)
原理
Host-Only模式其實就是NAT模式去掉了虛擬NAT設備,使虛擬機無法與公網進行通行,而宿主機使用虛擬網卡VMware Network Adapter VMnet1連接VMnet1虛擬交換機來與虛擬機進行通信。Host-Only模式將虛擬機與公網隔開,使虛擬機成為一個獨立的系統,只能與宿主機相互通訊。其網絡結構如圖2-3.1所示。
圖2-3.1 僅主機模式網絡結構圖
注意:
- Host-Only模式通過宿主機的虛擬網卡VMwareNetwork Adapter VMnet1來連接虛擬交換機VMnet1,從而達到宿主機與虛擬機通信的目的。但是虛擬機不能主動與宿主機通信(是單向連通的)。
- 如果想要在Host-Only模式下聯網,可以將能聯網的主機網卡共享給VMware Network Adapter VMnet1,這樣就可以實現虛擬機聯網。
- 果僅僅想讓虛擬機訪問互聯網,這種方式不推薦,也沒有必要。NAT方式是最簡單的,基本上不需要做什么操作,就能自動連接上。
實際操作
1.進入VMware主頁,選中安裝完成的虛擬機。如圖2-3.2所示。
圖2-3.2 VMware主頁
2.查看Host-Only模式下的DHCP設置的參數。如圖2-3.3所示。
3.在開啟系統之前,點擊[編輯虛擬機設置]來設置虛擬機網卡的網絡連接模式,選擇網絡連接模式為[僅主機模式(H)]。如圖2-3.4所示。
圖2-3.4 虛擬機設置頁
4.開啟虛擬機進入系統,查看虛擬機的網卡接口的配置文件。命令為:
cd /etc/sysconfig/network-scripts
ls
如圖2-3.5所示。
圖2-3.5 查看網卡接口配置文件
網卡接口的配置文件是以ifcfg開頭的,ifcfg-lo為回環接口,不必關注。只需關注ifcfg-ens33。
5.編輯ifcfg-ens33文件,命令為:
vi ifcfg-ens33
初始內容如圖2-3.6所示。
圖2-3.6 ifcfg-ens33文件初始內容
6.修改ifcfg-ens33文件。如圖2-3.7所示。
圖2-3.7 ifcfg-ens33的設置
注意:
- 將BOOTPROTO即系統啟動地址協議設置為static,那么每次虛擬機關機再啟動后IP地址都不會改變,但是需要設置黃色框中的內容。
- IPADDR需要在圖2-2.3所示DHCP設置中的起始IP地址和結束IP地址的范圍內(192.168.203.128-192.168.203.254);
- NETMASK需要與圖2-2.3所示DHCP設置中的子網掩碼(255.255.255.0)一致;
- GATEWAY和DNS1無需設置(不連接公網)。
- 如果將BOOTPROTO設置為dhcp,虛擬機就會被動態的分配IP地址,每次虛擬機關機再啟動后IP地址可能會變化。如圖2-3.8所示。
圖2-3.8 BOOTPROTO設置為dhcp
7.編輯完成后,保存退出,重啟虛擬機網卡,重啟命令為
systemctl restart network.service
8.使用ping命令ping宿主機的IP 192.168.1.6,測試虛擬機和宿主機是否聯通,如圖2-3.9所示;ping www.baidu.con,測試虛擬機和公網是否聯通,如圖2-3.10所示。
圖2-3.9 測試虛擬機和宿主機是否聯通
圖2-3.10 測試虛擬機和宿主機是否聯通
由圖2-3.9和圖2-3.10可知,Host-Only模式下的虛擬機不可以聯通宿主機和公網。
9.在宿主機上使用ping命令ping虛擬機IP 192.168.203.129,測試宿主機是否能聯通虛擬機。如圖2-3.11所示。
圖2-3.11 宿主機ping虛擬機
由圖2-3.11可知宿主機能聯通虛擬機。
擴展
通過共享網卡使虛擬機可以連通公網。
1.共享宿主機上連入公網的網卡。如圖2-3.12所示。
圖2-3.12 共享宿主機連網的網卡
2.設置了共享網卡后,宿主機的虛擬網卡VMware Network Adapter VMnet1的IP將會被設置為一個固定的IP(192.168.137.1)。如圖2-3.13所示。
圖2-3.13 宿主機虛擬網卡VMware Network Adapter VMnet1的IP
3.共享宿主機的網卡就相當於讓宿主機的網卡充當虛擬機網絡的網關和虛擬NAT設備,所以需要修改VMware管理的虛擬交換機VMnet1的DHCP的子網和起始、結束IP地址。如圖2-3.14所示。
圖2-3.14 修改虛擬交換機VMnet1的DHCP設置
修改之前的DHCP設置如圖2-3.15所示。
圖2-3.15 修改前的DHCP設置
4.重新配置虛擬機的網卡ifcfg-ens33。如圖2-3.16所示。
圖2-3.16 ifcfg-ens33的設置
注意:
- 將BOOTPROTO即系統啟動地址協議設置為static,那么每次虛擬機關機再啟動后IP地址都不會改變,但是需要設置黃色框中的內容。
- IPADDR需要在圖2-3.14所示DHCP設置中的起始IP地址和結束IP地址的范圍內(192.168.137.128-192.168.137.254);
- NETMASK需要與圖2-3.14所示DHCP設置中的子網掩碼(255.255.255.0)一致;
- GATEWAY和DNS1都設置為宿主機虛擬網卡VMware Network Adapter VMnet1的IP(192.168.137.1)
- 如果將BOOTPROTO設置為dhcp,虛擬機就會被動態的分配IP地址,每次虛擬機關機再啟動后IP地址可能會變化(但是這種方式未能嘗試成功,ping不通百度和宿主機)。如圖2-3.17所示。
圖2-3.17 BOOTPROTO設置為dhcp
5.編輯完成后,保存退出,重啟虛擬機網卡,重啟命令為
systemctl restart network.service
6.使用ping命令ping宿主機的IP 192.168.1.6,測試虛擬機和宿主機是否聯通,如圖2-3.9所示;ping www.baidu.con,測試虛擬機和公網是否聯通,如圖2-3.10所示。
圖2-3.18 測試虛擬機和宿主機是否聯通
圖2-3.19 測試虛擬機和宿主機是否聯通
由圖2-3.18和圖2-3.19可知,Host-Only模式下共享了網卡后的虛擬機可以聯通宿主機和公網。