感谢wuwenweijuan的优质文章,本文在该文基础上做了注和补充
1 VM虚拟机三种网络模式详解
vmware提供了三种网络工作模式,分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。
打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT模式),我们现在看到的VMnet0表示的是用于桥接模式下的虚拟交换机;VMnet1表示的是用于仅主机模式下的虚拟交换机;VMnet8表示的是用于NAT模式下的虚拟交换机。
同时,在主机上对应的有VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两块虚拟网卡,它们分别作用于仅主机模式与NAT模式下。在“网络连接”中我们可以看到这两块虚拟网卡,如果将这两块卸载了,可以在vmware的“编辑”下的“虚拟网络编辑器”中点击“还原默认设置”,可重新将虚拟网卡还原。
看到这里肯定有疑问,为什么在真机上没有VMware Network Adapter VMnet0虚拟网卡呢?接下来,我们就一起来看一下这是为什么。
1.1 Bridged(桥接模式)
桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。其网络结构如下图所示:
接下来,我们就来实际操作,如何设置桥接模式。
首先,安装完系统之后,在开启系统之前,点击“编辑虚拟机设置”来设置网卡模式。
点击“网络适配器”,选择“桥接模式”,然后“确定”
在进入系统之前,我们先确认主机的ip地址、网关、DNS等信息。
注:如果是在Linux下的虚拟机,直接打开物理主机的网卡配置文件,把相应数据粘过来修改一下IP地址即可!
然后,进入系统编辑网卡配置文件,命令为vi /etc/sysconfig/network-scripts/ifcfg-eth0
添加内容如下:
注:BOOTPROTO为启用的地址协议,最好指定协议,桥接模式下设置静态IP指定为static
注:CentOS等Linux发行版的网卡配置文件在/etc/sysconfig/network-scripts/ifcfg-ethX,X表示哪一张网卡的配置文件,下图为ifcfg-ethX文件的配置内容解析:
而Ubuntu的网卡配置文件在/etc/netowrk/interfaces配置静态IP如下图所示:
网上的博客中,大多把DNS服务器地址写在/etc/resolv.conf或者/etc/resolvconf/resolv.conf.d/base下,其中resolv.conf文件内容如下:
所以在这个文件里写DNS服务地址是无用的,重启系统之后文件内容将被重写,而/etc/resolvconf/resolv.conf.d/下的base文件默认为空,可以插入nameserver 8.8.8.8格式的DNS地址,多个DNS地址就一行写一个,写完保存。执行sudo resolvconf –u再看/etc/resolv.conf,刚才在base文件里写的DNS地址已经出现在resolv.conf下了。
但是还有更方便的方法,在Ubuntu系统中,/etc/network/interfaces文件下可以直接配置DNS服务地址,对应的项名称为dns-nameserver,如上面interfaces配置图里那样。且根据优先级,系统先加载interfaces配置文件里的DNS服务地址,例如在interfaces中加入dns-nameserver 12.13.23.34之后重启网卡或者虚拟机,resolv.conf配置如下图,interfaces中的DNS地址被放在首位。
第一个从interfaces中加载的随便写的DNS地址显然不能正确解析域名,系统会依次往下顺延找可用的DNS到地址。
编辑完成,保存退出,然后重启虚拟机网卡,使用ping命令ping外网ip,测试能否联网。
能ping通外网ip,证明桥接模式设置成功。
注:Ubuntu下重启网卡命令为/etc/init.d/networking restart,且很多情况下重启网卡并没有用,需要重启系统才生效。另百度做了保护,一般情况下都ping不通的!看一下浏览器能不能正常上网即可。
主机与虚拟机通信正常。
注:在桥接模式下,虚拟机与物理主机是平行关系,同时与与物理主机在同一局域网同网段下的其它主机也是平行关系,可以互相连通。
这就是桥接模式的设置步骤,相信大家应该学会了如何去设置桥接模式了。桥接模式配置简单,但如果你的网络环境是ip资源很缺少或对ip管理比较严格的话,那桥接模式就不太适用了。如果真是这种情况的话,我们该如何解决呢?接下来,我们就来认识vmware的另一种网络模式:NAT模式。
1.2 NAT(地址转换模式)
如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。其网络结构如下图所示:
在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。那么我们会觉得很奇怪,为什么需要虚拟网卡VMware Network Adapter VMnet8呢?原来我们的VMware Network Adapter VMnet8虚拟网卡主要是为了实现主机与虚拟机之间的通信。在之后的设置步骤中,我们可以加以验证。
首先,设置虚拟机中NAT模式的选项,打开vmware,点击“编辑”下的“虚拟网络编辑器”,设置NAT参数及DHCP参数。
将虚拟机的网络连接模式修改成NAT模式,点击“编辑虚拟机设置”。
点击“网络适配器”,选择“NAT模式”
然后开机启动系统,编辑网卡配置文件,命令为vi /etc/sysconfig/network-scripts/ifcfg-eth0
注:Ubuntu系统的网卡配置依然是在/etc/network/interfaces
具体配置如下:
编辑完成,保存退出,然后重启虚拟机网卡,动态获取ip地址,使用ping命令ping外网ip,测试能否联网。
之前,我们说过VMware Network Adapter VMnet8虚拟网卡的作用,那我们现在就来测试一下。
将VMware Network Adapter VMnet8虚拟网卡禁用,然后,从虚拟机ping外网,看看是否能ping通
如此看来,虚拟机能联通外网,确实不是通过VMware Network Adapter VMnet8虚拟网卡,而它的作用是主机与虚拟机之间的通信,接下来,我们就用远程连接工具来测试一下。
然后,将VMware Network Adapter VMnet8启用之后,发现远程工具可以连接上虚拟机了。
那么,这就是NAT模式,利用虚拟的NAT设备以及虚拟DHCP服务器来使虚拟机连接外网,而VMware Network Adapter VMnet8虚拟网卡是用来与虚拟机通信的。
补充:NAT的Port Forwarding(端口转发)
在桥接模式下,虚拟机可以利用NAT访问外网,可以利用VMware Network Adapter VMnet8虚拟网卡与主机通信,但如果想做到像桥接模式那样让虚拟机与与物理主机在同一网段下的其它主机互相通信,则需要设置NAT的端口转发,利用物理主机这个中介,来与外部通信,具体设置如下:
在VM的虚拟网络编辑器里点击NAT设置
在Port Forwarding下点击Add
依次填写物理机映射到虚拟机的端口号、虚拟机ip地址、虚拟机的远程连接端口号、对该转发的描述即可。
完成后保存,这时用【物理主机IP:2020】就会映射到相应的虚拟机,外部主机即可通过这种映射与该虚拟机通信。
1.3 Host-Only(仅主机模式)
Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。其网络结构如下图所示:
通过上图,我们可以发现,如果要使得虚拟机能联网,我们可以将主机网卡共享给VMware Network Adapter VMnet1网卡,从而达到虚拟机联网的目的。接下来,我们就来测试一下。
首先设置“虚拟网络编辑器”,可以设置DHCP的起始范围。
设置虚拟机为Host-Only模式。
开机启动系统,然后设置网卡文件。
保存退出,然后重启网卡,利用远程工具测试能否与主机通信。
主机与虚拟机之间可以通信,现在设置虚拟机联通外网。
我们可以看到上图有一个提示,强制将VMware Network Adapter VMnet1的ip设置成192.168.137.1,那么接下来,我们就要将虚拟机的DHCP的子网和起始地址进行修改,点击“虚拟网络编辑器”
重新配置网卡,将VMware Network Adapter VMnet1虚拟网卡作为虚拟机的路由。
重启网卡,然后通过 远程工具测试能否联通外网以及与主机通信。
测试结果证明可以使得虚拟机连接外网。
以上就是关于vmware三种网络模式的工作原理及配置详解。
注:小字体
2 另:关于网关Gateway
假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。
但是你不被允许走出大门,你想与外界发生的一切联系,都必须由门口的李大爷(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家的院子里也有一个看门的王大爷(小明的网关)。但是你不知道小明家的电话号码,不过你的班主任老师有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的DNS服务器。于是你在家里拨通了门口李大爷的电话,有了下面的对话:
小不点:李大爷,我想找班主任查一下小明的电话号码行吗?
李大爷:好,你等着。(接着李大爷给你的班主任挂了一个电话,问清楚了小明的电话)问到了,他家的号码是211.99.99.99
小不点:太好了!李大爷,我想找小明,你再帮我联系一下小明吧。
李大爷:没问题。(接着李大爷向电话局发出了请求接通小明家电话的请求,最后一关当然是被转接到了小明家那个院子的王大爷那里,然后王大爷把电话给转到小明家)
就这样你和小明取得了联系
参考:gateway
转载:https://blog.csdn.net/Junhao_Lu/article/details/101920991