深入理解VMware虚拟机网络通信原理
VMware虚拟机的上网方式有三种:NAT、桥接、仅主机模式,本篇介绍桥接模式和NAT模式。
1.实验环境
博主的实验环境如下:
宿主机操作系统:Windows 7
VMware Workstation版本:12.5.2 build-4638234
虚拟机操作系统:CentOS 6.5
虚拟机操作系统上网方式:桥接模式
说明:为了后面的测试正常,请务必将宿主机和虚拟机的操作系统的防火墙功能关闭。实际上虚拟机使用哪一种操作系统是没有影响的,为了方便测试验证,应该使用自己熟悉的操作系统。
对于上网模式的设置,可以参考下面的图示:

2.桥接模式的理论知识
当把我们的虚拟机的上网方式设置为桥接模式时,虚拟机、宿主机、各网卡之间的连接关系可用下图来表示:
事实上,上面的原理图可以等价为下面的网络拓扑图:
因此,当虚拟机使用桥接模式上网时,你可以把这台虚拟机完全看作是宿主机所在局域中的一台真实主机,它使用的网络地址信息跟宿主机的完全一样。
不过需要注意的是,由于我们的宿主机中可能会有多张网卡,因此,在VMware Workstation中,我们是可以设定我们的虚拟机桥接到哪一张网卡上的:
如图,博主是把当前的虚拟机桥接到宿主机的无线网卡上,因此虚拟机的网络地址信息应该跟宿主机在无线网卡上所获取到的网络地址信息是在同一个网段的,即它们位于同一个局域网中。
3.在实践中深入理解桥接模式的网络原理
先在我们的宿主机上查看网络地址信息:

可以看到宿主机所在局域网的IP地址段为192.168.1.0/24,因为我的宿主机是接wifi来上网的,并且使用的是DHCP方式来获取ip地址,所以我们可以在虚拟机上设置使用dhcp的方式来获取IP地址,CentOS的dhcp配置如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[root@leaf ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0HWADDR=00:0c:29:3b:4c:6dTYPE=EthernetUUID=5ae16ecc-0149-487e-8dab-51afc75bd265ONBOOT=yesNM_CONTROLLED=yes#BOOTPROTO=staticBOOTPROTO=dhcpIPADDR=10.0.0.101NETMASK=255.255.255.0GATEWAY=10.0.0.2DNS1=202.96.128.86DNS2=202.96.128.166IPV6INIT=noUSERCTL=noPEERDNS=yes |
重启CentOS的网络服务:
|
1
2
3
4
5
6
7
|
[root@leaf ~]# /etc/init.d/network restartShutting down interface eth0: [ OK ]Shutting down loopback interface: [ OK ]Bringing up loopback interface: [ OK ]Bringing up interface eth0: Determining IP information for eth0... done.[ OK ] |
再查看IP地址信息:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@leaf ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:3B:4C:6D inet addr:192.168.1.106 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe3b:4c6d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31386 errors:0 dropped:0 overruns:0 frame:0 TX packets:15738 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:14467018 (13.7 MiB) TX bytes:1726371 (1.6 MiB)lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:239 errors:0 dropped:0 overruns:0 frame:0 TX packets:239 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:23198 (22.6 KiB) TX bytes:23198 (22.6 KiB) |
这时可以测试宿主机与虚拟机的连通情况,在宿主机上ping虚拟机的IP地址:

或者在CentOS上ping宿主机:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@leaf ~]# ping 192.168.1.100PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.64 bytes from 192.168.1.100: icmp_seq=1 ttl=128 time=0.530 ms64 bytes from 192.168.1.100: icmp_seq=2 ttl=128 time=0.482 ms64 bytes from 192.168.1.100: icmp_seq=3 ttl=128 time=0.508 ms64 bytes from 192.168.1.100: icmp_seq=4 ttl=128 time=0.579 ms64 bytes from 192.168.1.100: icmp_seq=5 ttl=128 time=0.447 ms64 bytes from 192.168.1.100: icmp_seq=6 ttl=128 time=0.448 ms64 bytes from 192.168.1.100: icmp_seq=7 ttl=128 time=0.552 ms64 bytes from 192.168.1.100: icmp_seq=8 ttl=128 time=0.220 ms^C--- 192.168.1.100 ping statistics ---8 packets transmitted, 8 received, 0% packet loss, time 7352msrtt min/avg/max/mdev = 0.220/0.470/0.579/0.107 ms |
因为虚拟机和宿主机都是在同一个局域网中,所以正常情况下它们肯定是可以互通的,当出现通信不正常的情况下,就需要注意看是否是因为开启了防火墙而把数据丢弃掉,所以在这些测试中,都 是建议把防火墙关掉的。
上面的IP地址信息,对应到前面的原理图上,如下:
再将其用网络拓扑图来表示,就相当于:

所以这样一来我们就很清楚,当VMware虚拟机使用桥接模式上网时,其背后的网络通信原理和细节的一个完整过程了。
4.下一步应该做什么
上面对于虚拟机使用的是DHCP分配的地址的方式,实际用手动分配也是可以的,这时它一样可以和宿主机进行网络通信,可以自行测试一下。
5.在实际当中的应用
首先第一点是,当我们的虚拟机出现网络问题的时候,都是需要先了解清楚网络的拓扑结构再进行网络排错的,所以上面的内容就为我们提供了非常好的理论与实践知识。
另外,如果可以在理解这些网络知识的前提下再去搭建各种服务,做各种测试,可以让我们做到胸有成竹的一种状态,而不再是“雾里看花,水中望月”了,相应在这样的不断尝试中,我们的综合操作能力一定会变得更强。
不过仍然需要说明的是,上面的图解仍然只是做参考,其中的很多细节都是需要了解VMware Workstation的网络虚拟化的细节才可以真正了解清楚的,但不管怎么说,上面的内容对于在网络通信上面,还是可以给我们带来很大的帮助的,真心希望可以帮到大家!
由于能力和时间有限,如果发现有问题的,望及时指出。
1.实验环境
博主的实验环境如下:
宿主机操作系统:Windows 7
VMware Workstation版本:12.5.2 build-4638234
虚拟机操作系统:Windows 7
虚拟机操作系统上网方式:NAT模式
说明:为了后面的测试正常,请务必将宿主机和虚拟机的操作系统的防火墙功能关闭。
对于上网模式的设置,可以参考下面的图示:
Windows 7的上网方式设置:

2.NAT模式的理论知识
当把我们的虚拟机的上网方式设置为NAT模式时,虚拟机、宿主机、各网卡之间的连接关系可用下图来表示:
其实在看了上面的图解分析之后,整体的网络拓扑是非常清晰的,在接下来的步骤,就通过我们的实验环境来进行验证。
3.在实践中深入理解NAT模式的网络原理
在实验环境中我们可以看到,我们是通过NAT方式来进行上网的,当设置好了NAT方式后,在虚拟机操作系统Windows 7中,查看IP地址信息:

而这时候,你会发现,宿主机跟虚拟机的通信是没有问题的:
在宿主机上ping虚拟机:

那么为什么可以正常通信呢?以及虚拟机中的IP地址网段为什么是10.0.0.0/24的呢?
当使用NAT模式上网时,VMware会自动为我们的虚拟机操作系统进行IP地址的分配,此时在虚拟机内部有一个DHCP服务器,而其所分配的地址网段是可以在VMware中进行设置的。
在VMware Workstation中选择“编辑”—“虚拟网络编辑器”,即可以进行设置:
从上面可以看到,这里我们设置的网段就是10.0.0.0/24了。
另外我们的宿主机是通过VMnet8这块虚拟网卡来与虚拟机操作系统进行通信的,你可以在宿主机的网络设置中看到这块虚拟网卡:

因为这块虚拟网卡是用来与虚拟机操作系统进行通信的,所以它所被分配的地址也是10.0.0.0/24的,可以查看一下其地址:
所以实际上,当我们的宿主机与虚拟机操作系统进行通信时,是使用10.0.0.1这个源地址向虚拟机的操作系统发送数据包的。我们可以在虚拟机操作系统上去ping这个地址,会发现通信是没有问题的:

那么对于虚拟机操作系统的网关10.0.0.2这个地址是在哪里的呢?
其实就是对应我们上面网络图解中的NAT服务器的虚拟网卡地址,只是这个地址我们只能通过在虚拟机操作系统中看到。
所以将上面我们所提及的地址以及网段信息,对应到我们的图解中去,如下:
这样一来,整体的网络信息就非常清晰了,另外上面可以看到,宿主机物理网卡的地址为192.168.1.100/24,这是我的笔记本所在局域网所分配给我的IP地址。
通过上面的图解分析,对于虚拟机操作系统的网络通信就可以有很清楚的认识了:
当虚拟机与宿主机进行通信时:其实就是10.0.0.1/24与10.0.0.132/24这两个地址进行通信;
当虚拟机与外网进行通信时:虚拟机先把数据发送到网关10.0.0.2/24,然后再通过NAT服务器把地址转换为192.168.1.100/24,然后再与外网进行通信;
如果把Vmnet8这块虚拟网卡禁用,还是不影响虚拟机访问互联网,只是宿主机与虚拟机的通信会受到影响,从上面的图示中不难看出。
这样一来,通信的过程就非常清晰了!此外,如果我们有很多台虚拟机,并且上网方式都为NAT模式,那么实际上就相当于这些虚拟机都位于同一个局域网当中,那么虚拟机与宿主机的通信、虚拟机访问外网与上面的过程是一样的,而虚拟机与虚拟机之间的通信则是同一个局域网中的通信,所以也没有什么问题,相应有了上面的图解,这一切都会变得清晰很多。
需要补充的是,对于虚拟机提供的DHCP服务和NAT服务,其实在我们安装VMware Workstation的宿主机上是可以看到这些服务的:
这样一来也可以与我们的理论进行了一定的对应。
4.下一步应该做什么
可以考虑有多台虚拟机的情况,正如上面所说的,可以尝试测试它们的连通性,对上面的图解(尤其重要)进行验证,但是前提是你一定要具备一定的网络知识。
5.在实际当中的应用
首先第一点是,当我们的虚拟机出现网络问题的时候,都是需要先了解清楚网络的拓扑结构再进行网络排错的,所以上面的内容就为我们提供了非常好的理论与实践知识。
另外,如果可以在理解这些网络知识的前提下再去搭建各种服务,做各种测试,可以让我们做到胸有成竹的一种状态,而不再是“雾里看花,水中望月”了,相应在这样的不断尝试中,我们的综合操作能力一定会变得更强。
不过仍然需要说明的是,上面的图解仍然只是做参考,其中的很多细节都是需要了解VMware Workstation的网络虚拟化的细节才可以真正了解清楚的,但不管怎么说,上面的内容对于在网络通信上面,还是可以给我们带来很大的帮助的,真心希望可以帮到大家!
由于能力和时间有限,如果发现有问题的,望及时指出。
深入理解VMware虚拟机网络通信原理的更多相关文章
- 理解VMware虚拟机下网络连接的三种模式(如何配置虚拟机上网)
很多朋友都用vmware来测试不同的系统,我结合自己的经验谈一下对网络设置的理解,不对的地方请指正. bridge:这种方式最简单,直接将虚拟网卡桥接到一个物理网卡上面,和linux下一个网卡 绑定两 ...
- VMware虚拟机CentOS7网络通信与无线上网
实现主机和虚拟机网络通信 1.虚拟机设置 VMware界面最上面,选择[虚拟机]->[设置]:将网络连接改为"桥接模式",如下图所示: 2.CentOS7网络设置 自动获取I ...
- VMware虚拟机三种联网方法及原理
VMware虚拟机三种联网方法及原理 一.Brigde——桥接:默认使用VMnet0 1.原理: Bridge 桥"就是一个主机,这个机器拥有两块网卡,分别处于两个局域网中,同时 ...
- VMware虚拟机的三种联网方法及原理(转)
转自:http://blog.chinaunix.net/uid-24876683-id-3593774.html 一.Brigde——桥接 :默认使用VMnet0 .原理: Bridge 桥&quo ...
- VMware虚拟机的三种联网方法及原理
VMware虚拟机的三种联网方法及原理 博客分类: 操作系统 虚拟机Vmware互联网网络应用网络协议 一.Brigde——桥接 :默认使用VMnet0 1.原理: Bridge 桥"就 ...
- 深入理解JVM虚拟机11:Java内存异常原理与实践
本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutori ...
- VMWARE虚拟机CentOS6.4系统使用主机无线网卡上网的三种方法介绍
转自:http://www.jb51.net/network/98820.html 如何真正的实现VMWARE虚拟机CentOS6.4系统使用主机无线网卡上网 环境:WIN7旗舰版,台式机,U盘无 ...
- vmware虚拟机三种网络模式详解_转
原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 由于L ...
- Vmware虚拟机三种网络模式详解
原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ...
随机推荐
- 【LOJ】#2269. 「SDOI2017」切树游戏
题解 把所有的数组一开始就FWT好然后再IFWT回去可以减小常数 从13s跑到0.7s-- 可以参照immortalCO的论文,感受一下毒瘤的动态动态DP 就是用数据结构维护线性递推的矩阵的乘积 由于 ...
- java 生成随机数字
for(int i=0;i<size1;i++){ int n = (int)(java.lang.Math.random()*99); LinkNode newLink = new LinkN ...
- 【GDKOI 2016】地图 map 类插头DP
Description 对于一个n*m的地图,每个格子有五种可能:平地,障碍物,出口,入口和神器.一个有效的地图必须满足下列条件: 1.入口,出口和神器都有且仅出现一次,并且不在同一个格子内. 2.入 ...
- 模板 倍增维护RMQ
倍增维护RMQ,nlogn预处理,O(1)查询 #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+7; s ...
- ios 从工程中删除Cocoapods
删除工程文件夹下的Podfile.Podfile.lock及Pods文件夹 2. 删除xcworkspace文件 3. 使用xcodeproj文件打开工程,删除Frameworks组下的Pods.xc ...
- 使用 IntraWeb (12) - 基本控件之 TIWGradButton、TIWImageButton
TIWGradButton.TIWImageButton 分别是有颜色梯度变化按钮和图像按钮. TIWGradButton 所在单元及继承链: IWCompGradButton.TIWGradButt ...
- ConcurrentHashMap之实现细节(转)
ConcurrentHashMap是Java 5中支持高并发.高吞吐量的线程安全HashMap实现.在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了 ...
- STM32F4 SPI with DMA
STM32F4 SPI with DMA A few people have requested code, so I thought I’d post the code showing how I’ ...
- Golang Vendor 包管理工具 glide 使用教程
Glide 是 Golang 的 Vendor 包管理器,方便你管理 vendor 和 verdor 包.类似 Java 的 Maven,PHP 的 Composer. Github:https:// ...
- 《Go学习笔记 . 雨痕》类型
一.基本类型 清晰完备的预定义基础类型,使得开发跨平台应用时无须过多考虑符合和长度差异. 类型 长度 默认值 说明 bool 1 false byte 1 0 uint8 int, uint 4, ...