一、虚拟机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.59.0/24。
3、找到宿主机的”控制面板”->”网络和 Internet”->”网络连接”,双击”VMware Network Adapter VMnet8”,进行宿主内网IP设置。
4、进入虚拟机系统,配置虚拟机的IP及相关参数,按如下指令所示进行修改:
[root@localhost 桌面]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.59.1 #注意虚拟机的IP与宿主机的内网IP不能相同
NETMASK=255.255.255.0
GATEWAY=192.168.59.2
DNS1=222.246.129.80
DNS2=114.114.114.114
[root@localhost 桌面]# ifconfig eth0 on #启动eth0网卡
[root@localhost 桌面]# service network restart #重启启动网络服务,使得刚才的配置生效
至此NAT模式下实现虚拟机对外部网络访问功能已经配置完成。
四、NAT模式下实现外部网络对虚拟机(ssh)访问功能
1、在VMware系统菜单下选择“编辑:,进入虚拟网络编辑器,选择“NAT设置”。
进入“NAT设置”后,在“端口转发”下选择“添加”按钮,添加一条NAT映射规则。其中主机端口即宿主物理网卡的端口,可以任意填写端口号,因为我们这里要实现ssh远程登录功能,这里填写“22”。虚拟机IP地址即192.168.59.1,虚拟机端口必须是22(因为外部设备最终是要通过22端口来访问虚拟机的ssh服务的)。
2、使用Xshell来访问虚拟机时,可以输入:ssh 宿主机的IP 主机端口号,如下图所示。
至此,NAT模式下实现外部网络对虚拟机(ssh)访问功能已实现。
五、参考资料
【1】https://www.slyar.com/blog/vmware-bridged-nat-hostonly.html 文章来源:Slyar Home