一、虚拟机NAT模式原理
NAT模式在VMware下又称VMnet8。在这种模式下,宿主机有两块网卡,一块是真实的物理网卡(即NAT device),连接Network;一块是 VMware Network Adapter VMnet8,通过虚拟交换机(VMnet8)与虚拟机网卡进行通信。
由于NAT device有网络地址转换功能,虚拟机网卡的数据通过 VMware Network Adapter VMnet8转发,进行地址转换后,由真实的物理网卡再转发到NetWork。此外,在NAT模式下,宿主计算机相当于一台开启了DHCP功能的路由器,而虚拟机则是内网中的一台真实主机,通过路由器(宿主计算机)DHCP动态获得网络参数。因此在NAT模式下,虚拟机可以访问外部网络,反之则不行[1](注:如果我们在VMware下做了NAT设置,则可以实现从外部网络访问虚拟机,下文将会讲述)。
虚拟机NAT模式原理如下图所示:
【名词解释】
VMnet8:VMware用于虚拟NAT网络下的虚拟交换机;
VMware Network Adapter VMnet8:这是宿主机用于与NAT虚拟网络进行通信的宿主机使用的虚拟网卡;
二、软件版本
虚拟机:VMware® Workstation 12 Pro
Linux:CentOS 6.5
终端模拟软件:Xshell 5
三、NAT模式下实现虚拟机对外部网络访问功能
1、在系统菜单下选择”虚拟机”->”设置”,网络适配器选择”自定义”:VMnet8(NAT模式)。
2、在系统菜单下选择”编辑”->”虚拟网络编辑器”,按下图进行配置。注意:我们这里不启动DHCP服务,因此接下来还要手动对虚拟机进行配静态IP配置。如果勾选了“使用本地DHCP服务将IP地址分配给虚拟机”后,则意味着启动DHCP服务,那么我们则无需对虚拟机进行静态IP配置,只要使其动态获取IP就好了。
这里虚拟机IP所在子网段为:192.168.81.0/24。
同时点击“NAT设置”,查看虚拟机网关地址:
3、找到宿主机的”控制面板”->”网络和 Internet”->”网络连接”,双击”VMware Network Adapter VMnet8”,进行宿主内网IP设置。
这一步的主要作用是将主机与虚拟机置于同一网段内,所以IP地址,设为虚拟机网段内的任意IP,但需要注意的是防止IP地址冲突,同时网关设置为VMWare NAT网络射中提供的IP地址。由于我的电脑中VMWare中是81网段,且192.168.81.2(虚拟机网关IP)192.168.81.0(子网IP)已被占用,所有我将我的主机改成192.168.81.1,也就是说,在192.168.81这个网段内,192.168.81.1就是我的主机(宿主机),那么我在虚拟机内安装操作系统的时候,就可以将他们的IP地址,设为: 192.168.81.3 ....... 192.168.1.255
配置Linux系统网络:
进入虚拟机操作系统:
编辑linux的网络配置文件
将红色方框内的ONBOOT的值由no改为yes 表示启用网络:将BOOTPROTO的值由dhcp改为static 表示使用静态IP
绿色方框内的值为自己添加的:第一个绿色箭头表示,当前操作系统的ip(此ip设置,前面已经由红色文字标记,不要冲突即可),第二个绿色箭头表示,网络网段,使用VMWare提供的NAT网关即可,前面也已经标注.
使用命令重启网络(重启网络不成的话,可能需要重启网卡,根据系统版本内核不同而不同,一般不需要这一步)
这个时候,你的主机和虚拟机就已经在同一网段内(我这里是81网段)了。这个时候可以ping www.baidu.com 可以ping通说明,虚拟机连上网了当然前提是宿主机可以上网,如果宿主机不联网,则可以ping 宿主机的ip(注意是是虚拟机网段的ip,我这里是81网段)
四、NAT模式下实现外部网络对虚拟机(ssh)访问功能
主机与虚拟机置于同一网段内,主机也不能直接ssh连接虚拟机,还需要做一步端口映射
1、在VMware系统菜单下选择“编辑:,进入虚拟网络编辑器,选择“NAT设置”。
进入“NAT设置”后,在“端口转发”下选择“添加”按钮,添加一条NAT映射规则。其中主机端口即宿主物理网卡的端口,可以任意填写端口号,因为我们这里要实现ssh远程登录功能,这里填写“22”。虚拟机IP地址即192.168.81.3(我刚安装的linux,设置的ip是192.168.81.3),虚拟机端口必须是22(因为外部设备最终是要通过22端口来访问虚拟机的ssh服务的)。
添加完成后,端口转发里面就会增加一条记录:
如果,你在vmware中建立了多个虚拟机,有几个需要在主机ssh连接,那么就需要配几条端口转发。
配置号之后就可以使用ssh连接虚拟机了,但有几条需要注意的是,1.虚拟机是否安装了openssh,2。查看虚拟机的防火墙是否开启。
如果没有上述两种情况就可以ssh虚拟机了!