|
VMware虚拟机做端口映射,虚拟说白了就是机端让外网能直接戳进你宿主机里的那个虚拟系统。这事儿我折腾过好几回,口映最坑的射外一次是给客户部署测试环境,虚拟机里跑着MySQL,网访问宿主机防火墙全开、虚拟路由器DMZ也设了,机端结果外网死活连不上——最后发现是口映VMware的NAT模式默认只监听本机回环地址,压根没把端口转发到物理网卡上。射外 先讲核心操作。网访问虚拟机的虚拟网络模式得是NAT,这点别搞错,机端桥接模式直接占物理IP,口映用不着映射。射外打开VMware的网访问“虚拟网络编辑器”,选中VMnet8(NAT对应的虚拟网卡),点“NAT设置”,底下有个“端口转发”按钮。点进去添加一条规则:主机端口填你想暴露出去的端口,比如3306;类型选TCP;虚拟机IP地址填你虚拟机的内网IP(可以用ipconfig查,通常是192.168.x.x);虚拟机端口填服务实际监听的端口。保存后,外网访问你宿主机IP的3306,数据就会钻进虚拟机的3306。 但光配VMware不够,Windows宿主的防火墙十有八九会拦。我那次就是卡在这——防火墙默认阻止入站,你得在“高级安全Windows Defender防火墙”里新建一条入站规则,允许TCP端口3306通过。别偷懒直接关防火墙,那样等于把整台机器裸奔,我见过有人图省事关了防火墙,结果虚拟机被挖矿程序扫了,CPU直接飙到100%,最后重装系统才清净。 路由器那边也得看一眼。如果你的宿主机在家庭或办公室局域网内,外网访问还得经过路由器。去路由器后台做“端口转发”或“虚拟服务器”设置,把公网端口映射到宿主机的局域网IP上。比如路由器WAN口IP是1.2.3.4,你设一条规则:外部端口3306转发到192.168.1.100(宿主机IP)的3306端口。这样外网访问1.2.3.4:3306,数据流是——公网→路由器→宿主机防火墙→VMware NAT→虚拟机。 有个细节容易忽略:虚拟机IP必须是静态的。DHCP分配的IP一旦变了,映射就失效。我习惯在虚拟机里手动设固定IP,或者干脆在VMware的DHCP设置里给MAC地址绑定一个固定租约。否则你重启虚拟机后,可能发现外网又断了,排查半天发现IP从.105变成了.110,那种感觉像是被自己蠢哭。 再补充个实战技巧。如果你只是临时测试,可以用SSH隧道代替端口映射,比如在宿主机上跑ssh -L 3306:虚拟机IP:3306 user@宿主机IP,但那是给有Linux基础的人玩的。Windows用户还是老老实实点鼠标配置吧。 最后说句实在话——端口映射暴露到公网有风险,虚拟机里的服务最好加个强密码或者限制来源IP。我见过有人把Redis端口映射出去,结果没设密码,被扫到后直接写入crontab挖矿。别图方便,安全措施做足了再开放,不然虚拟机就是肉鸡孵化器。配完记得用telnet 你的公网IP 端口测一下通不通,不通就逐层排查:先看虚拟机本地能不能访问,再看宿主机能不能访问虚拟机,最后看外网能不能到宿主机——三层递进,问题出在哪一层一目了然。 |