问题背景:客户提供的服务器操作系统配置web程序时,总是显示莫名其妙的问题,发现是高版本操作系统的.net库已经对低版本.net库进行了大范围修订,导致在安全检测上、软件代码规范上更加苛刻,最终导致部署不成功。于是想到了在服务器操作系统中安装虚拟机,利用虚拟机来部署该web程序。在虚拟机部署成功后,需要配置NAT端口转发,目的是用户可以通过服务器(宿主机)的公网地址来访问虚拟机里的web应用程序。
原本通过服务器(宿主机)的公网地址来访问虚拟机里的web应用程序的方式很简单,配置NAT地址转发(端口映射),问题就解决。实际过程中,利用手边的Vmware wokestation 12 pro进行部署,发现端口转发配置后,在宿主机使用宿主机公网IP地址偶尔能正常访问一下虚拟机内的web程序,又是关防火墙、又是重启服务、又是确认端口是否占用(更换端口),均未解决。
休息一晚上后,突然想起是不是虚拟机软件版本的问题?第二天,更换了Vmware wokestation 16 pro,配置完端口转发后,web应用程序访问正常。
在问题解决过程中,相继搜索了“解决VMware NAT service服务无法启动问题”、"外网访问workstation 虚拟机"、“vmware worksation nat服务中包含端口映射就会启动失败的问题”,发现很多人写的很复杂,于是将这个过程写一下。
配置的关键就两条:NAT配置、端口转发。
1、首先确认虚拟机内的网站http://localhost:8080可以正常访问。
2、主机能够ping到虚拟机
虚拟机的IP地址是:
检查宿主机能够正确Ping到虚拟机。
如果ping不通,则确认把宿主机和虚拟机里的防火墙关闭掉。如下图:
防火墙关闭后,就能够Ping通了。
3、虚拟机的网络配置成NAT方式,
选择创建的虚拟机,确定其网络适配器是使用NAT方式。
4、配置虚拟机的端口转发
选择“编辑”-虚拟网络编辑器,选择VMnet 8 NAT 模式,内部虚拟机地址要和这个NAT模式的网络段一致,比如本虚拟机的地址为192.168.88.128。
选择下面框的NAT设置:
在“端口转发”栏目,点击“添加”
,其中主机端口就是宿主机的端口,一般就是80,但防止80端口被占用,可以改成其他端口。HTTP网站使用TCP协议。
将宿主机的端口转发到虚拟机的端口,所以虚拟机IP地址为:192.168.88.128(你虚拟机里的Ip地址),虚拟机端口就是虚拟机里网站的端口:如8080。
配置完成后,如下图:
点击确定后,虚拟机会重新卸载和安装网卡等虚拟设备,安装完成后,端口转发就完成了。
这个时候,通过网络访问宿主机的ip地址+端口号,就可以访问虚拟机里的网站了。
如:我本地宿主机的IP地址为192.168.3.18。
访问我们上面创建的端口转发:
注意:
如果配置了端口转发,访问的时候第一次能访问,很快就无法访问,可以查看服务中VMware NAT Service是否启动,该服务是提供NAT端口转发的核心服务,该服务经常会被意外停止,如果没有启动,就手动启动一下,如果一访问转发端口就停止,就说明该服务异常,需要更换新的软件版本。
目前发现Vmware wokestation 12 pro存在以上问题,更换目前发现Vmware wokestation 16 pro以后,端口转发正常,没有出现如上服务无法启动的问题。