深刻理解VMware虚拟机网络通讯原理

   VMware虚拟机的上网方式有三种:NAT、桥接、仅主机模式,本篇介绍桥接模式和NAT模式。bash

 


 

1.实验环境服务器

 

    博主的实验环境以下:网络

  • 宿主机操做系统:Windows 7编辑器

  • VMware Workstation版本:12.5.2 build-4638234oop

  • 虚拟机操做系统:CentOS 6.5测试

  • 虚拟机操做系统上网方式:桥接模式ui

    说明:为了后面的测试正常,请务必将宿主机和虚拟机的操做系统的防火墙功能关闭。实际上虚拟机使用哪种操做系统是没有影响的,为了方便测试验证,应该使用本身熟悉的操做系统。spa

    对于上网模式的设置,能够参考下面的图示:操作系统

wKioL1i1B9zwckGAAAGQazeNKVc539.png


 

2.桥接模式的理论知识rest

 

     当把咱们的虚拟机的上网方式设置为桥接模式时,虚拟机、宿主机、各网卡之间的链接关系可用下图来表示:

wKioL1i1CKzDDcCKAAFNypk6tUM774.jpg    事实上,上面的原理图能够等价为下面的网络拓扑图:

wKiom1i1CPyjfB8eAADtU7dC2hA756.jpg    所以,当虚拟机使用桥接模式上网时,你能够把这台虚拟机彻底看做是宿主机所在局域中的一台真实主机,它使用的网络地址信息跟宿主机的彻底同样。

    不过须要注意的是,因为咱们的宿主机中可能会有多张网卡,所以,在VMware Workstation中,咱们是能够设定咱们的虚拟机桥接到哪一张网卡上的:

wKioL1i1CfnzU21PAAG4MX81vJI873.png    如图,博主是把当前的虚拟机桥接到宿主机的无线网卡上,所以虚拟机的网络地址信息应该跟宿主机在无线网卡上所获取到的网络地址信息是在同一个网段的,即它们位于同一个局域网中。

 


 

3.在实践中深刻理解桥接模式的网络原理

 

    先在咱们的宿主机上查看网络地址信息:

wKioL1i1CqnhFqbcAACFIp3sVy0010.png

    能够看到宿主机所在局域网的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=eth0
HWADDR=00:0c:29:3b:4c:6d
TYPE=Ethernet
UUID=5ae16ecc-0149-487e-8dab-51afc75bd265
ONBOOT= yes
NM_CONTROLLED= yes
#BOOTPROTO=static
BOOTPROTO=dhcp
IPADDR=10.0.0.101
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=202.96.128.86
DNS2=202.96.128.166
IPV6INIT=no
USERCTL=no
PEERDNS= yes

    重启CentOS的网络服务:

1
2
3
4
5
6
7
[root@leaf ~] # /etc/init.d/network restart
Shutting 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地址:

wKiom1i1DGvTVWJKAACl0cLMD5A624.png

    或者在CentOS上ping宿主机:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@leaf ~] # ping 192.168.1.100
PING 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 ms
64 bytes from 192.168.1.100: icmp_seq=2 ttl=128  time =0.482 ms
64 bytes from 192.168.1.100: icmp_seq=3 ttl=128  time =0.508 ms
64 bytes from 192.168.1.100: icmp_seq=4 ttl=128  time =0.579 ms
64 bytes from 192.168.1.100: icmp_seq=5 ttl=128  time =0.447 ms
64 bytes from 192.168.1.100: icmp_seq=6 ttl=128  time =0.448 ms
64 bytes from 192.168.1.100: icmp_seq=7 ttl=128  time =0.552 ms
64 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  7352ms
rtt min /avg/max/mdev  = 0.220 /0 .470 /0 .579 /0 .107 ms

    由于虚拟机和宿主机都是在同一个局域网中,因此正常状况下它们确定是能够互通的,当出现通讯不正常的状况下,就须要注意看是不是由于开启了防火墙而把数据丢弃掉,因此在这些测试中,都 是建议把防火墙关掉的。

    上面的IP地址信息,对应到前面的原理图上,以下:

wKioL1i1DbTQAV4tAAFsZK1fF4A283.jpg    再将其用网络拓扑图来表示,就至关于:

wKioL1i1DeDCF_teAAEM7007D7Q761.jpg

    因此这样一来咱们就很清楚,当VMware虚拟机使用桥接模式上网时,其背后的网络通讯原理和细节的一个完整过程了。

 


 

4.下一步应该作什么

 

    上面对于虚拟机使用的是DHCP分配的地址的方式,实际用手动分配也是能够的,这时它同样能够和宿主机进行网络通讯,能够自行测试一下。

 


 

5.在实际当中的应用

 

    首先第一点是,当咱们的虚拟机出现网络问题的时候,都是须要先了解清楚网络的拓扑结构再进行网络排错的,因此上面的内容就为咱们提供了很是好的理论与实践知识。

    另外,若是能够在理解这些网络知识的前提下再去搭建各类服务,作各类测试,可让咱们作到成竹在胸的一种状态,而再也不是“雾里看花,水中望月”了,相应在这样的不断尝试中,咱们的综合操做能力必定会变得更强。

    不过仍然须要说明的是,上面的图解仍然只是作参考,其中的不少细节都是须要了解VMware Workstation的网络虚拟化的细节才能够真正了解清楚的,但无论怎么说,上面的内容对于在网络通讯上面,仍是能够给咱们带来很大的帮助的,真心但愿能够帮到你们!

    因为能力和时间有限,若是发现有问题的,望及时指出。



1.实验环境

 

    博主的实验环境以下:

  • 宿主机操做系统:Windows 7

  • VMware Workstation版本:12.5.2 build-4638234

  • 虚拟机操做系统:Windows 7

  • 虚拟机操做系统上网方式:NAT模式

    说明:为了后面的测试正常,请务必将宿主机和虚拟机的操做系统的防火墙功能关闭。

    对于上网模式的设置,能够参考下面的图示:

Windows 7的上网方式设置:

wKiom1ivpqiBcyE0AAZI7Km5pRc381.png

 


 

2.NAT模式的理论知识

 

    当把咱们的虚拟机的上网方式设置为NAT模式时,虚拟机、宿主机、各网卡之间的链接关系可用下图来表示:

wKioL1ivpTXhXCLbAALG94naNuk950.jpg    其实在看了上面的图解分析以后,总体的网络拓扑是很是清晰的,在接下来的步骤,就经过咱们的实验环境来进行验证。

 


 

3.在实践中深刻理解NAT模式的网络原理

 

    在实验环境中咱们能够看到,咱们是经过NAT方式来进行上网的,当设置好了NAT方式后,在虚拟机操做系统Windows 7中,查看IP地址信息:

wKiom1ivqNjx0VbrAAcv6FSEnUs387.png

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

在宿主机上ping虚拟机:

wKioL1ivqkvCIRjbAACfMVAYhts241.png

    那么为何能够正常通讯呢?以及虚拟机中的IP地址网段为何是10.0.0.0/24的呢?

 

    当使用NAT模式上网时,VMware会自动为咱们的虚拟机操做系统进行IP地址的分配,此时在虚拟机内部有一个DHCP服务器,而其所分配的地址网段是能够在VMware中进行设置的。

    在VMware Workstation中选择“编辑”—“虚拟网络编辑器”,便可以进行设置:

wKiom1ivq8PD6khDAAcxD3MUL7o784.png    从上面能够看到,这里咱们设置的网段就是10.0.0.0/24了。

    另外咱们的宿主机是经过VMnet8这块虚拟网卡来与虚拟机操做系统进行通讯的,你能够在宿主机的网络设置中看到这块虚拟网卡:

wKioL1ivrFXDsM-_AAF20Qgljds267.png

    由于这块虚拟网卡是用来与虚拟机操做系统进行通讯的,因此它所被分配的地址也是10.0.0.0/24的,能够查看一下其地址:

wKioL1ivrN2zvqZbAAH_hZwqsZw171.png    因此实际上,当咱们的宿主机与虚拟机操做系统进行通讯时,是使用10.0.0.1这个源地址向虚拟机的操做系统发送数据包的。咱们能够在虚拟机操做系统上去ping这个地址,会发现通讯是没有问题的:

wKioL1ivrt6A1LysAAciH66DjMo017.png

    那么对于虚拟机操做系统的网关10.0.0.2这个地址是在哪里的呢?

    其实就是对应咱们上面网络图解中的NAT服务器的虚拟网卡地址,只是这个地址咱们只能经过在虚拟机操做系统中看到。

    因此将上面咱们所说起的地址以及网段信息,对应到咱们的图解中去,以下:

wKioL1ivr5PzQxNdAAMSz2NTYXk509.jpg    这样一来,总体的网络信息就很是清晰了,另外上面能够看到,宿主机物理网卡的地址为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的宿主机上是能够看到这些服务的:

wKioL1ivsX7yR7JRAAJqsckaXuk569.png    这样一来也能够与咱们的理论进行了必定的对应。

 


 

4.下一步应该作什么

 

    能够考虑有多台虚拟机的状况,正如上面所说的,能够尝试测试它们的连通性,对上面的图解(尤为重要)进行验证,可是前提是你必定要具有必定的网络知识。

 


 

5.在实际当中的应用

 

    首先第一点是,当咱们的虚拟机出现网络问题的时候,都是须要先了解清楚网络的拓扑结构再进行网络排错的,因此上面的内容就为咱们提供了很是好的理论与实践知识。

    另外,若是能够在理解这些网络知识的前提下再去搭建各类服务,作各类测试,可让咱们作到成竹在胸的一种状态,而再也不是“雾里看花,水中望月”了,相应在这样的不断尝试中,咱们的综合操做能力必定会变得更强。

    不过仍然须要说明的是,上面的图解仍然只是作参考,其中的不少细节都是须要了解VMware Workstation的网络虚拟化的细节才能够真正了解清楚的,但无论怎么说,上面的内容对于在网络通讯上面,仍是能够给咱们带来很大的帮助的,真心但愿能够帮到你们!

    因为能力和时间有限,若是发现有问题的,望及时指出。

相关文章
相关标签/搜索