深入理解NAT模式

来源:互联网 发布:阿里云服务器1m 编辑:程序博客网 时间:2024/05/16 05:32

首先说明一下我所遇到的具体情况:本人在主机上安装的是VMware Workstation,在虚拟机中安装了Ubuntu 8.10。主机上网方式是学校校园网,固定IP,绑定MAC,使用的是锐捷客户端。安装VM后生成了2个虚拟网卡,分别为VMware Virtual Ethernet Adapter for VMnet1和VMware Virtual Ethernet Adapter for VMnet8,分别简称为VMnet1虚拟网卡和VMnet8虚拟网卡算了。由于官方锐捷会检测到多网卡,会每隔一段时间自动断网,提示我禁用掉多余的网卡,无奈只好禁用掉了那两个虚拟网卡。过了一段时间,我们学习Linux,所以在虚拟机中安装了Ubuntu 8.10,想让Ubuntu也上网。了解到NAT模式配置最简单,所以就用它了,在Ubuntu中设置IP、DNS都为自动获取的方式,也就是DHCP吧,由于锐捷会检测到多网卡,会每隔一段时间自动断网,所以我很快启用那个VMnet8虚拟网卡,可以在Ubuntu中上网了,可是一会儿就断了,就是因为锐捷原因啊!因此一直以来,我总是BS锐捷,不让我用虚拟网卡,不能在虚拟机中上网。可是又发生了一个情况让我稍微改变了对锐捷的态度,就是寝室的一个哥们他禁用了那两个虚拟网卡还能在虚拟机中上网,当时我很惊奇啊,为什么呢?我一直以来认为只有启用那两个虚拟网卡,虚拟机才能上网,看来不是的啊,上网查资料吧,大概知道了,其实这里面大有学问的,自己有好多都不知道啊,到现在还是有些疑问,就是我现在为什么禁用了那两个虚拟网卡,Ubuntu设置为DHCP就能上网了,当然了,VMware的网络连接模式应该用NAT的啊。

下面是网上的一些资料,里面有一些本人的PS,现在主要来谈谈这NAT模式:

在NAT网络中,会用到VMware Network Adapter VMnet8虚拟网卡,主机上的VMware Network Adapter VMnet8虚拟网卡被直接连接到VMnet8虚拟交换机上与虚拟网卡进行通信。

我认为上面的这个图没有画出VMnet8虚拟网卡,

再来两个图,便于理解:

image

image

 

使用NAT模式的虚拟系统和宿主计算机的关系:宿主计算机就相当于是开启了DHCP功能的路由器,虚拟系统就是内网中的一台实际的机器,通过路由器的DHCP服务获得网络参数。

虚拟系统可以访问宿主计算机所在网络的其他计算机(反之不行),可以与宿主计算机互访。

 

VMware Network Adapter VMnet8虚拟网卡的作用仅限于和VMnet8网段进行通信,它不给VMnet8网段提供路由功能,所以虚拟机虚拟一个NAT服务器,使虚拟网卡可以连接到Internet。在这种情况下,我们就可以使用端口映射功能,让访问主机80端口的请求映射到虚拟机的80端口上。

VMware Network Adepter VMnet8虚拟网卡的IP地址是在安装VMware时由系统指定生成的,我们不要修改这个数值,否则会使主机和虚拟机无法通信。

 

NAT虚拟网卡IP地址

 

 

物理网卡IP地址

 

虚拟出来的网段和NAT模式虚拟网卡的网段是一样的,都为192.168.111.X,包括NAT服务器的IP地址也是这个网段。在安装VMware之后同样会生成一个虚拟DHCP服务器(它的IP地址也应该是在这个网段的吧,虚拟交换机连接的是同一个网段的机器),为NAT服务器分配IP地址。

当主机和虚拟机进行通信的时候就会调用VMware Network Adapter VMnet8虚拟网卡(这个时候当然要启用VMnet8虚拟网卡,我先还以为主机与虚拟机通信是通过本地连接的那个网卡,囧,不然干嘛要虚拟个网卡出来),因为他们都在一个网段,所以通信就不成问题了。

实际上,VMware Network Adapter VMnet8虚拟网卡的作用就是为主机和虚拟机的通信提供一个接口(我这样理解:主机通过VMnet8虚拟网卡与虚拟机通信,在默认情况下,如果在虚拟机中ping本地连接的那个网卡IP,肯定ping不通的,因为它们不在1个网段,它们之间也没有路由器或具有路由功能的设备,但可以ping通VMnet8虚拟网卡的IP,因为它们都在VMnet8这个网段中,我刚才又有这样1个想法:虚拟机既然能上网,那我通过互联网为什么不能ping通本地连接的IP呢,刚才查了资料:使用NAT协议,局域网内的计算机可以访问Internet上的计算机,但Internet上的计算机无法访问局域网内的计算机,现在虚拟机就像是VMnet8这个局域网内的计算机,但主机也是校园网这个局域网里的计算机,所以通过Internet还是不能相互ping通,综上所述,只能通过VMnet8虚拟网卡实现主机与虚拟机的通信,不知道我理解得正不正确),即使主机的物理网卡(我认为这里写错了,应该是VMnet8虚拟网卡,主机的物理网卡都关闭了,虚拟机怎么可能上网呢,虚拟机不管用什么方式上网都得通过主机的物理网卡吧,但如果关闭主机的物理网卡,VMnet8虚拟网卡启用,主机和虚拟机之间还能互访,主机当然不能上网了啊)被关闭,虚拟机仍然可以连接到Internet,但是主机和虚拟机之间就不能互访了。这上面的应该就是我禁用VMntet8虚拟网卡,虚拟机还能上网的原因吧,这里面涉及到了好多的网络知识啊。写这篇文章花了我将近2个多小时的时间,把里面的一些疑问稍微理清了一些,不过还不是很晰,因为有好多网络知识没有学习啊!以后还要来仔细体会体会。

看完这篇文章,你是被我弄糊涂了,还是有所收获呢?

原创粉丝点击