
自己主机上安装了VMware,VMware上安装了虚拟机,怎么让虚拟机向外提供Web服务或指定端口应用。本文记录如何让我的主机和外网用户可以访问VM虚拟机上的服务。从用户访问角度包括个2个方面:让外网访问本地主机,让外网访问本地VM虚拟机;从主机管理角度操作上包括2个方面:有公网IP时路由器转发设置提供公网访问,无公网IP时使用nat123网络端口映射工具让外网访问内网。
本例以让外网访问本机windows自带的远程桌面连接为例,远程桌面端口3389是默认的。
控制面板->系统和安全->Windows Defender 防火墙->高级设置->入站规则

查看是否有开放3389端口,如果没有,点击右上角的新建规则进行添加。
计算机->右键属性->远程设置,勾选允许 远程连接到此计算机。

以水星路由为示例,在路由管理后台的高级设置->高级用户->虚拟服务器,添加一条内映射到内网主机的地址,将内部主机远程端口映射到外网访问。

在其他网络别的电脑上远程连接测试下,输入路由WAN的外网ip如:139.189.8.5远程桌面连接界面上使用测试。
路由映射外网访问的前提是路由WAN是公网IP,如果不是,则参考下面的nat123网络端口映射工具或类似内网穿透技术应用软件等方法。
使用nat123客户端添加映射设置,选择映射类型为非网站,内网地址端口对应本地远程桌面主机IP和端口(如本机的127.0.0.1和3389),外网域名端口默认生成或修改使用自己域名或自定义二级字符域名方便记住使用。

确认保存即生效,可在对应客户端界面上多了个远程桌面的包含内外网地址信息的映射记录图标。
win电脑运行mstsc显示远程桌面界面,输入对应的nat123设置好的外网域名和外网端口号,进行远程桌面连接访问即可。

本例在vm虚拟机上安装了个web做测试,分别从本地和外网测试访问虚拟机web地址。
思路方案分析:路由器的虚拟服务器只能添加本网段的ip,所以如果本机物理机与VM是不同网段的,需要将vm虚拟机的应用映射成本机IP端口能访问才行,然后再通过路由器将本机IP端口映射到外网,这样就可以通过外访问vm虚拟机了。如果是无公网Ip的,则借助nat123端口映射外网访问,通过自定义域名端口绑定VM内网IP端口。
在VM的虚拟机对应设置->网络适配器->NAT模式。

编辑->虚拟网络编辑器->VMnet8->NAT设置->添加端口

然后对应设置好本机Ip端口与VM虚拟机的IP端口对应关系即可。如果本机物理机与VM机本身是同网段的互通的,则不需要再做VM映射关系。
如我本机ip:3000访问测试,成功即表示本机与VM机对应的web端口是互通的了。小白注意以本地实际端口号来访问测试哈。
本地防火墙开放端口,确保其他主机电脑能访问来。控制面板->系统和安全->Windows Defender 防火墙->高级设置->入站规则,对应添加目标端口号。
在自己路由管理后台,找到虚拟服务器,转发规则添加,对应将本地内网Ip端口与路由外网IP对应。

外网ip:端口号浏览器访问看是否正常显示自己web服务。个别路由不支持从内部访问它的公网IP,不方便外网的建议用手机4G网访问测试。
经过以上配置,已经可以通过外网ip来访问虚拟机上的web了,但是如果本地带宽本身没有公网IP,会让路由转发失效,所以面对无公网IP环境,我们可以配置nat123映射外网访问的方法,见下面步骤操作。
在本机物理上,或VM机里面,或所在局域网另台互通主机上,使用nat123客户端添加个映射设置,选择合适的映射类型(如web访问的,按需选择80、或443、或非80网站),内网地址端口填写对应目标访问的内网Ip端口,外网域名默认生成随机二级域名(可修改二级字符,或修改使用自己的域名)。

通过映射后外网域名端口地址即可以VM上的ip端口地址访问了。
映射类型80http、443https、非80网站区别:
80http:适合本地web使用http网站标准协议,且需要外网固定80端口访问的;
443https:适合本地站点应用使用了https协议 ,且需要外网固定443端口访问的;
非80网站:不管是什么网站协议,外网访问对应带上外网端口号;
1、路由器wan地址和外网ip不一致
这是遇到最大的坑,困扰了很久,由于我用的是普通宽带,通过拨号,分配给我的是他们内网的ip,因此我用外网ip访问始终不行,不管我设置防火墙还是配置路由器,都不行。
解决方案:打电话给网络商,经过多轮沟通终于同意将我的ip改为外网ip。如果本地确认不能获取公网IP的,只能用nat123端口映射外网访问了。
验证问题:打开路由器找到常用设置->上网设置->ip地址,查看该ip是否和外网ip一致。注意路由WAN地址与百度网查出来的IP具体对应是否一样的,只有一样时才表示本地是公网Ip。
2、注意防火墙
开放的端口需要在防火墙入站规则中添加端口。
3、附VM机网络连接模式说明
VMware有三种网络连接模式:桥接(bridged)、NAT和Host-only。这里需要选择NAT模式,因为虚拟机没有单独的IP可供使用,只能共享主机IP。
桥接模式,由VMware虚拟出的虚拟交换机Vmnet0相当于一个网桥,虚拟机与主机的位置的对等的,处在同一个网段,拥有与主机相同IP段的独立地址,比如主机IP为192.168.1.100,虚拟机为192.168.1.101,是两个相同地位的节点。可以看成主机与虚拟机用Hub相连接。
NAT模式,虚拟机可以与主机通信,亦可以访问internet服务,但是外面主机不能访问虚拟机。可看成主机是路由交换机(关口),虚拟机在网络内部,所有与虚拟机的通信均要经过关口。
Host-only模式,建立一个全封闭的网络环境,虚拟机唯一能访问的就是主机。与NAT很相似,但与NAT的不同之处在于,虚拟机不能访问外网/外部网络,主机和虚拟机之间可以通信。可看成主机与虚拟机是用双绞线相连的,它们可分别处于独立的网段。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。