董志强 2019-06-28
本文基于macOS Sierra 10.12.6系统为例
虚拟机应用VMware Fusion 10.1.3
系统Linux redhat
镜像rhel-server-7.4-x86_64-dvd.iso
vmware下虚拟机有三种网络适配器连接模式:Nat,仅主机,桥接,以下转发一些搜集自网络的概念
VMware 桥接模式
VMware桥接模式,也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络(例如图中所示的局域网和Internet,下同)。简而言之,这就好像在上图所示的局域网中添加了一台新的、独立的计算机一样。因此,虚拟机也会占用局域网中的一个IP地址,并且可以和其他终端进行相互访问。桥接模式网络连接支持有线和无线主机网络适配器。如果你想把虚拟机当做一台完全独立的计算机看待,并且允许它和其他终端一样的进行网络通信,那么桥接模式通常是虚拟机访问网络的最简单途径。
VMware NAT模式
NAT,是Network Address Translation的缩写,意即网络地址转换。NAT模式也是VMware创建虚拟机的默认网络连接模式。使用NAT模式网络连接时,VMware会在主机上建立单独的专用网络,用以在主机和虚拟机之间相互通信。虚拟机向外部网络发送的请求数据"包裹",都会交由NAT网络适配器加上"特殊标记"并以主机的名义转发出去,外部网络返回的响应数据"包裹",也是先由主机接收,然后交由NAT网络适配器根据"特殊标记"进行识别并转发给对应的虚拟机,因此,虚拟机在外部网络中不必具有自己的IP地址。从外部网络来看,虚拟机和主机在共享一个IP地址,默认情况下,外部网络终端也无法访问到虚拟机。
此外,在一台主机上只允许有一个NAT模式的虚拟网络。因此,同一台主机上的多个采用NAT模式网络连接的虚拟机也是可以相互访问的。
前面我们已经提到,默认情况下,外部网络无法访问到虚拟机,不过我们也可以通过手动修改NAT设置实现端口转发功能,将外部网络发送到主机指定端口的数据转发到指定的虚拟机上。比如,我们在虚拟机的80端口上"建立"了一个站点,只要我们设置端口转发,将主机88端口上的数据转发给虚拟机的80端口,就可以让外部网络通过主机的88端口访问到虚拟机80端口上的站点。
VMware 仅主机模式
仅主机模式,是一种比NAT模式更加封闭的的网络连接模式,它将创建完全包含在主机中的专用网络。仅主机模式的虚拟网络适配器仅对主机可见,并在虚拟机和主机系统之间提供网络连接。相对于NAT模式而言,仅主机模式不具备NAT功能,因此在默认情况下,使用仅主机模式网络连接的虚拟机无法连接到Internet(在主机上安装合适的路由或代理软件,或者在Windows系统的主机上使用Internet连接共享功能,仍然可以让虚拟机连接到Internet或其他网络)。
在同一台主机上可以创建多个仅主机模式的虚拟网络,如果多个虚拟机处于同一个仅主机模式网络中,那么它们之间是可以相互通信的;如果它们处于不同的仅主机模式网络,则默认情况下无法进行相互通信(可通过在它们之间设置路由器来实现相互通信)。
1、先确认好你的主机ip地址为多少,mac查看ip有两种方法:
一是在终端输入:ifconfig,如下图1红线划出的inet;brodcast指的是广播范围的IP地址,根据子网掩码决定了主机的IP的地址段范围是:172.20.10.1-172.20.10.15(文末会给出相关的说明)
二是打开你的设置--网络--高级--TCP/IP,如下图2;
2、打开VMware Fusion,启动你的虚拟机,并在“设置--网络适配器中”选择“桥接模式网络连接”,如下图,划线的IP就是主机IP
3、手动给虚拟机linux配置一个IP,这个IP必须要与主机在同一个网段(本例为172.20.10网段)中,否则无法桥接通连,配置方法如下:
执行ifconfig,查看虚拟机linux的网卡,如下图,我的是ens33
cd /etc/sysconfig/network-scripts
sudo vi ifcfg-ens33 (此处ens33具体看个人网卡,不要改ifcfg-lo)
在ifcfg-ens33文件尾配置IP以及路由网关等内容,有则修改,无则新增:
IPADDR=172.20.10.11 (记住虚拟机IP要在172.20.10.1-172.20.10.15的地址段范围中选择)
GATEWAY=172.20.10.1
NETMASK=255.255.255.240
DNS1=172.20.10.1 (首选DNS)
4、此时,主机和虚拟机就可以ping通了,而且都可以连接到外部网络
NAT模式后续补充ing...
此前一直没有注意到我的本机子网掩码是255.255.255.240,所以折腾了好长一阵子,把虚拟机的ip设置成172.20.10.101,导致一直没有办法去正常ping通,所以认为有必要在文末做一下说明。
我的主机所连接的wifi网络分配到的网段是172.20.10.1,子网掩码255.255.255.240,子网掩码转化为二进制形式即为:11111111.11111111.11111111.11110000,也就是说该子网掩码定义了该网段的前28位是网络号,后4位是主机号(host ID),所以172.20.10.1这个网段只能分配15台主机(即该网段只有15个ip)。
广播地址(Broadcast Address)是专门用于同时向网络中所有工作站进行发送的一个地址。在使用TCP/IP 协议的网络中,主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。而由上图1得知主机的广播地址broadcast为172.20.10.15(对应二进制形式为10101100.00010100.00001010.00001111),全1的hostID与广播地址按位与并结合子网掩码所定义的15个主机IP范围推测,可知主机的有效ip地址为:172.20.10.1-172.20.10.15,因此虚拟机IP地址要设在该IP段范围内才能与主机通联。
附上本文参考的文章链接:
https://baike.baidu.com/item/...
https://baike.baidu.com/item/...
https://www.cnblogs.com/xuan5...
http://www.linode.im/909.html